2012-04-25 121 views
9

我一直在想 - 如何反彙編自修改二進制文件?我想你不能使用olly或IDA,因爲它們是靜態的反彙編,對嗎?如果跳到教學中間,反彙編器會發生什麼?那麼如何分析變質引擎?反彙編自修改代碼

+0

人們不希望太苛刻地批評你的問題。也許我只是不明白!但是,這可能不是幾個段落中可以回答的問題。 – thb 2012-04-25 18:44:44

回答

10

OllyDbg和IDA不僅是靜態分析器,它們都可以運行代碼。 IDA也可以遠程運行你的代碼,據我所知,它甚至可以進行嵌入式調試。當然,如果你在某個時間點「破壞」程序執行,並且看看反彙編,它將(在這兩個程序中)反映程序的當前狀態,包括對它自己進行的任何修改。

如果跳到指令中間,反彙編器會發生什麼?

根據我的經驗,這兩個提到的反彙編程序可以處理這種情況。例如,看到這裏,OllyDbg中如何管理它,這裏是截圖時EIP是00892C0E:

OllyDbg before

當我做EIP = 00892C0F,這是一條指令的中間:

OllyDbg after

如您所見,它只是簡單地重新組裝指令,使其成爲一個不同的(但仍然有效的)操作碼。

如何分析變質引擎?

就像任何其他代碼一樣。你提到的技巧(跳到指令中間,修改自己)之前主要是流行的,當時反彙編和調試器不像現在這樣聰明。

當然,靜態分析可能非常困難,但是您當然仍然可以完全脫機地分析二進制文件,並解讀「變形」(在您的頭腦中)以瞭解代碼的功能。但是,如果您現場可以使用調試器,那麼您只需查看代碼即可。

當然,所有這些都是編寫代碼的人和分析代碼的人之間的無休止的競賽。誰贏誰取決於誰早早放棄。

+1

只是想引用這個,因爲這是真的:) 「當然,所有這些都是編寫代碼的人和分析它的人之間的無盡的競賽。誰贏誰取決於誰早點放棄。」 – 2012-06-06 19:47:29

1

Ollydbg將處理這種情況。

您正在尋找的功能是'分析'。它將重新分解位置上的新指令並使用更新後的代碼刷新CPU窗口。

假設地址X處的指令將進行一些自我修改的更改。執行該指令後,您可以運行「分析」命令。這是圍繞該基本塊重新分解代碼並使用更新的指令刷新CPU。

要分析,請在CPU窗口中的所需位置上單擊鼠標右鍵,然後單擊分析>分析代碼。快捷鍵是Ctrl-A