請大大們幫忙脫Packman V1.0 -> Brandon LaCombe殼!
請大大幫我 感激不盡 :loveliness:http://i235.photobucket.com/albums/ee80/zx06zx_2007/af4296f7.png 脱壳倒不难,校验很烦人
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 给你一个脱完的,就是校验没搞.确实太麻烦了 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:09 编辑 ] 那个AJ真是强大啊,很好啊,学习
页:
[1]