w1w2w1w2 发表于 2015-7-14 22:20

作业讲解中关于第三个例子 关于排查崩溃问题的疑惑

本帖最后由 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的方法可以修复好的

523740194 发表于 2015-7-14 22:26

http://www.52pojie.cn/thread-383062-1-1.html

w1w2w1w2 发表于 2015-7-15 13:29

523740194 发表于 2015-7-14 22:26
http://www.52pojie.cn/thread-383062-1-1.html

你没看明白我的帖子的意思
这个作业我已经手动脱过了
只是在看老师的作业讲解的时候 讲到了一个如何去查找脱壳失败的点 然后手动修复的方法
我是按照老师的方法去做的时候 出的问题
我自己用lordpe转存和用importREC修复的文件 在用OD打开后和老师的转存的文件打开的不一样
点运行后 中段的地方也不一样 我问的就是这个问题 为什么我的转存文件和老师说的不一样了 也没法用老师说的那种方法去查找出错点 并且手工修复

Hmily 发表于 2015-7-16 12:05

输入完iat大小和范围后要点获取iat,不要点自动获取,你这个程序里的IAT都不对。
排查问题要把出问题的程序地址和原来的程序进行对比。
页: [1]
查看完整版本: 作业讲解中关于第三个例子 关于排查崩溃问题的疑惑