首页
社区
课程
招聘
[推荐]果断的发个帖关于OD的执行的到用户代码不成功的原因!
发表于: 2011-5-1 11:05 7676

[推荐]果断的发个帖关于OD的执行的到用户代码不成功的原因!

2011-5-1 11:05
7676
想了几天,也查了很多资料,也没有找到OD里面执行到用户代码的原理,因为调试的时候你通过消息框来追踪它的关键点是一个很有用的方法.但是最近遇到了好几个壳,用这种方法都失效了.我想很多朋友调试软件的时候也用这种方法吧!

  所以我就想知道 OD 执行到用户代码  的原理是什么? 壳是怎么知道我执行了这个操作然后让我无法调试的!

  本人本来想自己解决,不料能力有限,不得不求助于论坛,还望高手不吝赐教! 谢谢


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
  • 1.JPG (55.51kb,114次下载)
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 656
活跃值: (448)
能力值: ( LV12,RANK:360 )
在线值:
发帖
回帖
粉丝
2
应该是在堆栈里面的返回地址上下断吧!进CALL时把返回地址藏进来,到要返回时在显示,就可以Pass Atl+F9

ps:经测试,的确是这样,你随便进一个CALL 然后修改下返回地址,然后按ATL+F9 就会直接跳到你修改的地址!
2011-5-1 13:30
0
雪    币: 69
活跃值: (157)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
你说的这个我倒是清楚,但还是有点想不明白,出现消息框,暂停,执行到用户代码  确定之后 EIP直接到MessageBox的下一行.有一点很奇怪. 就是在确定之前,你检查断点(就是OD上面的B),那里面有一条叫做One_shot 闪得很厉害,不知道怎么原因!
2011-5-1 16:16
0
雪    币: 656
活跃值: (448)
能力值: ( LV12,RANK:360 )
在线值:
发帖
回帖
粉丝
4
但还是有点想不明白,出现消息框,暂停,执行到用户代码 确定之后 EIP直接到MessageBox的下一行


这个倒是新发现,但调试一下你会发现,出现信息框后暂停,EIP会在系统领域(信息框消息循环中),堆栈中有不少返回地址,但有不少是系统领域的返回地址,而ATL+F9是执行到用户领域,堆栈中第一个用户领域的返回地址即是调用MessageBox的下一行



One_shot 在哪?上图~
2011-5-1 16:25
0
雪    币: 69
活跃值: (157)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
先上个图,你可以自己试一下,这也是我最近才发现的,很奇怪!


而且那个地址不是固定的,老是在跳变,你自己跟一下就知道了
上传的附件:
  • 1.JPG (99.38kb,78次下载)
2011-5-1 16:42
0
雪    币: 656
活跃值: (448)
能力值: ( LV12,RANK:360 )
在线值:
发帖
回帖
粉丝
6
[QUOTE=liuqiangni;953952]先上个图,你可以自己试一下,这也是我最近才发现的,很奇怪!


而且那个地址不是固定的,老是在跳变,你自己跟一下就知道了[/QUOTE]

我用的是中文版的,不知道One_shot是什么状态
2011-5-1 16:51
0
雪    币: 69
活跃值: (157)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
中文的也有啊 上个图
上传的附件:
  • 2.JPG (28.07kb,75次下载)
2011-5-1 17:02
0
雪    币: 656
活跃值: (448)
能力值: ( LV12,RANK:360 )
在线值:
发帖
回帖
粉丝
8
[QUOTE=liuqiangni;953960]中文的也有啊 上个图
[/QUOTE]

只一次是什么断点?怎么下的?没用过~
2011-5-1 17:04
0
雪    币: 69
活跃值: (157)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
9
断点不是我下的,是OD自己下的,我点执行到用户断点,然后Breakpoint 里面就会有这个,而且还老跳变
2011-5-1 21:05
0
游客
登录 | 注册 方可回帖
返回
//