VMProtect使用小计【二】 【转】
版权声明:
本文为博主学习过程中整理发布,如有侵权请告知
更新时间:
2018-05-24 12:09:21
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
Release
我这里使用的是Release的版本,Debug的版本分析没有多少的必要,因为程序发布过之后就是Release的,我们先看一下这个文件
原程序分析
使用OD打开VMProtectDemo1.exe
原版程序 因为在我们的程序使用到了MessageBox
,所以这里我们就下bp MessageBoxW
断点。为什么是MessageBoxW
这是因为我刚开始是用的VS2008生成的默认工程,默认工程是Unicode
的程序,所以这里就断MessageBoxW
运行程序
使用F9
运行程序,让程序跑起来,这时会断到我们的MessageBoxW
的断点上,我们按Alt+F9
返回到用户代码。
013D1000 >/$ 68 B8213D01 PUSH OFFSET VMProtec.??_C@_0BH@NEBMIKLA@>; ASCII "VMProtec Tag By Sollyu" 013D1005 |. FF15 B0203D01 CALL DWORD PTR DS:[<&VMProtectSDK32.VMPr>; VMProt_1.VMProtectBeginVirtualizationLockByKey 013D100B |. 6A 40 PUSH 40 ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL 013D100D |. 68 D0213D01 PUSH OFFSET VMProtec.??_C@_1BE@GCDIBBA@?>; |Title = "By:Sollyu" 013D1012 |. 68 E4213D01 PUSH OFFSET VMProtec.??_C@_1CA@BBLPMEIO@>; |Text = "VMProtect Test." 013D1017 |. 6A 00 PUSH 0 ; |hOwner = NULL 013D1019 |. FF15 A4203D01 CALL DWORD PTR DS:[<&USER32.MessageBoxW>>; \MessageBoxW 013D101F |. FF15 AC203D01 CALL DWORD PTR DS:[<&VMProtectSDK32.VMPr>; VMProt_1.VMProtectEnd
可以很清除的看到我们的MessageBoxW
。
保护程序分析
使用OD分析
和原程序分析
一样,下bp MessageBoxW
断点,F9运行调试 当执行到MessageBoxW
的时候,我们可以发现完全不是我们想要的代码了,而且出现了错误调试。
我们可以在VMProtect
找到这段文本的说明,首先要开启专家模式
可以看到这是在说文件损坏
,禁止调试的一种
IDA分析
使用OD动态调试不行,我们在使用IDA看一下效果。这里是两个程序的对比图 原程序
保护程序
可以看到,已经改的面目全非
了。