zcm2005 发表于 2017-8-31 17:07

发一个CM,目测较难【已被破解】

本帖最后由 zcm2005 于 2017-9-3 10:37 编辑

使用说明:用户号码是大于等于0、小于等于4294967295的数字,密码是十五位数字,都不能包含字母。
有兴趣可以尝试找出算法。
原版例子:
用户号码:1 密码:174094882455171
修改例子:
用户号码:1 密码:351391667411090
加壳用的是se,也有没加壳的版本。
失败例子:
http://ww3.sinaimg.cn/large/0060lm7Tgy1fj30gm7aqnj30r70e8a9z.jpg
成功例子:
http://ww3.sinaimg.cn/large/0060lm7Tgy1fj30gm6spyj30r70e874k.jpg
源码:http://pan.baidu.com/s/1qYiEnj2(密码:pnE$*c)eCAY+ke()

修改了一些东西,增加了难度,无壳。
源码:http://pan.baidu.com/s/1mhM1Nvy(密码:+v91pgQYn=%!S0a)

zbnysjwsnd8 发表于 2017-9-3 10:37

本帖最后由 zbnysjwsnd8 于 2017-9-3 10:41 编辑

zcm2005 发表于 2017-9-3 10:35
应该是对的,中间我也不太懂……但我不是这样编的。
rand()/3%10我的是这样
我只是把代码优化了一下
你那个用了链表
我没加到keygen里面。
还有那个乘法的 我也不知道翻译成什么样的C代码才好。
所以就直接用汇编写了
00FF142F|.FF75 C8       push                         ; /seed = 0x0
00FF1432|.FF15 3431FF00 call dword ptr ds:[<&api-ms-win-crt-util>; \srand
00FF1438|.6A 08         push 0x8
00FF143A|.E8 650C0000   call hardCM.00FF20A4
00FF143F|.8BD8          mov ebx,eax
00FF1441|.895D D4       mov ,ebx
00FF1444|.FF15 3831FF00 call dword ptr ds:[<&api-ms-win-crt-util>; [rand
00FF144A|.8BC8          mov ecx,eax
00FF144C|.B8 56555555   mov eax,0x55555556
00FF1451|.F7E9          imul ecx                                 ;hardCM.<ModuleEntryPoint>
00FF1453|.B9 0A000000   mov ecx,0xA
00FF1458|.8BC2          mov eax,edx                              ;hardCM.<ModuleEntryPoint>
00FF145A|.C1E8 1F       shr eax,0x1F
00FF145D|.03C2          add eax,edx                              ;hardCM.<ModuleEntryPoint>
00FF145F|.99            cdq
00FF1460|.F7F9          idiv ecx                                 ;hardCM.<ModuleEntryPoint>
00FF1462|.B9 0E000000   mov ecx,0xE
00FF1467|.8913          mov dword ptr ds:,edx               ;hardCM.<ModuleEntryPoint>
00FF1469|.E8 B2FCFFFF   call hardCM.00FF1120

00FF1120/$56            push esi                                 ;hardCM.<ModuleEntryPoint>
00FF1121|.57            push edi                                 ;hardCM.<ModuleEntryPoint>
00FF1122|.6A 08         push 0x8                                 ; /Arg1 = 00000008
00FF1124|.8BF9          mov edi,ecx                              ; |hardCM.<ModuleEntryPoint>
00FF1126|.E8 790F0000   call hardCM.00FF20A4                     ; \hardCM.012020A4
00FF112B|.83C4 04       add esp,0x4
00FF112E|.8BF0          mov esi,eax
00FF1130|.FF15 3831FF00 call dword ptr ds:[<&api-ms-win-crt-util>; [rand
00FF1136|.8BD0          mov edx,eax
00FF1138|.B9 0A000000   mov ecx,0xA
00FF113D|.B8 56555555   mov eax,0x55555556
00FF1142|.F7EA          imul edx                                 ;hardCM.<ModuleEntryPoint>
00FF1144|.8BC2          mov eax,edx                              ;hardCM.<ModuleEntryPoint>
00FF1146|.C1E8 1F       shr eax,0x1F
00FF1149|.03C2          add eax,edx                              ;hardCM.<ModuleEntryPoint>
00FF114B|.99            cdq
00FF114C|.F7F9          idiv ecx                                 ;hardCM.<ModuleEntryPoint>
00FF114E|.8916          mov dword ptr ds:,edx               ;hardCM.<ModuleEntryPoint>
00FF1150|.83FF 01       cmp edi,0x1
00FF1153|.7C 10         jl short hardCM.00FF1165
00FF1155|.8D4F FF       lea ecx,dword ptr ds:
00FF1158|.E8 C3FFFFFF   call hardCM.00FF1120
00FF115D|.8946 04       mov dword ptr ds:,eax
00FF1160|.8BC6          mov eax,esi                              ;hardCM.<ModuleEntryPoint>
00FF1162|.5F            pop edi                                  ;kernel32.74F738F4
00FF1163|.5E            pop esi                                  ;kernel32.74F738F4
00FF1164|.C3            retn
00FF1165|>5F            pop edi                                  ;kernel32.74F738F4
00FF1166|.C746 04 00000>mov dword ptr ds:,0x0
00FF116D|.8BC6          mov eax,esi                              ;hardCM.<ModuleEntryPoint>
00FF116F|.5E            pop esi                                  ;kernel32.74F738F4
00FF1170\.C3            retn

zbnysjwsnd8 发表于 2017-9-2 15:22

本帖最后由 zbnysjwsnd8 于 2017-9-2 15:47 编辑

我看的CM是修改版的(Release.zip)。
2308
517410618515878

Keygen:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    unsigned int User;
    int r;
    int key;
    scanf("%d",&User);
    if(User < 0)
      return 0;
        if(User > 4294967295)
                return 0;
    srand(User);
    for(int i = 0;i < 15;i++)
    {
      r = rand();
      _asm
      {
            mov ecx,r
            mov eax,0x55555556
            imul ecx
            mov r,edx
      }
      r = r + (r >> 0x1F);
      r = r % 10;
      key = r;
    }
    for(int i = 0;i < 15;i++)
      printf("%d",key);
    while(1);
    return 0;
}

wang65424773 发表于 2017-8-31 17:11

飘一飘 发表于 2017-9-1 17:06

秒破,没什么难度!

zcm2005 发表于 2017-9-1 17:24

飘一飘 发表于 2017-9-1 17:06
秒破,没什么难度!

哇!那发一组密码看看

Ftimes 发表于 2017-9-1 21:25

我猜待会会有人问cm是什么

娃哈哈没奶 发表于 2017-9-1 21:48

技术的交流呀

苏紫方璇 发表于 2017-9-1 22:59

电脑没装VS2015,楼主能不能编译一个Release的或者不需要运行库版本的

zcm2005 发表于 2017-9-2 10:21

苏紫方璇 发表于 2017-9-1 22:59
电脑没装VS2015,楼主能不能编译一个Release的或者不需要运行库版本的

已经加上了,但是只有修改后的了,原来的没了

慕容影 发表于 2017-9-2 11:24

zcm2005 发表于 2017-9-2 13:50

慕容影 发表于 2017-9-2 11:24
死码还是动态的

由用户号码决定密码
页: [1] 2 3
查看完整版本: 发一个CM,目测较难【已被破解】