飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1775|回复: 3

练习8(练习3的delphi版)新手重点难点解析

[复制链接]

该用户从未签到

发表于 2008-5-7 17:25:45 | 显示全部楼层 |阅读模式
参考:天草中级班第十四课
     armadillo主题贴第一页4楼千里之外的贴
     三人行的五个脱壳贴
     Arm4.xx CopyMeM2 and Debug Blocker

关键字:armadillo copymem2 debugblock

内容:
练习3和练习8都是armadillo copymem2 and debug block保护。
不同的是练习3是VC++练习8是delphi。
下面是我做练习时遇到的问题:
1、为什么bp WaitForDebugEvent bp WriteProcessMemory?
答:在waitfordebugevent数据窗口看到的是引发复制eip值的调用,当断下writeprocessmemory时,父进程开始对子进程的oep进行复制所以我们刚才看到的0047E990就是子进程的OEP。

2、打补丁脱壳的记录要点:
下断点he WaitForDebugEvent,f9运行。
取消所有断点返回到壳的领空

004BBD86   .  85C0          TEST EAX,EAX                //停在这里
004BBD88   .  0F84 64270000 JE delphip.004BE4F2
004BBD8E   .  8B85 FCFDFFFF MOV EAX,DWORD PTR SS:[EBP-204]

右键查找所有常量FFFFFFF8。找到9个,我们双击第一个来到这里向上查找

004BC30A   > \83BD CCF5FFFF>CMP DWORD PTR SS:[EBP-A34],0
004BC311   .  0F8C A8020000 JL delphip.004BC5BF
004BC317   .  8B8D CCF5FFFF MOV ECX,DWORD PTR SS:[EBP-A34]
004BC31D   .  3B0D 88644F00 CMP ECX,DWORD PTR DS:[4F6488]
004BC323   .  0F8D 96020000 JGE delphip.004BC5BF
004BC329   .  8B95 40F6FFFF MOV EDX,DWORD PTR SS:[EBP-9C0]
004BC32F   .  81E2 FF000000 AND EDX,0FF
004BC335   .  85D2          TEST EDX,EDX
004BC337   .  0F84 AD000000 JE delphip.004BC3EA
004BC33D   .  6A 00         PUSH 0
004BC33F   .  8BB5 CCF5FFFF MOV ESI,DWORD PTR SS:[EBP-A34]
004BC345   .  C1E6 04       SHL ESI,4
004BC348   .  8B85 CCF5FFFF MOV EAX,DWORD PTR SS:[EBP-A34]
004BC34E   .  25 07000080   AND EAX,80000007
004BC353   .  79 05         JNS SHORT delphip.004BC35A
004BC355   .  48            DEC EAX
004BC356   .  83C8 F8       OR EAX,FFFFFFF8                        //停在这里

找到第一个CMP的位置004BC30A,f2下断f9运行取消断点,看信息窗口。

堆栈 SS:[0012ED68]=0000007D
Jumps from 004BC14D, 004BC303
右键点击SS:[0012ED68]=0000007D修改数据为0(如果为0不用改)

好了,现在把补丁要用到的信息记录一下:
****************************************************
x=004BC30A  y=EBP-A34=12ED68  z=4F6488  w=004BC5BF
****************************************************
004BC39A   .  83C9 F8       or      ecx, FFFFFFF8   双击这个来到下面

004BC39A   .  83C9 F8       OR ECX,FFFFFFF8
004BC39D   .  41            INC ECX
004BC39E   >  33D2          XOR EDX,EDX
004BC3A0   .  8A91 0A3E4F00 MOV DL,BYTE PTR DS:[ECX+4F3E0A]
004BC3A6   .  333C95 98F34E>XOR EDI,DWORD PTR DS:[EDX*4+4EF398]
004BC3AD   .  8B85 CCF5FFFF MOV EAX,DWORD PTR SS:[EBP-A34]
004BC3B3   .  99            CDQ
004BC3B4   .  B9 1C000000   MOV ECX,1C
004BC3B9   .  F7F9          IDIV ECX
004BC3BB   .  8BCA          MOV ECX,EDX
004BC3BD   .  D3EF          SHR EDI,CL
004BC3BF   .  83E7 0F       AND EDI,0F
004BC3C2   .  03F7          ADD ESI,EDI
004BC3C4   .  8B15 6C644F00 MOV EDX,DWORD PTR DS:[4F646C]
004BC3CA   .  8D04B2        LEA EAX,DWORD PTR DS:[EDX+ESI*4]
004BC3CD   .  50            PUSH EAX
004BC3CE   .  8B8D CCF5FFFF MOV ECX,DWORD PTR SS:[EBP-A34]
004BC3D4   .  51            PUSH ECX
004BC3D5   .  E8 68210000   CALL delphip.004BE542
004BC3DA   .  83C4 0C       ADD ESP,0C
004BC3DD   .  25 FF000000   AND EAX,0FF                //这里打补丁

inc dword ptr ds:[y]   
mov dword ptr ds:[z+4],1  
jmp x  
把字母替换成记录中的值然后写入
inc dword ptr ds:[12ED68]   
mov dword ptr ds:[4F6488+4],1  
jmp 004BC30A  
处理完后来到w记录的地址004BC5BF,也可以回到刚开始的位置004BC30A,跟随下一行绿色的跳转线找到这行。
取消前面所有的断点在这里下断,运行后来到这里。打开lordpe选择第二个进程脱壳。

3、VC++和DELPHI程序IAT特征代码有为什么不同?
答:VC++十六进制代码是FF 15 反汇编代码是 CALL DWORD PTR DS:[xxxxxxxx]
   DELPHI十六进制代码是FF 25反汇编代码是jmp dword ptr ds:[xxxxxxxx]

4、RAV及大小如何计算?
答:rav=IAT首地址-PE头基址(eg:rav=00482118-00400000=82118)
    大小=IAT末地址-IAT首地址

5、为什么在双转单时新建EIP后运行报错?
答:黑鹰给的二进制代码问题,复制call kernel32.CreateMutexA 和jmp KERNEL32.OpenMutexA。

6、为什么在XP SP2上断不下来?
答:XP SP2 API函数调用上的问题。

7、为什么修复后的文件运行提示0x0047e990指令引用的0x0047e990内存。该内存不能为"written"。
答:在用来修复的子进程OD中查看内存你会发现OEP所在区段的权限是不可写入的,手动设置权限后再用import REC修复解决。

8、为什么OD的地址不是连续的?
答:因为这是一位一条指令不止是一个字节。
01058000    60              PUSHAD
01058001    E8 00000000     CALL sol.01058006
01058006    5D              POP EBP
如:01058001是E8那么01058002就是00

[ 本帖最后由 horizon_c 于 2008-5-7 19:05 编辑 ]
PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2019-3-25 06:30
  • 签到天数: 1096 天

    [LV.10]以坛为家III

    发表于 2008-5-21 14:02:24 | 显示全部楼层
    这几天学习脱Armadillo壳收获很多,这是我脱第四个练习壳脱壳并优化了一下。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-6-14 09:24:10 | 显示全部楼层
    原帖由 horizon_c 于 2008-5-7 17:25 发表
    参考:天草中级班第十四课
         armadillo主题贴第一页4楼千里之外的贴
         三人行的五个脱壳贴
         Arm4.xx CopyMeM2 and Debug Blocker

    关键字:armadillo copymem2 debugblock

    内容:
    练习3和练习8都 ...

    学习了,谢谢!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2021-10-9 19:49
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2008-6-14 23:00:24 | 显示全部楼层
    整理文章就是一个好的习惯.  我要是斑斑就给你加个精华了
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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