我把自己的操作步骤说一下:
设置Ollydbg忽略所有的异常选项,用IsDebug 1.4插件去掉Ollydbg的调试器标志。
用OD中载入程序,
1、下bp WaitForDebugEvent,F9运行,中断如下:
77E93A07 k> 55 push ebp <====中断在此处,删除断点
77E93A08 8BEC mov ebp,esp
77E93A0A 83EC 68 sub esp,68
77E93A0D 56 push esi
77E93A0E FF75 0C push dword ptr ss:[ebp+C]
2、Alt+F9返回,搜索全部常数 FFFFFFF8,来到(004243D6处这里是第一个出现FFFFFFF8的地方):
0042438A > \83BD D0F5FFFF>cmp dword ptr ss:[ebp-A30],0<====参考文章里提到的关键代码
00424391 . 0F8C A9020000 jl NOTEPAD.00424640<====在00424640处下断点
00424397 . 8B8D D0F5FFFF mov ecx,dword ptr ss:[ebp-A30]
0042439D . 3B0D E4454500 cmp ecx,dword ptr ds:[4545E4]
.
004243D5 . 48 dec eax
004243D6 . 83C8 F8 or eax,FFFFFFF8<=====搜索来到这里,向上看
004243D9 . 40 inc eax
.
.
0042444E . 8B8D D0F5FFFF mov ecx,dword ptr ss:[ebp-A30]
00424454 . 51 push ecx
00424455 . E8 FF1F0000 call NOTEPAD.00426459
0042445A . 83C4 0C add esp,0C
0042445D . 25 FF000000 and eax,0FF<=========================从这里开始修改
00424462 . 85C0 test eax,eax
00424464 . 0F84 D6010000 je NOTEPAD.00424640
3、先在0042438A处下 硬件执行 断点,F9运行到0042438A处,(这个时候 硬件执行 断点取消吗?)得到ebp-
A30=12EB70,<========================怎么得来的,看不懂请指教
然后修改上述的修改地方修改为:
0042445D FF05 70EB1200 inc dword ptr ds:[12EB70]
00424463 90 nop
00424464 ^ E9 21FFFFFF jmp NOTEPAD.0042438A
把12EB70处置0(试运行到这里修改,还是在对0042438A处下 硬件执行 断点之前改)(或者这个时候这个时候取消硬件执行断点),并在00424640处下断,F9运行,断住<========================下断是用HE GetModuleHandleA还是?
。好了,所有代码都强制解压完成。
我的代码:
00424640 > \E9 E00F0000 jmp NOTEPAD.00425625<==================断在这里用lordpe dump 是不是?
00424645 > 8B0D A0E24400 mov ecx,dword ptr ds:[44E2A0]
0042464B . 81F1 050000C0 xor ecx,C0000005
00424651 . 398D D8F5FFFF cmp dword ptr ss:[ebp-A28],ecx
00424657 . 0F85 7C040000 jnz NOTEPAD.00424AD9
运行LordPE,有2个关于NOTEPAD的进程,选择第2个,即可完全dump出来了。
4、(3)修复IAT表
因为Armadillo的壳使得ImportREC的"IAT AutoSearch"失效,所以必须确定IAT的RAV以及大小,为此我们用OD载入刚
刚DUMP出来的文件,来确定IAT的RAV以及大小,载入之前先修改入口点为10CC
<=======DUMP出后OD装入怎么全是空地址,哪出错了?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课