关于ximo教程里的2次内存镜像法
本帖最后由 子晗。 于 2019-8-18 18:01 编辑最近刚刚开始自学,跟着论坛的教程,看到ximo的脱壳基础里的手脱UPX,视频里的方法3:2次内存镜像法,先是在.rsrc处F2设置断点,然后运行,跳转正常,和视频中一样,来到了此处
但是在回去设置第二次断点后,出现问题,运行后仍然跳转到了此处,并且向下单步步过也会出现问题。
在论坛里搜索了一下,发现有一个帖子说是OD问题,换了个OD就可以了,链接https://www.52pojie.cn/thread-210105-1-1.html。
本人用的是论坛专版虚拟机内提供的OD,并不是很想换,在经过几次尝试后发现,将原教程的用F2设置的断点,即,在访问上设置中断,
都更换为右键菜单里的,设置内存访问断点,即,两次断点都换为设置内存访问断点
然后再运行,就可以在第二次运行后成功跳转到视频中正确的位置,注意,这里要及时清除内存断点
接下来就可以继续按照视频教程中的操作了。
虽然问题解决了,不,应该说目的达到了,但是本新手并没有能够理解这个使用F2设置的断点和内存访问断点的区别,
所以在此请教一下各位高手,这两个有何区别呢,又是什么原理呢,表示不解。。。。提前感谢解答。
更新:
在看雪论坛的帖子里找到了对F2断点和内存断点的分析,内容如下
内存断点寻找OEP的原理
首先,在OD中内存断点,硬件断点和普通断点(F2下断)是有本质区别的。硬件断点等效与SoftICE命令bpm,他的中断要用到DR0-DR7的调试寄存器,也就是说OD通过这些DR0-DR7的调试寄存器来判断是否断下。
普通断点(F2下断)等效于bpx,他是在所执行的的代码的当前地址的一个字节修改为CC(int3)。当程序运行到int3的时候就会产生一个异常,而这个异常将交给OD处理,把这个异常的regEIP-1以后就正好停在了需要的中断的地方(这个根据系统不同会不一样),同时OD在把上面的int3修改回原来的代码。
而内存断点基本上使用的是对代码使用的保护属性来实现中断。
内存断点分为:内存访问断点,内存写入断点。
我们知道,在程序运行的时候会有3种基本的状态产生:读取,写入,执行。
004AE242 A1 00104000 mov eax,dword ptr ds: //004AE24C处的内存读取
004AE247 A3 00104000 mov dword ptr ds:,eax //004AE24C处的内存写入
004AE24C 83C0 01 add eax,1 //004AE24C处的内存执行
那么我们应该如何中断在上面的几行呢?
1.当我们对004AE24C下内存访问断点的时候,可以中断在004AE242也可以中断在004AE247。
2.当我们对004AE24C下内存写入断点的时候,只能中断在004AE247。
3.当我们对004AE24C下内存访问断点的时候,能中断在004AE24C。
到这里你可能不明白了,为什么内存访问断点能中断在004AE247这一句对004AE24C的写入,而且还能中断在004AE24C的执行呢?
其实很简单,我们只要仔细体会一下“内存访问”这四个字的含义遍可以知道,当我们对004AE24C进行读取的时候需要“访问”他吧,当我对004AE24C进行写入的时候也需要“访问”他吧!!当然我们要执行内存地址004AE24C的代码的时候也是还是要“访问”他的!
所以我们不难得出下面的结论:
1.内存写入中断的地方,一定是也可以用内存访问中断。
2.内存执行的地方,也可以用内存访问中断。
如果这时你认为,那么内存写入岂不是没用了。呵呵~那我要告诉你当然不是,如果你想快速的准确的定位到004AE247这一行的时候,那么他就大有作用了!
总结一下:内存断点不修改原代码,不会像普通断点那样因为修改代码被程序校验而导致中断失败;对于区段的访问只是区域大了一点,其原理和上面分析的三行代码是一样的。 {:1_911:}我已经好多次了 完全跟着基础教程走 然而走的不对 不知道为什么 我昨天学的那个破解某白加速器 下时间断点 F9运行 回车跟随 这都是对的 然而跟进去 搜索中文的时候3个搜索方式都是乱码 我试了不下30次了 都这样 反而进去什么都不做 直接右键搜中文字符串的时候成功了 然后剩下的跟教程一样 然而没有时间断点哪些 破解了也用不了 子晗。 发表于 2019-8-18 10:36
吊了3次是啥意思
{:301_971:}我也想知道 我是沙发丫我头上没人啊另外我真的很蛋疼 好几次跟着人家的纯基础教程跟着走 OD跟虚拟机也是一样的 然而跟着步骤走 就是OD数据跟教程的不对 很打击信心 稚初 发表于 2019-8-17 21:02
我已经好多次了 完全跟着基础教程走 然而走的不对 不知道为什么 我昨天学的那个破解某白加速器 下 ...
唉,咱太难了,真的难顶 本帖最后由 jidesheng6 于 2019-8-17 21:53 编辑
不用从脱壳开始学,出去看鲨鱼恒的试试,然后回头来学脱壳也可以的,不然我估计你坚持不了太久。 jidesheng6 发表于 2019-8-17 21:52
不用从脱壳开始学,出去看鲨鱼恒的试试,然后回头来学脱壳也可以的,不然我估计你坚持不了太久。
好的,谢谢推荐,有时间去看看 楼主进步神速啊!点个赞! 在区段上,f2为一次性,内存为永久性……有区别 无闻无问 发表于 2019-8-17 22:33
在区段上,f2为一次性,内存为永久性……有区别
好的,谢谢,但是我还是不太能理解为何视频教程里的F2可以,我就不行{:1_937:} 有点厉害啊楼主 夜看星空 发表于 2019-8-18 10:29
你们两个是真的难,楼上那个发了3个帖子,被我吊了3次。
吊了3次是啥意思{:1_904:}
页:
[1]
2