首页
社区
课程
招聘
[讨论]脱壳时ESP定律为何不能下内存访问断点?
发表于: 2020-2-22 14:18 7541

[讨论]脱壳时ESP定律为何不能下内存访问断点?

2020-2-22 14:18
7541
《加密与解密》一书中利用堆栈平衡原理找OEP时,下的都是硬件断点(硬件访问断点和硬件写断点)。
但我觉得最后的POPAD都是对内存的访问,应该内存访问断点也能断下来呀,可实际操作没能断下来
下面是我的具体操作:
1、F8到000D7171处,此时ESP = 0025FAF8,在数据窗口下内存访问断点

2、F9运行,要等好一会儿,出现下图情况

还请知道的兄弟赐教?


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 9934
活跃值: (2554)
能力值: ( LV6,RANK:87 )
在线值:
发帖
回帖
粉丝
2
https://blog.csdn.net/TeaIsCold/article/details/78242575
2020-2-22 16:15
0
雪    币: 168
活跃值: (823)
能力值: ( LV10,RANK:173 )
在线值:
发帖
回帖
粉丝
3
Lixinist https://blog.csdn.net/TeaIsCold/article/details/78242575
感谢Lixinist兄,看了那篇blog后,对于为什么要运行好久我可能懂了,内存断点是设置整个页属性然后一一作比较,所以效率比较低
我理解popad指令也是会对内存进行访问的,但我通过OD做实验,发现还是没办法断在popad指令上
2020-2-22 18:52
0
雪    币: 581
活跃值: (1192)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
内存断点,可能会断在同一个页面的其他地址上,要多次F9,才能到达我们想要的地址上。至于为什么会崩掉呢?我也没搞懂为什么。在Win10上使用内存断点这个操作是不会崩的。但是在Win7上却崩掉了,于是我把OD接受调试异常都打开。发现在这里产生了访问异常。但这俩地址并不是在同一页面上的。所以你的内存断点并没有断下来,而因为产生了异常所以你的程序崩溃了。但问题又来了,为什么会在这里产生异常呢?我也很奇怪。我尝试了一下:如果不下内存断点的话,这里本来是可以写入的。但是下了内存断点的话,这里就并没有写入的权限,导致了异常。所以我也很奇怪,为什么Win10上可以,而Win7上却不可以。希望后续有人可以回答我这个疑惑,谢谢。不过总结一句:esp定律那里最好不要用内存断点。
2020-2-22 22:38
0
雪    币: 9934
活跃值: (2554)
能力值: ( LV6,RANK:87 )
在线值:
发帖
回帖
粉丝
5
kaoyange 感谢Lixinist兄,看了那篇blog后,对于为什么要运行好久我可能懂了,内存断点是设置整个页属性然后一一作比较,所以效率比较低我理解popad指令也是会对内存进行访问的,但我通过OD做实验,发现还 ...
应该没人对栈用内存断点吧。
这点不用深究。
而且od因为一些奇奇怪怪的原因,的确是会出现莫名其妙的崩溃。
推荐用x64dbg
2020-2-22 23:56
0
雪    币: 399
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我个人遇到过一种现象,就是程序无法在win10以下正常运行,可以打开但是到填写注册码的时候就崩溃,这时候无论是正常运行还是调试都这样,但是有一次换到了win10下再试的时候就都正常了,都不崩溃
2020-2-23 09:04
0
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
帮顶
2020-2-23 12:54
1
雪    币: 168
活跃值: (823)
能力值: ( LV10,RANK:173 )
在线值:
发帖
回帖
粉丝
8
lracker 内存断点,可能会断在同一个页面的其他地址上,要多次F9,才能到达我们想要的地址上。至于为什么会崩掉呢?我也没搞懂为什么。在Win10上使用内存断点这个操作是不会崩的。但是在Win7上却崩掉了,于是我把 ...
其实我一直在想有没有可能是UPX壳对内存页的属性做了设置
2020-2-23 22:33
0
雪    币: 581
活跃值: (1192)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
那这个的话可能要仔细去分析一下了。但我感觉不像。要不然为什么在win10上是可以的呢?你可以把调试设置设置一下,不要忽略异常。然后看看是哪里产生了错误。要不然某个地方产生了不可访问,但又不是你下内存断点的地方,那只会造成崩,并不会断下来的。
2020-2-24 21:31
0
雪    币: 168
活跃值: (823)
能力值: ( LV10,RANK:173 )
在线值:
发帖
回帖
粉丝
10
lracker 那这个的话可能要仔细去分析一下了。但我感觉不像。要不然为什么在win10上是可以的呢?你可以把调试设置设置一下,不要忽略异常。然后看看是哪里产生了错误。要不然某个地方产生了不可访问,但又不是你下内存断 ...
我在win10下试了下没有崩,令我意外的是居然断在了UPX壳的最后一句jmp xxxxxxxx上,我只能呵呵呵了,不管怎样,还是要谢谢你
2020-2-25 16:33
0
游客
登录 | 注册 方可回帖
返回
//