Armadillo标准加壳的程序的脱壳和引入表修复方案
2007-01-13 20:14:38 来源:WEB开发网核心提示: 第二步,引入表的修复以前总以为它的修复很难,但实际上只要修改程序流程,完全可得到正确的引入表的.1.可先用importREC试试,有一个指针无效,如果CUT程序退出时会出错,所以要修复它.通过它我们可看到iat的rva为1000,错误指针为1030,(如果很多指针无效,只要记住一个无效的R
第二步,引入表的修复
以前总以为它的修复很难,但实际上只要修改程序流程,完全可得到正确的引入表的.
1.可先用importREC试试,有一个指针无效,如果CUT程序退出时会出错,所以要修复它.通过它我们可看到iat的rva为1000,错误指针为1030,(如果很多指针无效,只要记住一个无效的RVA就可以了)
2.重新载入程序,BP VirtualProtect,断下后f9,注意堆棧的变化,当出现如下信息时要注意了:
0012DB28 00D0887E /CALL to VirtualProtect from 00D08878
0012DB2C 00401000 |Address = SoundEdi.00401000
0012DB30 000CB000 |Size = CB000 (831488.)
0012DB34 00000004 |NewProtect = PAGE_READWRITE
0012DB38 0012F034 pOldProtect = 0012F034
它将往401000也就是IAT所在的地方写入信息:这是再按一下F9,又停下来,D 401000,我们可看到,IAT所在的位置已经写入了东西,还不是dll的地址,还记得那个无效指针的地址吗:401030,我们清掉断点,然后在在内存定位到401030处,"右键-->breakpoint-->hardware on write-->dword",然后按F9运行,程序停了下来:
00D0942F 8B85 5CFBFFFF MOV EAX, DWORD PTR SS:[EBP-4A4]
00D09435 8B8D 48F9FFFF MOV ECX, DWORD PTR SS:[EBP-6B8]
00D0943B 8908 MOV DWORD PTR DS:[EAX], ECX
00D0943D 8B85 5CFBFFFF MOV EAX, DWORD PTR SS:[EBP-4A4] ; 停在这
00D09443 83C0 04 ADD EAX, 4
00D09446 8985 5CFBFFFF MOV DWORD PTR SS:[EBP-4A4], EAX
00D0944C ^ E9 78FEFFFF JMP 00D092C9
看到上述二行:MOV ECX,DWORD PRT [EBP-6B8],我们再往上找几行可看到这个语句:
更多精彩
赞助商链接