VMProtect是一種很可靠的工具,可以保護(hù)應(yīng)用程序代碼免受分析和破解,但只有在應(yīng)用程序內(nèi)保護(hù)機(jī)制正確構(gòu)建且沒(méi)有可能破壞整個(gè)保護(hù)的嚴(yán)重錯(cuò)誤的情況下,才能實(shí)現(xiàn)最好的效果。
【下載VMProtect最新試用版】
小編大家整理了大佬們的使用技巧和經(jīng)驗(yàn)與大家分享,希望能夠幫助你解決實(shí)際運(yùn)用中遇到的問(wèn)題。本文接著介紹關(guān)于反匯編引擎。
第四章:Handle塊優(yōu)化與殼模板初始化
根據(jù)前面符合Jmp Handle滿足條件的Number_1作為循環(huán)因子
-
經(jīng)過(guò)前面篩選Number_1=0XCC,一般HandleX與ESI_Matching_Array都是一一對(duì)應(yīng),大小都是0xCC
-
只是設(shè)置的基本的Mod信息跟VmpOpcode=0x23
-
new出來(lái)的struct_VmFunctionAddr結(jié)構(gòu)只是設(shè)置了助記符=0xB
-
強(qiáng)行擴(kuò)充到0xFF大小,不足的new struc_SavePartDisasmFunData和struct_VmFunctionAddr結(jié)構(gòu),具體作用不明
將不符合條件的struc_SaveAllDisasmFunData和struc_SavePartDisasmFunData1從數(shù)組中刪除
-
專(zhuān)門(mén)找ESIResults[X] == 0的
-
ESIResults[X]與v7->Esi_Addr[4 * X]一一對(duì)應(yīng)
-
找到VmpOpcode值是:0~9、0xC則退出,符合條件的基本上是:Jmp VMDispatcher找到后把該數(shù)組元素刪除
-
清零v7->Esi_Addr[4 * X] = 0
-
看了一圈基本上是把整個(gè)HandleX解析信息的都刪除,jmp XXXX標(biāo)志結(jié)束
-
未被刪除的如下:
總結(jié)
-
ESIResults[X]與v7->Esi_Addr[4 * X]一一對(duì)應(yīng)
-
ESIResults[X]==0,那么取對(duì)應(yīng)的v7->Esi_Addr[4 * X]數(shù)組內(nèi)容(struc_SaveAllDisasmFunData結(jié)構(gòu)體)
-
struc_SaveAllDisasmFunData與struc_SavePartDisasmFunData1數(shù)組里刪除該HandleX信息
-
判斷到j(luò)mp XXXX為結(jié)束點(diǎn),也就是整個(gè)Handle解析的信息都清除掉
-
ESIResults[X]==0就是不使用的了
隨機(jī)數(shù)填充struct_VmpOpcodePY_80結(jié)構(gòu)
sub_49FB90函數(shù)分析:
sub_49F958函數(shù)分析:
-
通過(guò)隨機(jī)數(shù)取word_4EE0D8數(shù)組的下標(biāo),符合條件的跳到賦值的地方
-
退出條件是:要Add添加幾組元素由Constant(參數(shù)2)決定,外加一句RandInt(1),百分之50%幾率再來(lái)一次
-
它們使用的結(jié)構(gòu)如下:
總結(jié)
-
變形總結(jié)對(duì)照
RandomWord_4EE0EC是對(duì)add al,bl的變形
RandomWord_4EE0D8是對(duì)add bl,al的變形
-
填充這些數(shù)據(jù)到底怎么使用?
-
struc_47數(shù)據(jù)使用。我們發(fā)現(xiàn)執(zhí)行完畢后一共有6組
-
第一組:
struc_47->RandomWord_4EE0D8=0x29 ->inc
struc_47->AddrRandomBuff=0x1
-
第二組:
struc_47->struc_47->RandomWord_4EE0D8=0x43 ->rol
struc_47->struc_47->AddrRandomBuff=0x5
-
第三組:
struc_47->struc_47->RandomWord_4EE0D8=0x5C ->not
struc_47->AddrRandomBuff=0x5
-
第四組:
struc_47->RandomWord_4EE0D8=0x34 ->sub
struc_47->AddrRandomBuff=0xB0
-
第五組:
struc_47->struc_47->RandomWord_4EE0D8=0x5C ->not
struc_47->AddrRandomBuff=0x0
-
第六組:
struc_47->RandomWord_4EE0D8=0x05 ->xor
struc_47->struc_47->AddrRandomBuff=0x7A
剛好對(duì)應(yīng)以下6句,因?yàn)?、3、5是單操作數(shù)所以struc_47->AddrRandomBuff不使用
-
struct_VmpOpcodePY_80->RandomWord_4EE0EC使用
-
第一種RandomWord_4EE0EC=0x4,注意看405069跟40507B這兩句是add
-
第二種RandomWord_4EE0EC=0x34,注意看405069跟40507B這兩句是sub
-
第三種RandomWord_4EE0EC=0x5,注意看405069跟40507B這兩句是xor
-- 未完待續(xù) --
VMProtect正版授權(quán)專(zhuān)享在線訂購(gòu)特享超低價(jià)格!還不趕緊加入你的訂購(gòu)清單?
標(biāo)簽:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: