我一直在想 - 如何反彙編自修改二進制文件?我想你不能使用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