首页
社区
课程
招聘
[原创]继续简单cm
发表于: 2010-7-17 17:20 7387

[原创]继续简单cm

2010-7-17 17:20
7387
上次发的cm的升级版本。。
写gui让我依旧很蛋疼。。还是cmd界面好。。

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
name: yingyue
key : 3624951

嗯,再看了一下,貌似里面还有东西 ??
2010-7-17 18:59
0
雪    币: 302
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没有东西了。。只有算法。。
2010-7-17 22:45
0
雪    币: 136
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
name: john
key : 3920137

貌似注册码算法如下:

int  MakeRegcode(DWORD dwName1,DWORD dwName2,DWORD dwName3,DWORD dwName4)
{

       
        int a  =  ((dwName1+dwName2) | ( (dwName4*dwName3+dwName3) ^ 0x21 ))|((dwName3 +0x33 ) ^0x1);

        a =   ((((a *dwName2+dwName4+0x8) +(a*dwName2))^0x9) | 0x96)+(a *dwName2+dwName4+0x8)-1;

        return a ;

}

也可以这样搞:

int _declspec(naked)  MakeRegcode(DWORD dwName1,DWORD dwName2,DWORD dwName3,DWORD dwName4)
{

        _asm
        {
                PUSH EBP
                MOV EBP,ESP
                MOV EAX,DWORD PTR SS:[EBP+0x8]
                ADD EAX,DWORD PTR SS:[EBP+0xC]
                MOV ECX,DWORD PTR SS:[EBP+0x14]
                IMUL ECX,DWORD PTR SS:[EBP+0x10]
                ADD ECX,DWORD PTR SS:[EBP+0x10]
                XOR ECX,0x21
                OR EAX,ECX
                MOV EDX,DWORD PTR SS:[EBP+0x10]
                ADD EDX,0x33
                XOR EDX,1
                OR EAX,EDX
                MOV DWORD PTR SS:[EBP+0x8],EAX
                MOV EAX,DWORD PTR SS:[EBP+0x8]
                IMUL EAX,DWORD PTR SS:[EBP+0xC]
                MOV ECX,DWORD PTR SS:[EBP+0x14]
                LEA EDX,DWORD PTR DS:[EAX+ECX+0x8]
                MOV DWORD PTR SS:[EBP+0x10],EDX
                MOV EAX,DWORD PTR SS:[EBP+0x8]
                IMUL EAX,DWORD PTR SS:[EBP+0xC]
                ADD EAX,DWORD PTR SS:[EBP+0x10]
                XOR EAX,0x9
                OR EAX,0x96
                MOV DWORD PTR SS:[EBP+0x14],EAX
                MOV ECX,DWORD PTR SS:[EBP+0x14]
                MOV EDX,DWORD PTR SS:[EBP+0x10]
                LEA EAX,DWORD PTR DS:[EDX+ECX-1]
                MOV DWORD PTR SS:[EBP+0x8],EAX
                MOV EAX,DWORD PTR SS:[EBP+0x8]
                POP EBP
                retn
        }

}

我也蛋痛了
2010-7-22 07:42
0
雪    币: 302
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你让我更加蛋疼了。。。
2010-7-22 15:21
0
雪    币: 7659
活跃值: (2293)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6




注册信息
name:xuefeng         code:3683991


