首页
社区
课程
招聘
[旧帖] 求个VMProtect 将文件做成一机一码的演示 0.00雪花
发表于: 2014-6-23 15:06 7958

[旧帖] 求个VMProtect 将文件做成一机一码的演示 0.00雪花

2014-6-23 15:06
7958
求个VMProtect 将文件做成一机一码的演示,看了半天没看明白,希望有高人指点

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 13606
活跃值: (4398)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
看个大概吧.理解就行.代码很挫哦.
FILE * fp;
char serial[4096];
fp = fopen("key.key","rb");
if (fp)
{
fread(serial,1,ftell(fp), fp);
fclose(fp);
int res = VMProtectSetSerialNumber(serial);
if (res)
{
MessageBox(NULL,NULL,NULL,NULL);
}
}
else
{
int nSize = VMProtectGetCurrentHWID(NULL, 0);
char *buf = new char[nSize];
VMProtectGetCurrentHWID(buf, nSize);
MessageBox(NULL, buf,NULL, NULL);
delete [] buf;
}



return 0;
2014-6-23 20:17
0
雪    币: 157
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
多谢,多谢,关键还不知怎么操作流程,代码可以网上找得到
2014-6-23 21:04
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
vmp对文件校验有三种方式:
1,文件校验
2,内存校验
3,解码校验

第一种就是map一下文件 然后对文件的几个区域进行校验,一般是四个

第二种也比较好理解,就是针对壳代码段的代码进行校验,以对抗内存断点和内存patch,这个校验的区域视壳代码大小而定

第三种就是在把原程序解压以后 对解码后的程序代码和数据进行校验,防止内存补丁对原程序的修改

这样三种校验在很大程度上防范了程序被破解和修改。但还是有漏洞的,这里就介绍一下如何过掉这些校验。

先说下文件校验:

之前也有人写个相关的教程说如何过掉文件校验,最简单的方法就是把输入表中的GetModuleFileNameW改成GetModuleFileNameA 这样使得VMP无法获取文件路径,接着后面CreateFileW返回的自然也就是-1,这样文件校验就可以过去了。不过这个方法到后期的版本貌似是不管用了。这里我介绍一个统一的方法。

进行这三种校验handler是GetHash这个handler,可以用fkvmp找到。
这个handler的主要功能就是对一段给定大小和起始地址的数据进行自定义的hash运算。 得到的结果在虚拟机里面进行比较。

除去文件校验以外,其他两种校验因为涉及到区域比较多,所以均在程序里面对应一个表,这个表包含多个大小为0xC的结构:
+0 RVA
+4 size
+8 hash

这个表是经过加密的,使用的时候在虚拟机里面逐个解密,http://www.sytm.net/jiejuefangan/这个表就是我们的突破口。

在进行校验的时候,程序会循环读取这个表的内容,解码后进行校验。这样就意味着有一个循环变量来指示循环的结束,也就是这个表的大小。幸运的是,vmp在进行后面两次校验之前会首先校验其对应的hash表 来保证hash表的合法性,这就给了我们机会找到这个表的位置和大小。

值得注意是:在内存校验的时候,循环变量用的是表项数,也就是表的大小/0xC, 而文件校验的时候使用的是这个表的大小

知道表的位置和大小了,就可以处理了,主要有两个思路:
1,把hash表的每一项都改成相同的,也就是让程序一直在校验同一个地方。然后再修改下gethash这个handler,让他在校验hash表的时候返回正确的值即可。

2,找到循环变量,把变量改成最小值,让程序以为已经读完整个表,继而结束校验。

这两种思路都是可行的,视频只演示一下第二种方法。
下载地址:
http://115.com/file/e6evhq98#%E8%BF%87%E6%A0%A1%E9%AA%8C.rar
2014-6-24 16:52
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
vmprotect主要还是加密,一机一码找zp或者se
2014-11-13 10:42
0
游客
登录 | 注册 方可回帖
返回
//