首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在asmx86 homework.exe的十六进制视图中跳转<location>

在asmx86 homework.exe的十六进制视图中跳转<location>
EN

Stack Overflow用户
提问于 2015-08-09 02:20:40
回答 2查看 595关注 0票数 0

我可能对asmx86还不够了解,所以如果有一个显而易见的答案,我将很高兴被呈现出来。我在谷歌上搜索了一下,但没有真正搜索到“这就是你的答案!”公平地说,这可能意味着我问错了问题..

在/ in /on(这三种架构中的一种) x86英特尔架构中,我发现在我的practice.exe文件的十六进制视图中定位jmps (任何类型的)是相当容易的。所有的7c,78,79等等(对我有帮助的链接:Intelx86 http://unixwiz.net/techtips/x86-jumps.html对我来说已经足够突出了,我可以很容易的拿起它们。

我似乎不明白的是十六进制视图隐藏了我的jmp位置。

它们总是在jmp命令之后设置吗?我是不是..我不知道,没有复制或修改足够的字节来使我的作业程序工作,或者曾经有过只有十六进制的jmp,我是否会在那里找不到一个明确的翻译或对特定short_loc的引用?

如有任何帮助、相关链接和/或参考资料,将不胜感激。

(不太确定'memory-management‘是否是一个准确的标签。如果不相关,将删除。)

EN

回答 2

Stack Overflow用户

发布于 2015-08-09 02:30:02

如果您只是查看十六进制转储,请注意并不是所有的7C、78、79等都是跳转,因为并不是所有的都是操作码。你需要正确地拆卸。对于跳转位置,使用到当前地址(实际上是下一条指令的地址)的偏移量对相对跳转进行编码。偏移量紧跟在操作码之后,但大小取决于指令。

像往常一样,请参考官方的英特尔指令集参考。

票数 0
EN

Stack Overflow用户

发布于 2015-08-12 02:56:03

短跳(条件跳转也是短的)的操作码(以及某些指令上的子码)之后,有一个单字节指向相对位置。如果该字节小于128,则必须将其添加到jmp操作码位置以查找目地。否则,您必须减去二进制补码。

在跳转附近的操作码之后有一个绝对位置(16位在16位可执行文件中,32位在32位可执行文件中或64位在64位可执行文件中)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31897112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档