阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

手机号码,快捷登录

老司机
查看: 1310|回复: 0

[转帖] 探秘无线路由高级选项 化解IP地址冲突

[复制链接]
  • TA的每日心情
    开心
    2012-3-7 10:15
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2012-1-30 11:30:04 | 显示全部楼层 |阅读模式
    这几天比较忙,看雪这里也来得少了。看见偶成为“斑竹”,恐慌之余想想,唯有努力吧。  
    看到本版关于Acpr的帖子不少,也把自己的一点心得拿出来献丑,也算祝贺“脱壳论坛”的成立。  

    本文计划分四部分:一. dump、二. IAT 修复(不添加段)、三. 程序修复、四. 跨系统问题,由于时间的关系,打算一段一段的贴出。  

    (系统 WIN2K)  

    一、dump  
       1.躲过acpr的检查  
         用od(1.1b)载入程序,Command处输入:d fs:[30]+2,回车后将Hex dump窗口中左上角的 1改成 0(这就相当于插件IsDebugPresent选  

    hide啦);在Command处又输入 bp Process32First+1,回车。F9执行程序,断点处中断后去掉断点,Alt+F9返回程序“领空”,F8两下后来到  
    006E1A4C   3B95 B3D44000    CMP EDX,DWORD PTR SS:[EBP+40D4B3]  
    这里[EBP+40D4B3]处存放的是程序的ProcessId,我们把它改成其父进程(OllDbg)的ProcessId,(用工具pupe)找到OllDbg的Id后替换该处  

    数据。  
    (当然,如果使用 Fly的修改版这一步就省了,不过知其所以不是更好吗!再加上od升级后 Fly的新版还在加工中吧。)  

       2.到伪oep  
         这步就更快了,按下Alt+M,在地址401000 (size 00CC000)处下F2,F9执行程序!  
         中断了,呵呵,在406EDC处!这里是非常熟悉的代码!!我们正处于Delphi程序的第一个call之中!!!  
    00406EDC   PUSH EBX  
    00406EDD   MOV EBX,EAX  
    00406EDF   XOR EAX,EAX  
    00406EE1   MOV DWORD PTR DS:[4F370C],EAX  
    00406EE6   PUSH 0  
    00406EE8   CALL ACProtec.00406E18  
    ........   .........  
       3.修复oep  
         Acpr 1.21主程序这次把几乎整个初始化主干代码都偷掉了,不过找回这部分代码也很容易。  
         停在406edc后看看stack窗口,返回到6ed109 ?!鼠标在stack窗口里选中这行,回车,我们看见了经Acpr处理后“  

    主干”代码:  
    006ED0E3  PUSH ESI  
    006ED0E4  MOV DWORD PTR SS:[ESP],ECX  
    006ED0E7  PUSH EAX  
    006ED0E8  MOV EAX,ACProtec.00406EDC  
    006ED0ED  MOV ECX,EAX  
    006ED0EF  POP EAX  
    006ED0F0  PUSH ECX  
    006ED0F1  POP DWORD PTR DS:[6D4F0F]                            ; ACProtec.00406EDC  
    006ED0F7  POP DWORD PTR DS:[6D4EFF]  
    006ED0FD  MOV ECX,DWORD PTR DS:[6D4EFF]  
    006ED103  CALL DWORD PTR DS:[6D4F0F]                           ; ACProtec.00406EDC  
    006ED109  MOV EAX,DWORD PTR DS:[4F258C]  
    006ED10E  MOV EAX,DWORD PTR DS:[EAX]  
    006ED110  MOV DWORD PTR DS:[6D4EFB],ACProtec.004622F8  
    006ED11A  PUSH DWORD PTR DS:[6D4EFB]  
    006ED120  POP DWORD PTR DS:[6D4F0B]  
    006ED126  CALL DWORD PTR DS:[6D4F0B]  
    006ED12C  MOV DWORD PTR DS:[6D4EF7],EDI  
    ........   ......  
    006ED1AA  MOV DWORD PTR SS:[ESP],ACProtec.00462310  
    006ED1B1  POP DWORD PTR DS:[6D4F07]  
    006ED1B7  CALL DWORD PTR DS:[6D4F07]  
    006ED1BD  PUSH DWORD PTR DS:[4F228C]                           ; ACProtec.004F45E8  
    006ED1C3  POP DWORD PTR DS:[6D4EE3]  
    006ED1C9  MOV ECX,DWORD PTR DS:[6D4EE3]  
    006ED1CF  MOV EAX,DWORD PTR DS:[4F258C]  
    006ED1D4  MOV EAX,DWORD PTR DS:[EAX]  
    006ED1D6  PUSH DWORD PTR DS:[47F7CC]                           ; ACProtec.0047F818  
    006ED1DC  POP EDX  
    006ED1DD  PUSH ACProtec.00462310  
    006ED1E2  POP DWORD PTR DS:[6D4F03]                            ; ACProtec.004CBFF8  
    006ED1E8  CALL DWORD PTR DS:[6D4F03]                           ; ACProtec.004CBFF8  
    006ED1EE  MOV EAX,DWORD PTR DS:[4F258C]  
    006ED1F3  MOV EAX,DWORD PTR DS:[EAX]  

    从这段代码容易分析出被“偷”的代码如下:  

    PUSH EBP  
    MOV EBP,ESP  
    ADD ESP,-0C  
    XOR EAX,EAX  
    PUSH EAX     ;   这条语句可改成 push 0 等  
    MOV [EBP-4],EAX  
    MOV EAX,004CBFF8  
    CALL 00406EDC  
    MOV EAX,[4F258C]  
    MOV EAX,[EAX]  
    CALL 004622F8  
    MOV ECX,[4F2354]  
    MOV EAX,[4F258C]  
    MOV EAX,[EAX]  
    MOV EDX,[47FB5C]  
    CALL 00462310  
    MOV ECX,[4F228C]  
    MOV EAX,[4F258C]  
    MOV EAX,[EAX]  
    MOV EDX,[47F7CC]  
    CALL 00462310  
    MOV EAX,[4F258C]  
    MOV EAX,[EAX]  

    在代码段尾部的空闲处键入上面的代码,再加上Acpr未偷的两条语句,Oep就算修复了。这两条语句是:  
    004CC263  CALL ACProtec.00462390  
    004CC268  CALL ACProtec.004049D8  

    现在可以 dump 了。  

        后面将看到,这段“标准”的 oep代码还要根据我们的需要加以修改。
    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表