hixiaosheng 发表于 2017-8-15 11:41

VMP v3.0.9过VMware检测

本帖最后由 hixiaosheng 于 2017-8-16 19:00 编辑

前记: 有朋友问到如何过vmp新版检测,随手单步了一下新版确实变化不少。
主要有2个检测点
下面介绍如何手动找关键的Handler来过检测

1. 找VM_CallApi
   MessageBoxExW , 弹出不能运行在虚拟机那个框之后单步返回
0123D97D    FFD0            call eax         ----> 这里下硬件执行断点
0123D97F    8B6C25 FC         mov ebp,dword ptr ss: ----> 返回到这里
0123D983    F9                stc
0123D984    894425 00         mov dword ptr ss:,eax


2. VirtualProtect 之后会走到 cpuid hander
CPUID eax为1时,单步之后ecx 31位代表hypervisor
Running on a hypervisor (always 0 on a real CPU, but also with some hypervisors)
也就是真机31位为0,虚拟机最高位是1也就是0x8*******
详细说明
https://en.wikipedia.org/wiki/CP ... fo_and_Feature_Bits
0122858B   .8B4425 00             mov eax,dword ptr ss:
0122858F   .53                  push ebx
01228590   .0FC1D3                xadd ebx,edx
01228593   .0FA2                  cpuid                   -----> 可以把eax清零
01228595   .F8                  clc
01228596   .66:F7C6 A429          test si,29A4
0122859B   .81ED 0C000000         sub ebp,0C
012285A1   .F9                  stc
012285A2   .894425 0C             mov dword ptr ss:,eax    *******
012285A6   .66:8BC2               mov ax,dx
012285A9   .0FB7C3                movzx eax,bx
012285AC   .80FF 99               cmp bh,99
012285AF   .895C25 08             mov dword ptr ss:,ebx    *******
012285B3   .894C25 04             mov dword ptr ss:,ecx    *******
012285B7   .80DB 5F               sbb bl,5F
012285BA   .895425 00             mov dword ptr ss:,edx      *******
012285BE   .5B                  pop ebx
012285BF   .66:0FBEC2             movsx ax,dl
012285C3   .8DB6 FCFFFFFF         lea esi,dword ptr ds:
012285C9   .8B06                  mov eax,dword ptr ds:
012285CB   .F5                  cmc
012285CC   .33C3                  xor eax,ebx
012285CE   .E9 FD111E00         jmp NOTEPAD_.014097D0

3.
xp:
ntdll.ZwOpenSection
NTSTATUS ZwOpenSection(
_Out_ PHANDLE            SectionHandle,
_In_ACCESS_MASK      DesiredAccess,
_In_POBJECT_ATTRIBUTES ObjectAttributes
);

typedef struct _OBJECT_ATTRIBUTES {
ULONG         Length;
HANDLE          RootDirectory;
PUNICODE_STRING ObjectName;   ----> 这里是 UNICODE "\device\physicalmemory"
ULONG         Attributes;
PVOID         SecurityDescriptor;
PVOID         SecurityQualityOfService;
}OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;

把第一个参数SectionHandle改成0,让其打开失败
NTSTATUS ZwMapViewOfSection(
_In_      HANDLE          SectionHandle,   ---> 这个是上面打开的句柄
_In_      HANDLE          ProcessHandle,
_Inout_   PVOID         *BaseAddress,   ---> 这里有打开硬件信息 "VMware virtual machine VMware, Inc"
_In_      ULONG_PTR       ZeroBits,
_In_      SIZE_T          CommitSize,
_Inout_opt_ PLARGE_INTEGERSectionOffset,
_Inout_   PSIZE_T         ViewSize,
_In_      SECTION_INHERIT InheritDisposition,
_In_      ULONG         AllocationType,
_In_      ULONG         Win32Protect
);

win7:
kernel32.LocalAlloc
kernel32.EnumSystemFirmwareTables
kernel32.GetSystemFirmwareTable

UINT WINAPI GetSystemFirmwareTable(
    _In_DWORD FirmwareTableProviderSignature,
    _In_DWORD FirmwareTableID,
   _Out_ PVOID pFirmwareTableBuffer,   ---> 这里是保存硬件信息的指针,对返回的数据下硬件访问断点
    _In_DWORD BufferSize
);

以上获取硬件特征的地方下硬件访问断点可以遇到下面的字符串检测。
检测特征码
cmp byte ptr ds:,0x69
cmp byte ptr ds:,0x72
cmp byte ptr ds:,74
cmp byte ptr ds:,75
cmp byte ptr ds:,61
cmp byte ptr ds:,6C
cmp byte ptr ds:,42
cmp byte ptr ds:,6F
cmp byte ptr ds:,78
56 69 72 74 75 61 6c 42 6f 78   ===> VirtualBox

cmp byte ptr ds:,56
cmp byte ptr ds:,4D
cmp byte ptr ds:,77
cmp byte ptr ds:,61
cmp byte ptr ds:,72
cmp byte ptr ds:,65
56 4d 77 61 72 65            ===> VMware

cmp byte ptr ds:,50
cmp byte ptr ds:,61
cmp byte ptr ds:,72
cmp byte ptr ds:,61
cmp byte ptr ds:,6C
cmp byte ptr ds:,6C
cmp byte ptr ds:,65
cmp byte ptr ds:,6C
cmp byte ptr ds:,73
50 61 72 61 6c 6c 65 6c 73   ===> Parallels

录了一个gif动画,附件有原始加的NOTEPAD样本。





软硬兼嗜 发表于 2018-7-26 11:44

感谢老师精彩分享!收藏学习!

11689421 发表于 2017-8-15 17:38

hixiaosheng 发表于 2017-8-15 14:25
有VMP3.1.2的加壳程序么

我是在vmp官网下载的 VMP 3.1.2 demo版本.
因为用demo版本加壳后的程序不能移植,所以将 VMP 3.1.2 demo版本安装到VMWARE虚拟机里,然后用VMP 3.1.2 demo版本加壳随便一个exe程序即可!
VMP 3.1.2 demo版本 链接:http://pan.baidu.com/s/1o7HDbke 密码:bpix

nihuge 发表于 2017-8-15 11:48

我要学破解了,好牛的样子

huangxu 发表于 2017-8-15 12:23

学习下,谢谢分享

zby03772015 发表于 2017-8-15 12:43

学习一下 晚上回去试试

11689421 发表于 2017-8-15 13:50

本帖最后由 11689421 于 2017-8-15 13:59 编辑

xiaosheng老师,VMP 3.0.9是2016年7月21日更新的,    新版是VMP 3.1.2 , 更新于2017年3月29日

hixiaosheng 发表于 2017-8-15 14:25

11689421 发表于 2017-8-15 13:50
xiaosheng老师,VMP 3.0.9是2016年7月21日更新的,    新版是VMP 3.1.2 , 更新于2017年3月29日

有VMP3.1.2的加壳程序么

w470236189 发表于 2017-8-15 14:49

发出来看看

arekre47 发表于 2017-8-15 15:57

新手,准备学习下。有问题就来逛逛

mayl8822 发表于 2017-8-15 15:59

感谢分享

dagelaokao99 发表于 2017-8-15 16:26

以学习,感谢分享!
页: [1] 2 3 4 5 6 7
查看完整版本: VMP v3.0.9过VMware检测