注册过程
00402287  |.  0FBE8D 30FFFF>movsx   ecx, byte ptr [ebp-0xD0]         ;  ecx = x(78) *用户名的第一位
0040228E  |.  898D 24FFFFFF mov     dword ptr [ebp-0xDC], ecx        ;  ecx 放入 ebp-0xDC
00402294  |.  0FBE95 31FFFF>movsx   edx, byte ptr [ebp-0xCF]         ;  edx = u(75) *用户名的第二位
0040229B  |.  8955 FC       mov     dword ptr [ebp-0x4], edx         ;  edx 放入 ebp-0x4
0040229E  |.  0FBE85 32FFFF>movsx   eax, byte ptr [ebp-0xCE]         ;  eax = e(65) *用户名的第三位
004022A5  |.  8985 28FFFFFF mov     dword ptr [ebp-0xD8], eax        ;  eax 放入 ebp-0xD8
004022AB  |.  0FBE8D 33FFFF>movsx   ecx, byte ptr [ebp-0xCD]         ;  ecx = f(66) *用户名的第四位
004022B2  |.  898D 2CFFFFFF mov     dword ptr [ebp-0xD4], ecx        ;  ecx 放入 ebp-0xD4
004022B8  |.  8B95 2CFFFFFF mov     edx, dword ptr [ebp-0xD4]        ;  从 (ebp-0xD4) 取出 (66) 放入 edx
004022BE  |.  52            push    edx                              ; /edx 入栈
004022BF  |.  8B85 28FFFFFF mov     eax, dword ptr [ebp-0xD8]        ; |从 (ebp-0xD8) 取出 (65) 放入 eax
004022C5  |.  50            push    eax                              ; |eax 入栈
004022C6  |.  8B4D FC       mov     ecx, dword ptr [ebp-0x4]         ; |从 (ebp-0x4)  取出 (75) 放入 ecx
004022C9  |.  51            push    ecx                              ; |ecx 入栈
004022CA  |.  8B95 24FFFFFF mov     edx, dword ptr [ebp-0xDC]        ; |从 (ebp-0xDC) 取出 (78) 放入 edx
004022D0  |.  52            push    edx                              ; |edx 入栈
004022D1  |.  E8 2AFFFFFF   call    00402200                         ; \算法CALL
004022D6  |.  83C4 10       add     esp, 0x10
004022D9  |.  A3 544A4200   mov     dword ptr [0x424A54], eax
004022DE  |.  32C0          xor     al, al


算法过程
00402200  /$  55            push    ebp
00402201  |.  8BEC          mov     ebp, esp
00402203  |.  8B45 08       mov     eax, dword ptr [ebp+0x8]
00402206  |.  0345 0C       add     eax, dword ptr [ebp+0xC]         ;  (78 + 75) 放入 eax
00402209  |.  8B4D 14       mov     ecx, dword ptr [ebp+0x14]        ;  (66) 放入 ecx
0040220C  |.  0FAF4D 10     imul    ecx, dword ptr [ebp+0x10]        ;  (66 * 65) 放入 ecx
00402210  |.  034D 10       add     ecx, dword ptr [ebp+0x10]        ;  (ecx + 65) 放入 ecx
00402213  |.  83F1 21       xor     ecx, 0x21                        ;  (ecx xor 21) 放入 ecx
00402216  |.  0BC1          or      eax, ecx                         ;  (eax=ED or ecx=2882) 放入 eax
00402218  |.  8B55 10       mov     edx, dword ptr [ebp+0x10]        ;  (65) 放入 edx
0040221B  |.  83C2 33       add     edx, 0x33                        ;  (edx=65 + 33) 放入 edx
0040221E  |.  83F2 01       xor     edx, 0x1                         ;  (edx=98 xor 1) 放入 edx
00402221  |.  0BC2          or      eax, edx                         ;  (eax=28EF or edx=99) 放入 eax
00402223  |.  8945 08       mov     dword ptr [ebp+0x8], eax         ;  (eax=28FF) 放入 ebp+0x8
00402226  |.  8B45 08       mov     eax, dword ptr [ebp+0x8]         ;  (ebp+0x8=28FF) 放入 eax
00402229  |.  0FAF45 0C     imul    eax, dword ptr [ebp+0xC]         ;  (eax=28FF * 75) 放入 eax
0040222D  |.  8B4D 14       mov     ecx, dword ptr [ebp+0x14]        ;  (ebp+0x14=66) 放入 ecx
00402230  |.  8D5408 08     lea     edx, dword ptr [eax+ecx+0x8]     ;  (eax+ecx+0x8) 放入 edx
00402234  |.  8955 10       mov     dword ptr [ebp+0x10], edx        ;  (edx=0012BCF9) 放入 ebp+0x10
00402237  |.  8B45 08       mov     eax, dword ptr [ebp+0x8]         ;  (ebp+0x8=28FF) 放入 eax
0040223A  |.  0FAF45 0C     imul    eax, dword ptr [ebp+0xC]         ;  (eax=28FF * 75) 放入 eax
0040223E  |.  0345 10       add     eax, dword ptr [ebp+0x10]        ;  (eax=12BC8B + 12BCF9) 放入 eax
00402241  |.  83F0 09       xor     eax, 0x9                         ;  (eax=257984 xor 9) 放入 eax
00402244  |.  0D 96000000   or      eax, 0x96                        ;  (eax=25798D or 96) 放入 eax
00402249  |.  8945 14       mov     dword ptr [ebp+0x14], eax        ;  (eax=25799F) 放入 ebp+0x14
0040224C  |.  8B4D 14       mov     ecx, dword ptr [ebp+0x14]        ;  (ebp+0x14) 放入 ecx
0040224F  |.  8B55 10       mov     edx, dword ptr [ebp+0x10]        ;  (ebp+0x10) 放入 edx
00402252  |.  8D440A FF     lea     eax, dword ptr [edx+ecx-0x1]     ;  (edx+ecx-0x1) 放入 eax
00402256  |.  8945 08       mov     dword ptr [ebp+0x8], eax         ;  (eax=00383697) 放入 ebp+0x8
00402259  |.  8B45 08       mov     eax, dword ptr [ebp+0x8]         ;  (ebp+0x8) 放入 eax
0040225C  |.  5D            pop     ebp
0040225D  \.  C3            retn

比较过程
004023A6  |.  8945 EC       mov     dword ptr [ebp-0x14], eax        ;  假码的十六进制(499602D2) 放入 (ebp-14)
004023A9  |.  8B45 EC       mov     eax, dword ptr [ebp-0x14]        ;  从 (ebp-0x14) 取出假码的十六进制(499602D2) 放入 eax
004023AC  |.  50            push    eax                              ;  eax入栈
004023AD  |.  8B0D 544A4200 mov     ecx, dword ptr [0x424A54]        ;  从 (0x424A54) 取出真码的十六进制(383697) 放入 ecx
004023B3  |.  51            push    ecx                              ;  ecx入栈
004023B4  |.  E8 57FFFFFF   call    00402310                         ;  注册码验证CALL,正确返回(1)、错误返回(0)


算法流程
var A1, A2, A3, A4
var C1, C2, C3, Result
C1 = ((((A1 + A2) or (((A4 * A3) + A3) xor 21)) or ((A3 + 33) xor 1)) * A2)
C2 = C1 + A4 - 8
C3 = (((( C1 + C2) xor 9) or 96) + C2) - 1
Result = C3


另外4楼的兄弟写的C代码好像不对呵呵,可能是我看不太懂吧!
C语言我不会,如果哪位会C的朋友可以验证4楼朋友的代码是否正确!
如果要是不对的话容易误导看文章的人!
上传的附件:
2010-7-25 03:15
0
雪    币: 302
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
好详细的分析啊。。
算法我是这样写的
int sf(int a,int b,int c,int d)
{
	a= a+b | 0x21 ^ c+d*c | 0x33 +c^1;
	c=a*b+1*8+d;
	d=0x96 | c +a*b ^0x8+1;
	a=c+d-1;
	return a ;
}
2010-7-25 10:37
0
雪    币: 136
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
你没测试,就凭感觉来结论吗?有点不严谨的态度
2010-7-26 09:16
0
雪    币: 7659
活跃值: (2293)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
不是没测试 是测试过了 因为我不怎么会C语言所以,怎么测试都无法通过呵呵!
所以采用好像 ,如果我要是会C我就不是说好像了! 那就可以完全下结论了不是吗!
2010-7-26 17:24
0
雪    币: 7659
活跃值: (2293)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
对了你的CM是不是应该判断下用户名长度? 你的这个现在如果是 一字节的用户名 那注册码永远都是158
用户名 a~z A~Z 0~9 加上英文符号! 都可以用158注册!
2010-7-26 17:29
0
雪    币: 136
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
一句话 : I  FULE YOU    (此话题就此打住)
2010-7-26 17:35
0
雪    币: 302
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
感谢了。。下次的cm更正
2010-7-26 20:24
0
游客
登录 | 注册 方可回帖
返回