找回密码
 立即注册
查看: 2541|回复: 5

内存断点原理3

[复制链接]

19

主题

167

回帖

1830

积分

高级会员

积分
1830
命运舞姬 发表于 2015-6-25 08:49:33 | 显示全部楼层 |阅读模式
iii.实战
好吧,来弄一个猛壳怎么样:
这个壳是一个hying的旧版,我们用他来实验一下我们内存断点法。
OD
载入以后来到这里
CODE:
0040D000 u> 56     push esi    //
这里
0040D001 52     push edx
0040D002 51     push ecx
0040D003 53     push ebx
0040D004 55     push ebp
0040D005 E8 15010000    call unpackme.0040D11F
[Copy to clipboard]
根据跟过一次的经验我们将先设置,除int3异常以外忽略其他异常,SHIFT+F9
CODE:
003725B9 90     nop     //
到这里
003725BA 8BCD     mov ecx,ebp
[Copy to clipboard]
然后再设置除除零异常外,忽略其他异常。SHIFT+F9
CODE:
00372660 F7F3     div ebx    //
到这里
00372662 90     nop
[Copy to clipboard]
下面是多的单步异常,太麻烦我们不管他,现在开始用内存断点的方法。
code段下内存访问断点,希望他已经解压完毕。F9
CODE:
0040D19D A4     movs byte ptr es:[edi],byte ptr ds:[esi]    //
还没解完呢
0040D19E B3 02    mov bl,2
[Copy to clipboard]
data段下内存写入断点,试试看他是不是要写data段。
CODE:
00372712 F3:A4    rep movs byte ptr es:[edi],byte ptr ds:[esi] //
断到这里
00372714 5E     pop esi
[Copy to clipboard]
下面再对code段下内存访问断点。F9
CODE:
00372855 8907     mov dword ptr ds:[edi],eax       ; SHELL32.DragFinish //
这里是对IAT加密的地方了!!!
00372857 5A     pop edx
00372858 0FB642 FF    movzx eax,byte ptr ds:[edx-1]
0037285C 03D0     add edx,eax
0037285E 42     inc edx
0037285F 83C7 04    add edi,4
00372862 59     pop ecx
00372863 ^ E2 A9    loopd short 0037280E
00372865 ^ E9 63FFFFFF    jmp 003727CD
0037286A 8BB5 93060000    mov esi,dword ptr ss:[ebp+693]       //
到这里下断F2
[Copy to clipboard]
现在如果再对data下访问断点已经是没用了。这时应该格外的小心。
我们现在就想既然这一段是对code解码的,那么我们就绕过他吧!
0037286A下断F2,然后清除内存断点!!!!
F9
以后停在这里,继续对code下内存访问断点。
看看左下角还在解码,哎~真是麻烦!
CODE:
003728E1 /EB 1D    jmp short 00372900
003728E3 |25 FFFFFF7F    and eax,7FFFFFFF
003728E8 |0385 83060000    add eax,dword ptr ss:[ebp+683]
003728EE |2B85 8F060000    sub eax,dword ptr ss:[ebp+68F]
003728F4 |8BDE     mov ebx,esi
003728F6 |2BD8     sub ebx,eax
003728F8 |8958 FC    mov dword ptr ds:[eax-4],ebx       //
停在这里
003728FB |83C7 08    add edi,8
003728FE ^|EB DB    jmp short 003728DB
00372900 \64:FF35 30000000 push dword ptr fs:[30]       //
清除内存断点以后到这里下断,F9
[Copy to clipboard]
又一段解码的代码,再次使用上面的办法手动跳出去。
现在继续对code段下内存访问断点!!F9以后到达这里。
CODE:
004010CC FFD7     call edi        ; unpackme.004010CE //OEP

004010CE 58     pop eax
004010CF 83EC 44    sub esp,44
004010D2 56     push esi
004010D3 90     nop
004010D4 E8 B518F7FF    call 0037298E
004010D9 8BF0     mov esi,eax
[Copy to clipboard]
呵呵~虽然不是我们熟悉的OEP,但是地址是没错了,况且根据我们的步骤,我可以很肯定的说这是code段的第一次执行中断!
所以这就是OEP
总结一下:当我们在寻找OEP的时候,要多次对code下断他解压完毕,如果不是就对别的段试试~如果程序跑飞了,那就没办法了,重来呗~其实说起来要赌的是:当data段,idata段,rsrc段摆在你的面前,你会好好珍惜那个段,不过还好上天还会给我们从来一次的机会(ctrl+F2 ^_^),那么我们会对那个不会跑飞的段说3个字----“先断你如果非要在上面加一个次数,我希望是一次内存断点就好了


60

主题

508

回帖

5470

积分

钻石会员

学无止境

积分
5470

卓越会员

QQ
海潮 发表于 2015-6-25 13:41:26 来自手机 | 显示全部楼层
沙发,学习!
回复

使用道具 举报

44

主题

599

回帖

1139

积分

高级会员

积分
1139
woaijiang1 发表于 2015-6-26 11:20:52 来自手机 | 显示全部楼层
谢谢老师,辛苦了了
回复

使用道具 举报

10

主题

143

回帖

561

积分

高级会员

积分
561
小云天 发表于 2015-6-26 17:57:08 | 显示全部楼层
谢谢分享好好学习天天向上
回复

使用道具 举报

7

主题

215

回帖

959

积分

高级会员

积分
959
nikkitang 发表于 2015-6-27 17:07:35 | 显示全部楼层
每天坚持学习,慢慢进步,加油!
回复

使用道具 举报

2

主题

43

回帖

60

积分

注册会员

积分
60
332936 发表于 2017-12-15 11:31:00 | 显示全部楼层
每天坚持学习,慢慢进步,加油!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|虫虫联盟 ( 备案号:蜀ICP备15018121号-1 )

GMT+8, 2026-4-15 02:18 , Processed in 2.487898 second(s), 26 queries .

Powered by Discuz! X5.0 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表