VMProtect使用小计【二】 【转】

来源:赵克立博客 分类: C/C++ 标签:VMProtect发布时间:2018-05-24 12:00:33最后更新:2018-05-24 12:09:21浏览:1612
版权声明:
本文为博主学习过程中整理发布,如有侵权请告知
更新时间:
2018-05-24 12:09:21
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

Release

我这里使用的是Release的版本,Debug的版本分析没有多少的必要,因为程序发布过之后就是Release的,我们先看一下这个文件

VMProtect使用小计【二】

原程序分析

使用OD打开VMProtectDemo1.exe原版程序 因为在我们的程序使用到了MessageBox,所以这里我们就下bp MessageBoxW断点。为什么是MessageBoxW这是因为我刚开始是用的VS2008生成的默认工程,默认工程是Unicode的程序,所以这里就断MessageBoxW

VMProtect使用小计【二】

运行程序

使用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

VMProtect使用小计【二】

保护程序分析

使用OD分析

原程序分析一样,下bp MessageBoxW断点,F9运行调试 当执行到MessageBoxW的时候,我们可以发现完全不是我们想要的代码了,而且出现了错误调试。

VMProtect使用小计【二】

我们可以在VMProtect找到这段文本的说明,首先要开启专家模式

VMProtect使用小计【二】

可以看到这是在说文件损坏,禁止调试的一种

VMProtect使用小计【二】

IDA分析

使用OD动态调试不行,我们在使用IDA看一下效果。这里是两个程序的对比图 原程序

VMProtect使用小计【二】

保护程序

VMProtect使用小计【二】

可以看到,已经改的面目全非了。



微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python