wo4mt 发表于 2019-9-3 22:16

网络验证虚拟机加密的CM, 带一张7天的卡密。

本帖最后由 wo4mt 于 2019-9-11 00:02 编辑

因为卡密已经到期, 所以结贴。

观察了一下后台发现每天,每晚凌晨都还有人在尝试,真是非常感谢大家。

另外验证这一块简单说一下,样本有反调试,硬件断点检测,每一环每一个步骤都有动态算号机制,这个样本的原始PE使用了加密跟压缩两个选项,IAT使用轻度动态分配加密,原始PE文件只有一个水印,没有使用 自效验SDK 跟 脱壳检测SDK 跟 抽取代码SDK。
如对本壳有兴趣可以私信我哟,欢迎大家找我交流。

这里是分割线 -----------------------------------------------------------------------------------------------------------------------------------------------------

欢迎大佬们尝试脱壳, 爆破, 还原算法.

cm部分有人破解出了原始key,现公布cm的算法(其实就是一个if)

    printf("input:");

    fflush(stdin);
    std::cin.getline(Input, 17);
    fflush(stdin);
   
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;

    if (Input == 's' && Input == 'p' && Input == 'r'&& Input == 'o'&& Input == 't'
      && Input == 'e'&& Input == 'c'&& Input == 't')
    {
      MessageBox(0, "success!\n", "info", MB_OK);
    }
    else
    {
      MessageBox(0, "fail!\n", "info", MB_OK);
    }

虚拟机平坦化了addn32 16 8, 但没有对add32 16 8做平坦化。

谢谢大佬的支持。

wo4mt 发表于 2019-9-6 15:58

梦游枪手 发表于 2019-9-6 12:14
针对SOD做了检测,如果检测到调试器,登录时就崩溃。
用了NtSetInformationThread 0x11和NtQueryInformati ...

cm源码:
    printf("input:");

    fflush(stdin);
    std::cin.getline(Input, 17);
    fflush(stdin);
   
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;
    Input = Input;

    if (Input == 's' && Input == 'p' && Input == 'r'&& Input == 'o'&& Input == 't'
      && Input == 'e'&& Input == 'c'&& Input == 't')
    {
      MessageBox(0, "success!\n", "info", MB_OK);
    }
    else
    {
      MessageBox(0, "fail!\n", "info", MB_OK);
    }

add32,add16,add8 没有平坦化, 谢谢大佬

梦游枪手 发表于 2019-9-6 12:14

本帖最后由 梦游枪手 于 2019-9-6 12:31 编辑

针对SOD做了检测,如果检测到调试器,登录时就崩溃。
用了NtSetInformationThread 0x11和NtQueryInformationProcess 0x1e,还有GetTickCount检测,但是过了这些检测也不能在OD运行CM,不知道还有什么检测。
00A7F1DC 调用NtSetInformationThread,在返回处00A7FB1F 修改eax。
00A7B7B8调用NtQueryInformationProcess,在返回处00A808F8 把的值改成4。
虽然不能在OD里运行,但是可以事先开着OD附加了,不会被NtSetInformationThread干扰。
CM的部分比较好破解,等CM显示input后附加,在0060D1BA 下断,输入字符串回车后停下,在vm_add handle 004AC4DE下断,观察堆栈,逐步修改input, 多跟一段时间就能跟出key了。
key:?s?p?r?o?t?e?c?t 问号表示任意字符。

网络验证部分还在想办法。
吐槽:现在看着那一堆handle就肝疼{:1_909:}。

wo4mt 发表于 2019-9-4 09:32

发生了什么,又被删除了

wo4mt 发表于 2019-9-4 13:39

豆战剩佛 发表于 2019-9-4 13:02
求破嫌疑

到底什么是求破嫌疑?

灵影 发表于 2019-9-4 16:01

没写出要达到的目的,自己的思路。   也没图片说明。啥都没 自己看 版规

wo4mt 发表于 2019-9-4 16:48

灵影 发表于 2019-9-4 16:01
没写出要达到的目的,自己的思路。   也没图片说明。啥都没 自己看 版规

我没想那么多了,给卡密就是方便你们破解的,目的就是随便输入什么卡密都可以登录或者是绕过服务器直接脱壳运行呀。然后在脱壳的基础上破解CM呀。玩法:
1 脱壳后直接运行
2 尝试绕过服务器直接运行 (随意输入卡密)
3 爆破CM 或者 还原出算法

星空科技 发表于 2019-9-4 21:46

膜拜大神。我是写不出来这么厉害的东西。。

Peerless 发表于 2019-9-4 22:39

梦游枪手 发表于 2019-9-4 23:26

这是要破两个验证啊,还有那个什么sprotect是楼主写的?

wo4mt 发表于 2019-9-5 00:08

Peerless 发表于 2019-9-4 22:39
第二张图怎么那么像虚拟机启动器?

第二张图是卡密登录啊

wo4mt 发表于 2019-9-5 00:09

梦游枪手 发表于 2019-9-4 23:26
这是要破两个验证啊,还有那个什么sprotect是楼主写的?

嗯 验证只有一个 就是看能不能脱壳 脱壳后能不能正常运行 后面的是cm嘛
页: [1] 2 3
查看完整版本: 网络验证虚拟机加密的CM, 带一张7天的卡密。