本帖最后由 guoqiang5277 于 2020-8-31 16:40 编辑
再看某草的中级教程第2课的时候,dump出来后,通过ImpRec修复的时候卡死。
附上操作步骤。
1、PEID查壳
UltraProtect 1.x -> RISCO Software Inc.2
2、找OEP。
2.1 OD载入,打开调试选项,取消勾选“内存异常”、“指定异常”,
2.2 运行,程序会停在00415719处,查看堆栈,找到堆栈处的“SE处理程序”,右键选择“在数据窗口中跟随”,下内存断点。
2.3 Shift + F9连续3次。删除内存断点
[Asm] 纯文本查看 复制代码 00415759 33C2 xor eax,edx
0041575B 81F2 C6BA3784 xor edx,0x8437BAC6
00415761 89048E mov dword ptr ds:[esi+ecx*4],eax
00415764 49 dec ecx
00415765 ^ EB E1 jmp short UltraPro.00415748
00415765 ^\EB E1 jmp short UltraPro.00415748
00415767 61 popad
00415768 61 popad
00415769 C3 retn
0041576A 0000 add byte ptr ds:[eax],al
2.4 F4运行到00415769处,代码区段下断点,F9运行,既可到OEP
[Asm] 纯文本查看 复制代码 004010D2 56 push esi
004010D3 FF15 E4634000 call dword ptr ds:[0x4063E4] ; UltraPro.0040D1BA
004010D9 8BF0 mov esi,eax
004010DB 8A00 mov al,byte ptr ds:[eax]
004010DD 3C 22 cmp al,0x22
004010DF 75 1B jnz short UltraPro.004010FC
004010E1 56 push esi
004010E2 FF15 F4644000 call dword ptr ds:[0x4064F4] ; UltraPro.0040D4C6
004010E8 8BF0 mov esi,eax
2.5 004010D2处前面6个字节用“55 8B EC 83 EC 44”填充,并在004010CC处新建EIP。
[Asm] 纯文本查看 复制代码 004010CC 55 push ebp
004010CD 8BEC mov ebp,esp
004010CF 83EC 44 sub esp,0x44
004010D2 56 push esi
004010D3 FF15 E4634000 call dword ptr ds:[0x4063E4] ; UltraPro.0040D1BA
004010D9 8BF0 mov esi,eax
004010DB 8A00 mov al,byte ptr ds:[eax]
004010DD 3C 22 cmp al,0x22
2.6 用OD的dump插件或者Lord PE dump。
3.ImpREC修复。
3.1 ImpREC打开进程,OEP输入10CC,点击自动查找IAT后,点击获取输入表。
3.2 点击无效函数,上面有98个。
3.3 选择其中前面4个有效函数,级别1修复失败,级别2修复卡死,级别3修复卡死。
3.4 更换了1.6版本的ImpREC和其他几个版本,都是卡死。
使用的逆向环境是论坛的虚拟机。
补上链接,是05年左右的一个程序,下载:https://wwa.lanzouj.com/iipZmg8dycd密码:agz4
|