防反編譯之SMC(自修改代碼)

SMC全稱是self Modification Code,機理是,代碼運行時修改自身的代碼;用處是,爆破跳轉點,或隱藏重要代碼,防止反編譯。網上有例子,可以脫殼跟蹤試試看。

這裏講下SMC的要點:

雖然編寫自修改代碼不是一個工業標準,但有些情況下,它是比不可少的。下面的序列介紹了執行代碼修改用到的指令:

1,存儲修改的指令

2,執行dcbst指令,強制包含有修改過的指令的高速緩存行進行存儲

3,執行sync指令,確保dcbst完成

4,執行icbi指令,使將要存放修改後指令的指令高速緩存行無效

5,執行isync指令,清除所有指令的指令管道,那些指令在高速緩存行被設爲無效之前可能早已被取走

6,現在可以運行修改後的指令了。當取這個指令時,會發生指令高速緩存失敗,結果就會從存儲器中取得修改後的指令。


發佈了63 篇原創文章 · 獲贊 2 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章