首页
社区
课程
招聘
可不可以写个“软件跳转动态记录器”
发表于: 2006-12-10 12:58 4455

可不可以写个“软件跳转动态记录器”

2006-12-10 12:58
4455
有没有办法写一个软件记录软件运行后所有的JE和JNE状态(就象OD注释中的“跳转已经成功”和“跳转未成功”),然后导出每个跳转地址和跳转状态为文本文件。

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
这是一个很有用的功能,我也想有这个好东东,在调试程序两次一比就出来了,哈哈
但是现在好像很少有这东东, 更别说很成熟完美的
2006-12-10 14:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
那是不可能的,因为这样的话你必须一直以单步方式来自动跑代码,可是在这种情况下,就算是如今最强的CPU,也跑得比拖拉机还慢.更何况绝大多数真正的应用程序,往往都有严格的时序和同步关系.这就导致程序根本就无法工作.
2006-12-10 15:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最初由 指令CC 发布
那是不可能的,因为这样的话你必须一直以单步方式来自动跑代码,可是在这种情况下,就算是如今最强的CPU,也跑得比拖拉机还慢.更何况绝大多数真正的应用程序,往往都有严格的时序和同步关系.这就导致程序根本就无法工作.


我觉得万事都有可能的,只是能力的问题。就象RORDBG一样,用虚拟机技术实现的简易Debugger,虚拟执行每条指令,列出每个跳转的状态。虽然速度慢点,还是可以接受的。另外,能不能利用进程调试,多个单步同时进行。或者能不能利用OD的TRACE功能,或者利用OD的脚本实现?

不知道OD是怎么判断跳转成功与否的,“跳转成功”与“跳转未成功”有什么区别,从堆栈或者积存器中好象都看不出区别?

2006-12-10 15:18
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 sunbinjin 发布
这是一个很有用的功能,我也想有这个好东东,在调试程序两次一比就出来了,哈哈
但是现在好像很少有这东东, 更别说很成熟完美的


如果有这东西,以后脱狗就非常简单了,把狗插进去运行一遍,把狗拿掉运行一遍,就可以找出异样,甚至可以打补丁了,呵呵...
2006-12-18 07:56
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
NIU
6
同时判断CALL和RET指令,就可以对付变形的JMP了,哈
2006-12-18 08:31
0
雪    币: 101
活跃值: (12)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
7
作的好的虚拟机大概比真实指令慢上10倍左右. 但是比WaitForDebugEvent不是快几个数量级的.
然后加上1000次同步一次, 而且可以特定到某个中断点虚拟跑同步

除非大量的解密运算, 否则不会慢到哪去, 也就是说, 完全可以实现.
2006-12-21 01:00
0
游客
登录 | 注册 方可回帖
返回
//