作业讲解中关于第三个例子 关于排查崩溃问题的疑惑
本帖最后由 w1w2w1w2 于 2015-7-15 13:54 编辑作业讲解中关于第三个例子“IAT修复失败的例子”排查崩溃的问题 的疑惑:
我找到入口点用lordPE 转存 然后用importREC x修复后还是不能用
按照H的做法 将没有修复成功的dump文件载入OD后
停在了这里:
7C817074 FF55 08 call dword ptr ss: ; UnPack_.<ModuleEntryPoint>
7C817077 50 push eax
7C817078 E8 7B50FFFF call KERNEL32.ExitThread
7C81707D 90 nop
7C81707E 90 nop
7C81707F 90 nop
7C817080 FFFF ??? ; 未知命令
7C817082 FFFF ??? ; 未知命令
7C817084 EA 38847C00 398>jmp far 8439:007C8438
7C81708B^ 7C 90 jl short KERNEL32.7C81701D
需要点两次运行后才能到达这里:
0041DDAC > $E8 EF4E0000 call UnPack_.00422CA0
0041DDB1 .^ E9 79FEFFFF jmp UnPack_.0041DC2F
0041DDB6 $3B0D B0074400 cmp ecx,dword ptr ds:
0041DDBC .75 02 jnz short UnPack_.0041DDC0
0041DDBE .F3: prefix rep:
0041DDBF .C3 retn
0041DDC0 >E9 714F0000 jmp UnPack_.00422D36
0041DDC5 $8BFF mov edi,edi ;ntdll.7C930228
0041DDC7/.55 push ebp
0041DDC8|.8BEC mov ebp,esp
0041DDCA|.51 push ecx
0041DDCB|.53 push ebx
0041DDCC|.56 push esi
0041DDCD|.57 push edi ;ntdll.7C930228
我看教程里 老师的那个“IAT修复失败的例子.exe”直接打开就到了
0041DDAC > $E8 EF4E0000 call UnPack_.00422CA0
0041DDB1 .^ E9 79FEFFFF jmp UnPack_.0041DC2F
0041DDB6 $3B0D B0074400 cmp ecx,dword ptr ds:[0x4407B0
我的做法和老师的是一样的 不知道我哪里出错了
如果用我的这个文件 再继续点击运行后 没发现崩溃 没有看到和H一样的崩溃界面
我看到的界面是这样的
附上我生成脱壳文件的具体过程:
OD载入第三个作业 单步跟踪法跟踪到:
004001CD^\78 F3 js short 吾爱破解.004001C2
004001CF 75 03 jnz short 吾爱破解.004001D4
004001D1- FF63 0C jmp dword ptr ds: ; 吾爱破解.0041DDAC //在此处下F4 然后F8单步就到了OEP
004001D4 50 push eax
004001D5 55 push ebp ; OLEAUT32.770F0000
找到的OEP为:
0041DDAC .E8 EF4E0000 call 吾爱破解.00422CA0
0041DDB1 .^ E9 79FEFFFF jmp 吾爱破解.0041DC2F
0041DDB6 $3B0D B0074400 cmp ecx,dword ptr ds:
0041DDBC .75 02 jnz short 吾爱破解.0041DDC0
0041DDBE .F3: prefix rep:
0041DDBF .C3 retn
0041DDC0 >E9 714F0000 jmp 吾爱破解.00422D36
0041DDC5 $8BFF mov edi,edi ;吾爱破解.004322F4
0041DDC7/.55 push ebp ;OLEAUT32.770F0000
0041DDC8|.8BEC mov ebp,esp
然后调用lordPE完整转存为:unpack.exe
然后调用importREC 在OEP出输入1DDAC 点击“自动你查找IAT”
再点击 获取输入表---转储到文件
选择上面生成的那个unpak.exe 最后生成的是unpack_.exe
讲unpack_.exe拖入OD中(取消了strongOD中的skip some exception 和调式设置--异常 中的所有项)然后看到的就是最上面显示的代码:
如下:
7C817074 FF55 08 call dword ptr ss: ; UnPack_.<ModuleEntryPoint>
7C817077 50 push eax
7C817078 E8 7B50FFFF call KERNEL32.ExitThread
7C81707D 90 nop
7C81707E 90 nop
7C81707F 90 nop
7C817080 FFFF ??? ; 未知命令
7C817082 FFFF ??? ; 未知命令
7C817084 EA 38847C00 398>jmp far 8439:007C8438
7C81708B^ 7C 90 jl short KERNEL32.7C81701D
不知道我哪里出错了 大家给指点一下吧 谢谢
附上我的unpack文件
说明一下:我上传的附件 用手工修复查找IAT和size的方法可以修复好的
http://www.52pojie.cn/thread-383062-1-1.html 523740194 发表于 2015-7-14 22:26
http://www.52pojie.cn/thread-383062-1-1.html
你没看明白我的帖子的意思
这个作业我已经手动脱过了
只是在看老师的作业讲解的时候 讲到了一个如何去查找脱壳失败的点 然后手动修复的方法
我是按照老师的方法去做的时候 出的问题
我自己用lordpe转存和用importREC修复的文件 在用OD打开后和老师的转存的文件打开的不一样
点运行后 中段的地方也不一样 我问的就是这个问题 为什么我的转存文件和老师说的不一样了 也没法用老师说的那种方法去查找出错点 并且手工修复 输入完iat大小和范围后要点获取iat,不要点自动获取,你这个程序里的IAT都不对。
排查问题要把出问题的程序地址和原来的程序进行对比。
页:
[1]