轉(zhuǎn)帖|使用教程|編輯:楊鵬連|2021-07-06 11:13:34.203|閱讀 308 次
概述:?看了網(wǎng)上大神們寫了好多的vmp 虛擬代碼的分析 ,但是在對(duì)實(shí)在項(xiàng)目時(shí),插件總是提示不對(duì)或者未知版本,一直對(duì)vm代碼的還原有質(zhì)疑,于是就萌發(fā)了具體分析這個(gè)vm代碼是怎么回事,若有錯(cuò)誤,歡迎指出,能力有限只能分析皮毛,只談vm的代碼。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
VMProtect是一種很可靠的工具,可以保護(hù)應(yīng)用程序代碼免受分析和破解,但只有在應(yīng)用程序內(nèi)保護(hù)機(jī)制正確構(gòu)建且沒(méi)有可能破壞整個(gè)保護(hù)的嚴(yán)重錯(cuò)誤的情況下,才能實(shí)現(xiàn)最好的效果。
VMProtect通過(guò)在具有非標(biāo)準(zhǔn)體系結(jié)構(gòu)的虛擬機(jī)上執(zhí)行代碼來(lái)保護(hù)代碼,這將使分析和破解軟件變得十分困難。除此之外,VMProtect還可以生成和驗(yàn)證序列號(hào),限制免費(fèi)升級(jí)等等。
VMProtect正版授權(quán)在線訂購(gòu)享受最低價(jià),僅售801元起!還不趕緊加入你的訂購(gòu)清單?>>更多詳情可點(diǎn)擊咨詢購(gòu)買
相關(guān)鏈接:
代碼保護(hù)軟件VMP逆向分析虛擬機(jī)指令:初步認(rèn)識(shí)與環(huán)境搭建(一)
代碼保護(hù)軟件VMP逆向分析虛擬機(jī)指令:VMP代碼的提取(二)
代碼保護(hù)軟件VMP逆向分析虛擬機(jī)指令詳細(xì)分析(三)
代碼保護(hù)軟件VMP逆向分析虛擬機(jī)指令:分析那4條匯編被VM的VM指令
代碼保護(hù)軟件VMP逆向分析虛擬機(jī)指令:分析VMP的一些細(xì)節(jié)
七、附加 分析如果VM的指令中包含了函數(shù)調(diào)用
材料文件在vmptestcall2文件夾中,不知道為什么我這個(gè)vm后的exe總報(bào)毒,之前上面那個(gè)沒(méi)報(bào)。追蹤時(shí)一樣是按Ctrl+F11記錄,我們先看一下原來(lái)的匯編是什么樣:
然后VMP3后我們下的trace斷點(diǎn):
0043D9C2 主 push 0x7EBD5487 ESP=0012FF88 ; 進(jìn)入虛擬機(jī)前兆 VM_Entry 0043D9C7 主 call vmptestc.0041258D ESP=0012FF84 0041258D 主 push edi ESP=0012FF80 0041258E 主 mov di,0x7063 EDI=00007063 00412592 主 pushfd ESP=0012FF7C 00412593 主 push ebx ESP=0012FF78 00412594 主 clc 00412595 主 neg bx FL=CPS, EBX=7FFD9000我們直接搜索puts字符串,得到所在位置如下:
00414248 主 jmp vmptestc.0047DE97 0047DE97 主 retn ESP=0012FF84 ; 退出虛擬機(jī)環(huán)境 進(jìn)入函數(shù)調(diào)用內(nèi)部 puts 主 push 0xC ESP=0012FF80 -----------------------------------------------------------puts 75A68D06 主 push msvcrt.75A68E80 ESP=0012FF7C 75A68D0B 主 call msvcrt.759F9836 FL=0, EAX=0012FF70, ESP=0012FF54, EBP=0012FF80 75A68D10 主 or ebx,0xFFFFFFFF FL=PS, EBX=FFFFFFFF 75A68D13 主 mov dword ptr ss:[ebp-0x1C],ebx 75A68D16 主 xor eax,eax FL=PZ, EAX=00000000而我們往上看,看出上面是退出虛擬機(jī)的代碼,特征不要我多說(shuō)了吧,很多pop,然后只有一個(gè)VM_Exit。在往下看看退出puts后緊跟著的是什么:
75A68E4E 主 mov dword ptr ss:[ebp-0x4],-0x2 75A68E55 主 call msvcrt.75A68E6D 75A68E5A 主 mov eax,dword ptr ss:[ebp-0x1C] 75A68E5D 主 call msvcrt.759F987B ECX=75A68E62, EBX=7FFD7000, ESP=0012FF84, EBP=0012FF94, ESI=00000000, EDI=00000000 75A68E62 主 retn ESP=0012FF88 ; 退出puts 0042AB41 主 push 0x7EB991DF ESP=0012FF84 ; 重新進(jìn)入虛擬機(jī) 0042AB46 主 call vmptestc.0041258D ESP=0012FF80 0041258D 主 push edi ESP=0012FF7C 0041258E 主 mov di,0x7063 EDI=00007063 00412592 主 pushfd ESP=0012FF78 00412593 主 push ebx ESP=0012FF74 00412594 主 clc這里我們看到我們退出puts后,緊跟著并沒(méi)有看到調(diào)用我們的EspArg1函數(shù),而是又進(jìn)入虛擬機(jī),難道我們的EspArg1內(nèi)部被VM了,然后我們繼續(xù)往下分析,找下VM_Exit看看。我們直接搜索特征: 提示我們可以搜索popfd,當(dāng)然僅限這里,為什么?
00461852 主 popfd FL=PZ, ESP=0012FF7C 00461853 主 cmovne edi,esi 00461856 主 movsx edi,sp EDI=FFFFFF7C 00461859 主 pop edi ESP=0012FF80, EDI=00000000 0046185A 主 jmp vmptestc.004266A6 004266A6 主 retn ESP=0012FF84 ;退出虛擬機(jī) 00401008 主 mov dword ptr ss:[esp+0x4],vmptestc.00403018 ---------------------------EspArg1 function 00401010 主 retn ESP=0012FF88 0045AAE7 主 push 0x7EB42BBF ESP=0012FF84 ;進(jìn)入虛擬機(jī) 0045AAEC 主 call vmptestc.0041258D ESP=0012FF80 0041258D 主 push edi ESP=0012FF7C 0041258E 主 mov di,0x7063 EDI=00007063嗯什么情況,我們看到退出虛擬機(jī),然后下一條就是我們的EspArg1 function里面的內(nèi)容("原畫(huà)"),然后又進(jìn)入虛擬機(jī)。
push offset HelloWord call crt_puts call EspArg1然后我們可以分析一下有多少次退出虛擬機(jī)的操作,我們可以搜索特征去分析,經(jīng)過(guò)分析:
1.VM_Entery ............ 2.VM_Exit 3.Call puts 4.VM_Entery ........... 5.VM_Exit 6.Call EspArg1 7.VM_Entery ........... 8.VM_Exit我們主要分析的是被VM代碼中存在調(diào)用函數(shù)時(shí)的問(wèn)題,所以其他我們不多管,只管這個(gè)是怎么處理調(diào)用函數(shù)的,現(xiàn)在應(yīng)該可以大致知道是什么調(diào)用的了吧。所以知道為什么有的代碼被VM了,我們還能東扣西扣的了沒(méi)。看到源碼 call puts 與call EspArg1中間可是沒(méi)有代碼的 ,但還是要重新進(jìn)入虛擬機(jī)。
如果您對(duì)該加密/解密軟件感興趣,歡迎加入vmpQQ交流群:740060302
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: