| 菜鸟也玩手动修复引入表 |
| 责任编辑:酷酷の鱼 更新日期:2008-4-17 |
|
|
|
6、再次启动加壳程序,使之停在OEP处,用识别出来的API入口地址替换原来无法识别的API入口地址。在本人的系统下,这些识别出来的API的对应地址分别是: (1)、KERNEL32!GetVersionExA -- 77E6A9C3 (2)、KERNEL32!CopyFileA -- 77E7DA46 (3)、KERNEL32!CreateFileMappingA -- 77E68492 (4)、KERNEL32!GetModuleHandleA -- 77E66C42 (5)、KERNEL32!ExitProcess -- 77E78F94 需要做的工作就是把这些新的入口地址填到相应的内存单元,就像这样: 序号 内存地址 修改前 修改后 =============================================== (1)、[004C521C] 07D37656 77E6A9C3 (2)、[004C51A8] 07D49E52 77E7DA46 (3)、[004C51B0] 07D49E82 77E68492 (4)、[004C51F8] 07D333DD 77E66C42 (5)、[004C5200] 07D32070 77E78F94 =============================================== 为此,分别下命令: (1)、 “e 004C521C C3 A9 E6 77” (2)、 “e 004C51A8 46 DA E7 77” (3)、 “e 004C51B0 92 84 E6 77” (4)、 “e 004C51F8 42 6C E6 77” (5)、 “e 004C5200 94 8F E7 77” 以完成此项修改。 完成此项工作后,下命令“r eip 0040102E”,把EIP从00401000更改为0040102E,让程序继续执行。按照前面的第4项操作,你会发现,所有的API都可以正常识别出来了。这时,用鼠标点选“Fix Dump”按钮,在弹出的文件选择窗中,用Browse功能选取前面已经脱过壳的SVKP_Dump.EXE,点确定就Ok了。 7、由于KERNEL32!GetVersionExA是代用的,所以还需要考虑修改后给程序流向带来的影响。 001B:00401000 681DF34B00 PUSH 004BF31D 001B:00401005 FF151C524C00 CALL [004C521C] 001B:0040100B 85C0 TEST EAX,EAX 001B:0040100D 751F JNZ 0040102E 我们看到,修改前: 001B:00401005 FF151C524C00 CALL [004C521C] 总是返回EAX=1,而修改后又总是返回EAX=0,这就改变了程序的实际流向,必须补救,措施就是把 001B:0040100D 751F JNZ 0040102E 修改为 001B:0040100D EB1F JMP 0040102E Ok,你都照做了吗?大功告成!试着启动一下程序看看,是不是很酷?上一页 [1] [2] |
|
| 上一篇文章: 命令提示符被病毒禁用的解决办法 |
| 下一篇文章: Acprotect1.10 Build123之Dephi语言篇 |
|
|
|
|