zx06zx 发表于 2008-7-24 23:41:52

請大大們幫忙脫Packman V1.0 -> Brandon LaCombe殼!

請大大幫我 感激不盡 :loveliness:
http://i235.photobucket.com/albums/ee80/zx06zx_2007/af4296f7.png

glts 发表于 2008-7-25 14:06:10

脱壳倒不难,校验很烦人
00472010 >/$55            push    ebp
00472011|.8BEC          mov   ebp, esp
00472013|.83C4 F0       add   esp, -10
00472016|.B8 A01D4700   mov   eax, 00471DA0
0047201B|.E8 BC42F9FF   call    004062DC
00472020|.A1 38824700   mov   eax, dword ptr
00472025|.8B00          mov   eax, dword ptr
00472027|.E8 1063FEFF   call    0045833C
0047202C|.A1 38824700   mov   eax, dword ptr
00472031|.8B00          mov   eax, dword ptr
00472033|.C640 5B 00    mov   byte ptr , 0

寂寞的季节 发表于 2008-7-25 22:23:08

给你一个脱完的,就是校验没搞.确实太麻烦了

aj3423 发表于 2008-7-26 13:38:16

esp定律脱壳 -> dump -> iat -> overlay

od载入,bp ReadFile, bp SetFilePointer
断下后可以看到

0045993B   .6A 00         push    0
0045993D   .6A 50         push    50                               ;偏移0x50
0045993F   .A1 009C4700   mov   eax, dword ptr
00459944   .E8 C7C7FBFF   call    00416110                         ;里面是 SetFilePointer(0x50)
00459949   .8D55 FC       lea   edx, dword ptr
0045994C   .B9 04000000   mov   ecx, 4
00459951   .A1 009C4700   mov   eax, dword ptr
00459956   .E8 C1C9FBFF   call    0041631C                         ;ReadFile 从0x50开始读4字节
0045995B   .8B45 FC       mov   eax, dword ptr          ;读到的4个字节内容为 00038200
0045995E   .99            cdq
0045995F   .52            push    edx
00459960   .50            push    eax
00459961   .A1 009C4700   mov   eax, dword ptr
00459966   .E8 A5C7FBFF   call    00416110                         ;SetFilePointer(0x38200)
0045996B   .8D55 FC       lea   edx, dword ptr
0045996E   .B9 04000000   mov   ecx, 4
00459973   .A1 009C4700   mov   eax, dword ptr
00459978   .E8 9FC9FBFF   call    0041631C                         ;ReadFile 从0x38200开始读4字节
0045997D   .817D FC 22230>cmp   dword ptr , 22322         ;读到的4个字节和 22322 比较
00459984   .0F9405 049C47>sete    byte ptr                 ;相同就把 479C04 置1
0045998B   .817D FC 11111>cmp   dword ptr , 111111
00459992   .75 04         jnz   short 00459998

脱壳前后区别就是那个sete byte ptr ,但试了直接把它置1却不行,后面还会有ReadFile,所以用另一种方法
既然是从0x50开始读第一个数据,后面的都是根据这个读到的偏移来运作,而脱壳后导致这个偏移不正确,那就直接修改这个偏移
打开HexWorkshop载入脱壳前后2个文件,看到未脱壳文件的0x50处==38200, ctrl+G来到38200偏移处,复制一段 2223020006000000, 然后到dumped.exe里搜索这个,找到 C9200 这个地址, 接下来就把dumped.exe的0x50处 改成C9200 就ok了

峰云星炫 发表于 2008-7-26 14:04:08

怎么我把它脱完后感觉都不像是 源程序了   反差太大了。



[ 本帖最后由 峰云星炫 于 2008-7-26 14:09 编辑 ]

柯梦南 发表于 2008-8-3 10:27:00

那个AJ真是强大啊,很好啊,学习
页: [1]
查看完整版本: 請大大們幫忙脫Packman V1.0 -> Brandon LaCombe殼!