SMC是Self Modifying Code的簡稱兑徘,意義為在運(yùn)行中進(jìn)行自修改的代碼(可以視作一種簡化了的殼)
本文主要給出一個(gè)簡單的SMC程序及其解釋
由于需要對(duì)固定的地址進(jìn)行讀寫操作,所以建立工程時(shí)需要注意關(guān)閉ASLR
文中是直接對(duì)代碼段進(jìn)行操作仪糖,所以需要借助工具修改text段的屬性使其可寫
LoadPE修改區(qū)段屬性
下面給出具體做法
首先確定需要加密的代碼部分:
VS反匯編
通過vs查看反匯編(或者OD、IDA等)可以確定對(duì)應(yīng)部分的反匯編代碼
然后將這段代碼手工用16進(jìn)制編輯器覆蓋為加密后的數(shù)據(jù)
程序執(zhí)行時(shí)則運(yùn)行事先寫好的代碼先進(jìn)行解密再運(yùn)行