自修改代碼Self-modifying code)是指程序在運行期間Run time)修改自身指令。可能的用途有:病毒利用此方法逃避殺毒軟件的查殺,反靜態分析加殼壓縮,反盜版[1]單晶片程序升級。

電腦

編輯

暫存記憶體中執行代碼的計算機,可修改內存中的代碼段,以往這種方法常被駭客用來製造病毒(參見:EICAR 測試病毒),現今許多操作系統CPU提供限制程序修改代碼段的方法。還可用於程序保護,增加軟件破解人員的靜態分析難度[2]

Java SE 6 提供Java Compiler API,和Java反射Reflection)機制結合在一起,即可使Java程序在運行時產生新Class),替換舊類。

單晶片

編輯

若由ROM執行程序,如支持IAP的單晶片能夠運用自修改代碼進行程序升級,也能對負責IAP功能的代碼進行修改或刪除從而失去IAP功能。

參考文獻

編輯
  1. ^ Delphi程序的自我修改,北京 , 王甲春,《中文信息:程序春秋》,2003年第7期,第97-99頁
  2. ^ 一種基於自修改代碼技術的軟件保護方法,王詳根 ,司端鋒, 馮登國, 蘇璞睿,《中國科學院研究生院學報》 2009年9月,第26卷第5期,中國科學院軟件研究所信息安全國家重點實驗室