轉(zhuǎn)帖|使用教程|編輯:李顯亮|2020-05-08 09:34:34.047|閱讀 300 次
概述:小編大家整理了大佬們的使用技巧和經(jīng)驗與大家分享,希望能夠幫助你解決實際運用中遇到的問題。本文繼續(xù)講解Handle塊優(yōu)化與殼模板初始化。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
VMProtect是一種很可靠的工具,可以保護應(yīng)用程序代碼免受分析和破解,但只有在應(yīng)用程序內(nèi)保護機制正確構(gòu)建且沒有可能破壞整個保護的嚴重錯誤的情況下,才能實現(xiàn)最好的效果。
小編大家整理了大佬們的使用技巧和經(jīng)驗與大家分享,希望能夠幫助你解決實際運用中遇到的問題。本文接著介紹關(guān)于反匯編引擎。
第四章:Handle塊優(yōu)化與殼模板初始化
1、將不符合條件的全部刪除,直到找到push 0xFACE0002這條為止
2、因為Vmp保存寄存器環(huán)境代碼是隨機性的,原始殼模板的是固定的所以要替換掉
3、因為 pushfd pushad模板后面必然是push 0xFACE0002
4、根據(jù)寄存器不同而設(shè)置不同的VmpOpcode,進行構(gòu)造填充struct_DisassemblyFunction結(jié)構(gòu)
5、返回:lods byte ptr ds:[esi]在數(shù)組第幾個元素
OD最終效果圖如下:
OD數(shù)組struc_SaveAllDisasmFunData->ArrayAddress排列順序如下:(注意 struc_SaveAllDisasmFunData->ArrayAddress排列順序 就是最終代碼顯示順序)
1、初始化v245跟v246數(shù)組,具體用處待定
2、找到處理的地方Vmp == 0x36
3、struct_DisassemblyFunction結(jié)構(gòu)重新賦值
4、找到該struct_DisassemblyFunction所在的數(shù)組位置
5、并重新new個新的struct_DisassemblyFunction
6、根據(jù)隨機數(shù)構(gòu)造命令:INC、Add、lea,實際上只要實現(xiàn)esi+1都行
7、OD最終效果圖:
8、原始模板
9、前面的構(gòu)造出了inc esi(add lea),那么還差一句mov al,[esi]
10、注意v158 = GetRandInt0123((int)&savedregs);這一句是隨機獲取0~3,也就是Reg:0=al、1=cl、2=dl、3=bl
11、注意這一句跟后面的指令都是有關(guān)聯(lián)的,換了后面影響的指令都要換不同的Reg
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: