VMProtect使用小计【二】 – 加壳查看

时间:2023-03-10 07:06:51
VMProtect使用小计【二】 – 加壳查看

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使用小计【二】 – 加壳查看

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