飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 8310|回复: 3

[原创] 无源码给程序加VMP壳(硬件锁)的个人想法

[复制链接]
  • TA的每日心情
    开心
    2021-2-19 14:43
  • 签到天数: 69 天

    [LV.6]常住居民II

    发表于 2018-4-12 10:14:36 | 显示全部楼层 |阅读模式
    本帖最后由 zeknight 于 2018-4-12 10:16 编辑

    由于时常需要对软件做一些小的限制(主要防止分发出去的程序被用于商业用途),在仔细阅读了pxhb 的《无源码给程序加VMProtect授权 》后,觉得还可以用另一种方式利用VMP进行加密,主要是针对硬件锁部分:


    测试环境:Windows 7 32

    工具:StudyPE+ x86

    样本:notepad.exe

    详细步骤:
    一、关于猜想的测试:

    1、 VMP的示例测试:我们可以在VMP的帮助中找到对硬件锁的范例:

    Licensingsystem-Step 1.9: Hardware lock里面有这样的例子

    [C++] 纯文本查看 复制代码
    int main(int argc, char **argv)
    {
            int nSize = VMProtectGetCurrentHWID(NULL, 0);
            char *buf = new char[nSize];
            VMProtectGetCurrentHWID(buf, nSize);
            printf("HWID: %s\n", buf);
            delete [] buf;
            return 0;
    }
    


    这个例子在程序未加VMP壳以前得到的是HWID: myhwid

    加壳以后得到的就是目标机器的硬件锁编码

    我们利用studyPE查看编译后的程序可以发现,导入表中有以下函数:VMProtectSDK32.dll->VMProtectGetCurrentHWID

    2、 该函数的利用:

    为了更为简单的利用这个函数,我们可以在程序的新区段中构造一个利用该函数的判断,达到直接让程序匹配目标计算机的目的。
    相对于《无源码给程序加VMProtect授权 》来说修改量应该会大大减少,当然困难的地方在于将C++程序代码转换成ASM代码(这个是对我来说)。

    二、实际操作:

    第1步:添加导入函数利用StudyPE+ x86增加notepad的导入函数,添加函数的时候只需要添加VMProtectSDK32.dll里的 VMProtectGetCurrentHWID这一个函数就行了。

    第2步:添加区段       利用StudyPE+ x86追加notepad的区段,区段的名称随你高兴了,大小根据你后面代码的长度而定,我个人觉得默认应该够你使用了。

    第3步:编写代码              以下是我个人写的一个例子(大神勿喷,我C++也没有学多久)

    [C++] 纯文本查看 复制代码
    int main(int argc, char **argv)
    {
    	int nSize = VMProtectGetCurrentHWID(NULL, 0);
    	char *buf = new char[nSize];
    	VMProtectGetCurrentHWID(buf, nSize);
    	char *UID="3J4fvIm4Yyd/qTJ9tvv9fg=="; //用户的机器码
    	if (*UID==*buf)
    	{
    		MessageBox(NULL,TEXT("成功"),TEXT("警告"),MB_OKCANCEL);//添加你想做的事情
    }
    	delete [] buf;
    	delete [] UID;
    	return 0;
    

    注意:如果你是用来测试的话,需要编译以后加上VMP壳才能使用。

    第4步:编写ASM代码      
    这个就看有没有大神能写了,我只能写点简单的,这个就靠你们补全了。

    第5步:在程序关键地方设置跳转      
    在程序的关键代码处设置跳转,直接跳转到你新增的区段,完成你想做的事情以后再跳回去。

    第6步:加壳      
    这一步非常关键,如果没有加VMP的壳子是会出错的,程序也不能正常运行,请特别注意。

    结语:这里只是谈谈个人的想法,欢迎大家一起探讨,当然也有很多其它的方法可以实现这样的加密,比如hook、捆绑之类的……

    评分

    参与人数 1威望 +8 飘云币 +8 收起 理由
    wgz001 + 8 + 8 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-10-21 17:30
  • 签到天数: 747 天

    [LV.9]以坛为家II

    发表于 2018-4-12 10:38:14 | 显示全部楼层
    一看VMP就头大,谢谢楼主分享。

    点评

    我不是破解VMP,是利用VMP加壳!!  详情 回复 发表于 2018-4-12 11:33
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-26 11:14
  • 签到天数: 459 天

    [LV.9]以坛为家II

    发表于 2018-4-12 11:21:27 | 显示全部楼层
    谢谢表哥分享源码
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-2-19 14:43
  • 签到天数: 69 天

    [LV.6]常住居民II

     楼主| 发表于 2018-4-12 11:33:25 | 显示全部楼层
    追梦 发表于 2018-4-12 10:38
    一看VMP就头大,谢谢楼主分享。

    我不是破解VMP,是利用VMP加壳!!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表