44. 0059BB75 46 inc esi
45. 0059BB76 696E 69 73680000 imul ebp,dword ptr ds:[esi+69],6873
46. 0059BB7D 90 nop
47. 0059BB7E ^ E9 0DFFFFFF jmp 店铺宝贝.0059BA90
复制代码
1.
2. 3.
二进制
00 CC B8 14 13 40 00 80 38 FF 75 3E 80 78 01 25 75 38 66 83 78 04 5A 75 31 8B 58 02 83 3B 00 74 29 8B 0B 66 81 39 50 60 74 2E 80 39 68 75 1B 50 FF 71 01 FF 15 5C 46 CA 00 8B F8 BE 64 4E CA
00
4. 5.
E8 21 95 6F 00 8B 10 89 13 58 83 C0 01 3D 00 00 59 00 72 B3 EB 10 90 90 80 79 02 68 75 EC 50 FF 71 03 EB CF 00 00 6A 00 68 75 BB 59 00 68 75 BB 59 00 6A 00 E8 75 4C 7B 77 46 69 6E 69 73 68 00
6.
00 90 E9 0D FF FF FF
复制代码 3,dump程序。
IAT修复完了,因为是二次加密,应该也没有SDK什么的。直接dump程序。然后修复。
可是程序不能运行。 问题出在哪里呢?
调试跟踪一下,问题处在下面这里
1. 00422872 8B45 FC mov eax,dword ptr ss:[ebp-4]
2. 3. 4. 5.
00422875 50 push eax 00422876 56 push esi
00422877 E8 A446FEFF call 0042287C 8BF8 mov edi,eax
复制代码
原来是程序查找资源找不到。
用LordPE打开看一下,点击打开资源表,LordPE直接down掉。看来果然是资源表出了问题。
想一下,为什么加壳的程序能找到资源,脱壳的程序就找不到了呢?
思来想去,终于想通了:
原来,我们之前脱壳抓取镜像的时候,使用的从磁盘文件(加壳文件)贴过来的PE头,而对于加壳文件
来说,资源表是被修改了的。当然会出错了。
知道了这些,就好办了,取消勾选“从磁盘文件粘贴PE头”,然后重新dump程序。
再用ImportREC修复就OK了!!
总结:
1,分析明白IAT的加密方式以后,就可以自己写patch代码修复IAT。