我嘗試瞭解Michael Sikorski所着的書「實用惡意軟件分析」的示例。有一個關於反拆卸技術的例子,我不理解。它說一種常見的技術是創建兩條條件指令,即如果跳轉到零(JZ)並跳轉(如果不是零)(JNZ),它們一起考慮實際上只是一個無條件指令(這對我來說很清楚)。以下是反彙編程序創建的兩個可能結果的圖形。x86彙編對同一目標的兩個跳轉指令
下面引用指的是圖中1:
在本例中,緊接在兩個條件跳轉指令的指令似乎是在一個調用指令(調用),從字節0xE8開始。這是不是這樣的,但是,因爲這兩個條件跳轉指令實際上指向一個字節超出了0xE8字節
那是什麼意思?爲什麼跳位置loc_4011C4 + 1(其中從自帶+1) ?並在圖2它是loc_4011C5?有人可以提供更詳細的解釋嗎?
跳轉目標在調用指令內部是1個字節。爲什麼?因爲這就是程序員編寫它的原因,大概是爲了混淆目的。圖2顯示了將要執行的實際指令。 C4 + 1 = C5 – Jester