我一直在想 - 如何反汇编自修改二进制文件?我想你不能使用olly或IDA,因为它们是静态的反汇编,对吗?如果跳到教学中间,反汇编器会发生什么?那么如何分析变质引擎?反汇编自修改代码
反汇编自修改代码
回答
OllyDbg和IDA不仅是静态分析器,它们都可以运行代码。 IDA也可以远程运行你的代码,据我所知,它甚至可以进行嵌入式调试。当然,如果你在某个时间点“破坏”程序执行,并且看看反汇编,它将(在这两个程序中)反映程序的当前状态,包括对它自己进行的任何修改。
如果跳到指令中间,反汇编器会发生什么?
根据我的经验,这两个提到的反汇编程序可以处理这种情况。例如,看到这里,OllyDbg中如何管理它,这里是截图时EIP是00892C0E:
当我做EIP = 00892C0F,这是一条指令的中间:
如您所见,它只是简单地重新组装指令,使其成为一个不同的(但仍然有效的)操作码。
如何分析变质引擎?
就像任何其他代码一样。你提到的技巧(跳到指令中间,修改自己)之前主要是流行的,当时反汇编和调试器不像现在这样聪明。
当然,静态分析可能非常困难,但是您当然仍然可以完全脱机地分析二进制文件,并解读“变形”(在您的头脑中)以了解代码的功能。但是,如果您现场可以使用调试器,那么您只需查看代码即可。
当然,所有这些都是编写代码的人和分析代码的人之间的无休止的竞赛。谁赢谁取决于谁早早放弃。
只是想引用这个,因为这是真的:) “当然,所有这些都是编写代码的人和分析它的人之间的无尽的竞赛。谁赢谁取决于谁早点放弃。” – 2012-06-06 19:47:29
Ollydbg将处理这种情况。
您正在寻找的功能是'分析'。它将重新分解位置上的新指令并使用更新后的代码刷新CPU窗口。
假设地址X处的指令将进行一些自我修改的更改。执行该指令后,您可以运行“分析”命令。这是围绕该基本块重新分解代码并使用更新的指令刷新CPU。
要分析,请在CPU窗口中的所需位置上单击鼠标右键,然后单击分析>分析代码。快捷键是Ctrl-A。
- 1. 汇编代码修改
- 2. 反编译汇编代码
- 3. 来自visual studio的反汇编代码
- 4. 从c反汇编代码#
- 5. 反汇编Scala代码
- 6. 调试反汇编代码
- 7. CachedAnonymousMethodDelegate1从代码反汇编代码
- 8. 如何在C++中自行修改汇编代码?
- 9. 反编译汇编代码有多难?
- 10. 理解反编译汇编代码
- 11. 反编译汇编 - 异常代码
- 12. 理解反编译汇编代码
- 13. 反汇编C代替操作代码
- 14. 自修改代码?
- 15. 如何正确反汇编.NET代码?
- 16. x86 asm:帮助反汇编代码
- 17. 如何反汇编原始MIPS代码?
- 18. 我做错了反汇编代码
- 19. 如何反汇编原始x86代码?
- 20. Objdump反汇编不匹配源代码
- 21. 反汇编托管代码问题
- 22. 反汇编Python代码到字典
- 23. 告诉gdb反汇编“未知”代码
- 24. 了解反汇编Dalvik代码?
- 25. 反汇编原始x64机器代码
- 26. 汇编代码
- 27. gcc循环构造修改为汇编代码
- 28. 在Eclipse中调试期间查看,修改汇编代码
- 29. 如何修改简单的汇编代码来更逼真?
- 30. 反编译代码更改代码
人们不希望太苛刻地批评你的问题。也许我只是不明白!但是,这可能不是几个段落中可以回答的问题。 – thb 2012-04-25 18:44:44