轉(zhuǎn)帖|使用教程|編輯:李顯亮|2020-03-11 11:10:30.540|閱讀 315 次
概述:小編大家整理了大佬們的使用技巧和經(jīng)驗(yàn)與大家分享,希望能夠幫助你解決實(shí)際運(yùn)用中遇到的問(wèn)題。本文講解反匯編引擎學(xué)習(xí)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
VMProtect是一種很可靠的工具,可以保護(hù)應(yīng)用程序代碼免受分析和破解,但只有在應(yīng)用程序內(nèi)保護(hù)機(jī)制正確構(gòu)建且沒(méi)有可能破壞整個(gè)保護(hù)的嚴(yán)重錯(cuò)誤的情況下,才能實(shí)現(xiàn)最好的效果。
小編大家整理了大佬們的使用技巧和經(jīng)驗(yàn)與大家分享,希望能夠幫助你解決實(shí)際運(yùn)用中遇到的問(wèn)題。本文接著介紹關(guān)于反匯編引擎。
③特殊Opcode解析
一般例如jmp call都是需要二次解析的
拿條命令舉例說(shuō)明:jmp dword ptr ds:[eax*4+0x474FCF] 這一條命令就是跳到不同的Handle塊執(zhí)行,jmp它Opcode是FF所以對(duì)應(yīng)的VMOpcode=0xC
根據(jù)跳轉(zhuǎn)類(lèi)型判斷,判斷E8 E9 EA 近 段間 短跳轉(zhuǎn)
例如像那種:jmp VMDispatcher就會(huì)符合條件例如像那種:jmp VMDispatcher就會(huì)符合條件
我們這個(gè)是else if ( DisassemblyFunction->Magic == 2 )
解析sub_4918E8函數(shù)
首先看一看sub_494F60函數(shù),保存VmOpcode信息跟Displacement,再根據(jù)大小讀取,設(shè)置ModRM信息
v5->First.ModRM_mod__Or__Size = 2;jmp dword ptr ds:[eax*4+0x474FCF] 就是這種尋址方式
SetDisassemblyFunction_Address函數(shù)解析
if ( v8->VMOpcode == 1 || (result = v8->VMOpcode - 3, v8->VMOpcode == 3) )成立條件 v533->VMOpcode=1: case 0xA8: // Test al,imm8 case 0x16u: // push ss case 0x1Eu: // push ds case 0x50~0x57: // 50=push rax/r8 51=push rcx/r9以此類(lèi)推 case 0x68u: // push Imm32/16 等等 v533->VMOpcode=3: case 0xC7u: // MOV R/M32,IMM32 case 0x20: // and Eb,Gb case 0x22: // and Gb,Eb 等等
SetDisassemblyFunction_Address函數(shù)涉及到的結(jié)構(gòu)體如下:
執(zhí)行依次SetDisassemblyFunction_Address標(biāo)記結(jié)尾。(注意這里參數(shù)2就是:0xC)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: