首页
社区
课程
招聘
[求助]如何正确的反汇编某条指令的前一条指令?
发表于: 2012-11-19 17:34 4932

[求助]如何正确的反汇编某条指令的前一条指令?

2012-11-19 17:34
4932
求救各位大牛~

我现在遇到一个问题很头疼,我需要反汇编一条CALL指令,但只能知道这条指令的结束地址(通过栈返回地址推算),如果按照CALL指令的模式,如下所示:
CALL指令格式:
CallPattern = \
[
    [-2, [0xFF] ],
    [-3, [0xFF] ],
    [-5, [0xE8] ],
    [-6, [0xFF] ]
]
会存在很多的误报,至少我无法通过这种手段达到我的目的。
接着,我在驱动里嵌了个反汇编引擎,希望能够获得更准确些的反汇编信息。但是,反汇编引擎也只能根据给的开始地址反汇编,所以也不能准确得出前一条指令是否为CALL指令。

所以,想请教各位大牛,如果能够准确的确定某个地址之前是否存在一条反汇编指令?如果能进一步获得CALL后接的内存地址,则是最好的了!

先谢谢各位大牛~!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 267
活跃值: (438)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
2
[QUOTE=茻~;1119203]求救各位大牛~

我现在遇到一个问题很头疼,我需要反汇编一条CALL指令,但只能知道这条指令的结束地址(通过栈返回地址推算),如果按照CALL指令的模式,如下所示:
CALL指令格式:
CallPattern = \
[
    [-2, [0xFF] ],
    [-3, [0xF...[/QUOTE]

我也想过这个问题,不过我想用这样一个笨办法:把CALL指令的结束地址循环减去某一个值(15到2)然后从减法算出的地址开始反汇编,如果正好到CALL指令的结束地址是指令对齐,那这个(15到2的值就是CALL指令的开始地址)。笨人笨办法,也不知道效果如何,希望有人可以有更好的更准确的算法。
2013-1-8 12:25
0
雪    币: 18
活跃值: (12)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
我后来也用了一个笨方法,就是往前查找比较明显的指令结束标志,比如连续5个0x90,但非常有效
2013-1-30 15:05
0
游客
登录 | 注册 方可回帖
返回
//