zapline 发表于 2009-1-30 20:23

每天一个CM----第四天


应某牛要求,这次依然是VB的
要求算法分析
一组可用注册码:
zapline
AKA-682839
关键是分析如何由注册名计算出注册码后面部分的数字
难度:易

creantan 发表于 2009-1-30 20:50

part1 = AKA-
part2 = (用户名长度*0X17CFB+用户名第一字符的ASCII值 )转十进制
serial = part1+part2


name:creantan
serial:AKA-780347

x80x88 发表于 2009-1-30 20:56

这个CM好,适合我,LZ说的那位牛牛就不要玩了:lol :lol
用户名:x80x88
用户名位数为6,用户名第1位"x"的ASCII码16进制值为78
17CFB(固定值)*6+78=8EE5A(16进制计算)---->585306(10进制形式)
真码为"AKA-"&"585306"即AKA-585306

x80x88 发表于 2009-1-30 20:57

晕倒,又被抢沙发了:Q

zapline 发表于 2009-1-30 20:58

两位还真是快啊
下次把汇编代码贴着注释一下吧
:lol 我学习

小糊涂虫 发表于 2009-1-30 21:06

学习来了。。。。。。。。。。
:lol

柳如悲风 发表于 2009-1-30 23:04

00402412   .50            PUSH EAX                                 ; /String
00402413   .8B1A          MOV EBX,DWORD PTR DS:               ; |
00402415   .FF15 E4404000 CALL DWORD PTR DS:[<&MSVBVM50.__vbaLenBs>; \__vbaLenBstr
0040241B   .8BF8          MOV EDI,EAX
0040241D   .8B4D E8       MOV ECX,DWORD PTR SS:
00402420   .69FF FB7C0100 IMUL EDI,EDI,17CFB
00402426   .51            PUSH ECX                                 ; /String
00402427   .0F80 91020000 JO Afkayas_.004026BE                     ; |
0040242D   .FF15 F8404000 CALL DWORD PTR DS:[<&MSVBVM50.#516>]   ; \rtcAnsiValueBstr
00402433   .0FBFD0      MOVSX EDX,AX
00402436   .03FA          ADD EDI,EDX
00402438   .0F80 80020000 JO Afkayas_.004026BE
0040243E   .57            PUSH EDI
0040243F   .FF15 E0404000 CALL DWORD PTR DS:[<&MSVBVM50.__vbaStrI4>;MSVBVM50.__vbaStrI4
00402445   .8BD0          MOV EDX,EAX
00402447   .8D4D E0       LEA ECX,DWORD PTR SS:

哪位注释一下?有部分看不懂。
直接出结果了:
lrbf810
AKA-682825

柳如悲风 发表于 2009-1-30 23:05

顺便谁把第2天的那个弄个教程出来呀?
不胜感激。当然不是要爆破的。
http://www.52pojie.cn/thread-18096-1-1.html

creantan 发表于 2009-1-30 23:24


00402409   > \8B95 50FFFFFF mov   edx, dword ptr
0040240F   .8B45 E4       mov   eax, dword ptr           ;用户名
00402412   .50            push    eax                              ; /String
00402413   .8B1A          mov   ebx, dword ptr              ; |
00402415   .FF15 E4404000 call    dword ptr [<&MSVBVM50.__vbaLenBs>; \__vbaLenBstr      //取用户名长度
0040241B   .8BF8          mov   edi, eax                           //长度赋给edi
0040241D   .8B4D E8       mov   ecx, dword ptr
00402420   .69FF FB7C0100 imul    edi, edi, 17CFB                  //edi*=0x17cfb
00402426   .51            push    ecx                              ; /String
00402427   .0F80 91020000 jo      004026BE                         ; |
0040242D   .FF15 F8404000 call    dword ptr [<&MSVBVM50.#516>]   ; \rtcAnsiValueBstr            //取用户名第一个字符16进制值
00402433   .0FBFD0      movsx   edx, ax            
00402436   .03FA          add   edi, edx                         ; // edi+=edx                相加得到注册码数字部分         
00402438   .0F80 80020000 jo      004026BE
0040243E   .57            push    edi
0040243F   .FF15 E0404000 call    dword ptr [<&MSVBVM50.__vbaStrI4>;MSVBVM50.__vbaStrI4    //转十进制
00402445   .8BD0          mov   edx, eax
00402447   .8D4D E0       lea   ecx, dword ptr
0040244A   .FF15 70414000 call    dword ptr [<&MSVBVM50.__vbaStrMo>;MSVBVM50.__vbaStrMove

第二个算不出来。。。数学不好。。。

[ 本帖最后由 creantan 于 2009-1-30 23:26 编辑 ]

柳如悲风 发表于 2009-1-30 23:41

感谢,主要是那几个VB的Call不明白,没学过编程。呵呵。
页: [1] 2
查看完整版本: 每天一个CM----第四天