1
A
回答
2
1
的情况下,你已经编译成二进制(从你的汇编或嵌入式汇编C):
objdump的-S your_binary,它会列出其二进制代码的每个指令。
0
假设你只是在翻译简单的指令之后,编写一个简单的汇编器就不会有太多的工作。我之前就已经完成了它 - 你可能拥有大部分用于反汇编程序组件的逻辑和表格(比如指令名称和寄存器编号等名称的操作码表 - 只是反过来使用)。我不一定意味着你可以直接反过来使用表格,但是以适当的方式重新排列表格的内容应该能够完成大部分艰苦的工作。
困难的是符号和搬迁等等。但是因为你可能并不真的需要“找到这段代码”,所以我想你可以不用这些部分。您也不需要根据某些规范生成目标文件 - 只需要一组字节。现在
,它会得到一点点,如果你想找到更靠谱:
here:
inc eax
jnz here
jmp someplace_else
....
...
someplace_else:
....
,因为你不得不编码跳跃到他们的相对位置 - 起码,它需要一个两遍的方法,首先确定指令的长度,然后是跳跃目标的实际填充。如果“someplace_else”远离跳跃本身,它也可能是绝对跳跃,在这种情况下,您的“搜索”将不得不承担与搜索位置相关的方式 - 因为该序列对于每个单一地址都是不同的。
我写了汇编程序和反汇编程序,如果你不需要处理可重定位的地址和文件格式以及你不知道的奇怪定义,那么这不是很难(直到你学习了200页格式的定义]。
相关问题
- 1. x86 intel操作码汇编
- 2. IA32汇编代码Y86汇编代码:leal指令
- 3. 如何编辑指令的操作码?
- 4. 汇编/拆卸指令操作数
- 5. imul汇编指令 - 一个操作数?
- 6. 反汇编C代替操作代码
- 7. 汇编操作代码问题
- 8. 汇编语言符号操作代码
- 9. 评估汇编代码的操作
- 10. B指令编码
- 11. ARM汇编指令
- 12. MSP430汇编指令
- 13. smulwb汇编指令
- 14. 未知操作码使用ARM NEON指令与Microsoft ARM汇编程序
- 15. 汇编代码到C代码(添加指令问题)
- 16. 汇编代码
- 17. 用于复数乘法的汇编代码/ AVX指令。 (GCC内联汇编)
- 18. 如何在IDA/Olly反汇编代码之间添加汇编程序指令?
- 19. 反编译汇编代码
- 20. x86解码指令操作码字节
- 21. 指令集 - 解码操作码
- 22. x86操作码指令解码
- 23. 将i386操作码解码为指令
- 24. GMP-汇编代码?编译代码
- 25. 汇编&C - 翻译C'S代码汇编
- 26. LEAL汇编指令有什么作用?
- 27. 汇编 - 比较指令不工作
- 28. 编码的x64指令VCOMISS
- 29. x86_64 - 编码mov指令
- 30. 编写代码指令
你为什么不使用汇编程序? –
你在做什么?为什么不简单地使用'nasm'或'gas'将它组装成字节码呢?但是,如果您想手动执行此操作,此参考可能会有所帮助,但请参阅http://ref.x86asm.net/coder64.html。 – RageD
构建一个汇编程序需要几个月的时间,使用外部程序对我来说是一个不好的解决方案,因为我宁愿保持我的代码清晰,理解nasm的工作方式可能比编写我自己的汇编程序更差 –