能力值:
( LV9,RANK:210 )
|
-
-
2 楼
00401141 . E8 4A020000 call <jmp.&user32.GetDlgItemTextA> ; \GetDlgItemTextA
00401146 . 83F8 03 cmp eax, 3
00401149 . 77 18 ja short 00401163
这里获得用户名
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
呵呵~
看这边的东西
00401276 . 33DB XOR EBX,EBX
00401278 > 8A88 48654000 MOV CL,BYTE PTR DS:[EAX+406548]
0040127E . 888B 49674000 MOV BYTE PTR DS:[EBX+406749],CL
00401284 . 43 INC EBX
00401285 . 48 DEC EAX
00401286 .^ 75 F0 JNZ SHORT crackme.00401278
00401288 . 68 49674000 PUSH crackme.00406749 ; /String2 = "1980541543"
0040128D . 68 49654000 PUSH crackme.00406549 ; |String1 = crackme.00406549
00401292 . E8 5F010000 CALL <JMP.&kernel32.lstrcpyA> ; \lstrcpyA
***********************************************
这个程序只取后面的几位 来运算加密
并不是全部的name都用下去 后面相同的 code也相同 如mylove 和dylove 得到的一样
其中 00401278 > 8A88 48654000 MOV CL,BYTE PTR DS:[EAX+406548]
0040127E . 888B 49674000 MOV BYTE PTR DS:[EBX+406749],CL
00401284 . 43 INC EBX
00401285 . 48 DEC EAX
00401286 .^ 75 F0 JNZ SHORT crackme.00401278
这边是计算 注释中的string2
将结果倒过来得到 序列号
其他运算过程不在这 不写
这个比较好做
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
0040116F . 8BE8 MOV EBP,EAX
00401171 . B9 05000000 MOV ECX,5
00401176 . 33F6 XOR ESI,ESI
00401178 . 33C0 XOR EAX,EAX
0040117A > 8A0C16 MOV CL,BYTE PTR DS:[ESI+EDX]
0040117D . 8AD9 MOV BL,CL
0040117F . 3298 28634000 XOR BL,BYTE PTR DS:[EAX+406328]
00401185 . 40 INC EAX
00401186 . 83F8 05 CMP EAX,5
00401189 . 881C32 MOV BYTE PTR DS:[EDX+ESI],BL
0040118C . 8888 27634000 MOV BYTE PTR DS:[EAX+406327],CL
00401192 . 75 02 JNZ SHORT crackme.00401196
00401194 . 33C0 XOR EAX,EAX
00401196 > 46 INC ESI
00401197 . 3BF5 CMP ESI,EBP
00401199 .^ 72 DF JB SHORT crackme.0040117A
第一步 name 运算 第一位不运算
0040124E . B9 0A000000 MOV ECX,0A
00401253 . A1 45634000 MOV EAX,DWORD PTR DS:[406345]
00401258 . 33DB XOR EBX,EBX
0040125A > 33D2 XOR EDX,EDX
0040125C . F7F1 DIV ECX
0040125E . 80C2 30 ADD DL,30
00401261 . 8893 49654000 MOV BYTE PTR DS:[EBX+406549],DL
00401267 . 43 INC EBX
00401268 . 85C0 TEST EAX,EAX
0040126A .^ 75 EE JNZ SHORT crackme.0040125A
第二步 对第一步得到的 运算 得到 注册码
第三步 将第二步得到的注册码 取反 就是真正的注册码了!
有的地方有点看不懂
本来写好了,用卑鄙手段弄好了 序列号查看的,现在传不上 郁闷。
没写过破文不知道怎么写
|
能力值:
( LV9,RANK:250 )
|
-
-
13 楼
他没这么"好人",大多都是一些 LONG..........LONG ..... 的运算
有空我也写一个,超。。。。。。。LONG 的,说明不准爆破,又没有明码的,让大虾们见了也摇头叹息
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
算法是这样的:
先把用户名的第一位去掉,再在用户名最后加一个ASCII码为0的字符组成新的字符串s1然后再进入下面的四步运算.
第一步,ASCII码AA,89,C4,FE,46加到新字符串s1头部组成字符串s2,S1与S2各位异或得s3
第二步,S3尾部加E7,03,D0,F0,78组成S4,S4与S3各位异或得S5
第三步,F7,FD,F4,E7,B9加到S5头部得S6,S6与S5各位异或得S7
第四步,S7尾部加B5,1B,C9,50,73组成S8,S8与S7各位异或得S9
做完这四步后,最后得到S9,再把S9的第一,五,九...位相加放到第一位,第二,六,十...位相加放到第二位,第三,七,十一...位相加放到第三位,第四,八,十二...位相加放到第四位,这样最后得到长度为四的字符串S10,再把S10的ASCII码看成是一个32位的无符号整数,转化为10进制数就得到注册码了.
跟踪了很久才得出这样的结论,大家看看有没有错,破解的话倒是非常简单,不用分析算法就可以看到结果了
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
赫赫,我们真是初学者,哎,慢慢向高手看齐吧。。。
x_low
2235976648
谢谢看雪论坛,谢谢大家,
第一个不用看教程的crackme:)
赫赫,可怜哦,大家一起进步吧
|
能力值:
(RANK:215 )
|
-
-
20 楼
00406328 AA 89 C4 FE 46 78 F0 D0 ?宁Fx鹦
00406330 03 E7 F7 FD F4 E7 B9 B5 琪?绻
00406338 1B C9 50 73 00 70 45 14 尚s.pE
00406340 00 DC 51 00 00 00 00 00 .苎.....
00406348 00 63 68 69 6E 61 00 00 .china..
以用户名china为例:
注册码计算过程用到上面406328开始到406348的表,计算过程为:
1、表内数据5个为一组参与运算(用户名长度大于5的将继续循环计算)。
2、用户名从第2位开始取HEX,跟表406328开始取值进行异或运算,结果替换当前位用户名HEX,计算用户名长度次数(用户名后+00准备转换为处理后用户名,实际结果+1位=用户名长度)。
3、从表第6位开始取值,跟倒序取第1次变换后的用户名(长度不变,新加1位)hex进行计算,结果继续替换。
4、正取第2次变换后用户名跟表后内容继续运算。
5、再倒取用户HEX,继续跟表内容计算。
6、表中最后00406345的内容00 00 00 00 跟用户名3次变换后的HEX相加(次数为用户名长度),结果替换00部分。
7、取00406345的内存值,对0xA求余,结果+30转换为10,取字符连接为注册码。
00401163 > \8D15 49634000 lea edx, [406349]
00401169 . 52 push edx ; /String => "china"
0040116A . E8 8D020000 call <jmp.&kernel32.lstrlenA> ; \lstrlenA
0040116F . 8BE8 mov ebp, eax ; 用户名长度5
00401171 . B9 05000000 mov ecx, 5
00401176 . 33F6 xor esi, esi
00401178 . 33C0 xor eax, eax
0040117A > 8A0C16 mov cl, [esi+edx] ; 开始即取第2位HEX
0040117D . 8AD9 mov bl, cl
0040117F . 3298 28634000 xor bl, [eax+406328] ; 查表406328 AA
00401185 . 40 inc eax
00401186 . 83F8 05 cmp eax, 5
00401189 . 881C32 mov [edx+esi], bl ; 异或后结果C2替换用户名 63 C2 E0 AA 9F 46
0040118C . 8888 27634000 mov [eax+406327], cl ; 把HEX替换到表406328
00401192 . 75 02 jnz short 00401196
00401194 . 33C0 xor eax, eax
00401196 > 46 inc esi
00401197 . 3BF5 cmp esi, ebp
00401199 .^ 72 DF jb short 0040117A
0040119B . 33FF xor edi, edi
0040119D . 33C9 xor ecx, ecx
0040119F . 85ED test ebp, ebp
004011A1 . 76 26 jbe short 004011C9
004011A3 > 8A9F 2D634000 mov bl, [edi+40632D] ; 继续取表的6位开始
004011A9 . 8BF5 mov esi, ebp ; 长度5
004011AB . 2BF1 sub esi, ecx
004011AD . 4E dec esi
004011AE . 8A0432 mov al, [edx+esi] ; 倒取变换后的用户名HEX
004011B1 . 32D8 xor bl, al ; 两者XOR运算
004011B3 . 47 inc edi
004011B4 . 881C32 mov [edx+esi], bl ; 结果给表第6位
004011B7 . 8887 2C634000 mov [edi+40632C], al ; 变换后用户名倒序替换到表中
004011BD . 83FF 05 cmp edi, 5
004011C0 . 75 02 jnz short 004011C4
004011C2 . 33FF xor edi, edi
004011C4 > 41 inc ecx
004011C5 . 3BCD cmp ecx, ebp
004011C7 .^ 72 DA jb short 004011A3 ; 用户名2次变换后结果63 25 E3 7A 6F 3E 00
004011C9 > 33F6 xor esi, esi
004011CB . 33FF xor edi, edi
004011CD . 85ED test ebp, ebp
004011CF . 76 21 jbe short 004011F2
004011D1 > 8A043A mov al, [edx+edi] ; 正取2次变换后的用户名HEX
004011D4 . 8A8E 32634000 mov cl, [esi+406332] ; 继续取表的后面字符
004011DA . 32C8 xor cl, al
004011DC . 46 inc esi
004011DD . 880C3A mov [edx+edi], cl ; 结果替换用户名2-5位内容
004011E0 . 8886 31634000 mov [esi+406331], al ; 用户名内容替换表中内容
004011E6 . 83FE 05 cmp esi, 5
004011E9 . 75 02 jnz short 004011ED
004011EB . 33F6 xor esi, esi
004011ED > 47 inc edi
004011EE . 3BFD cmp edi, ebp
004011F0 .^ 72 DF jb short 004011D1
004011F2 > 33FF xor edi, edi
004011F4 . 33C9 xor ecx, ecx
004011F6 . 85ED test ebp, ebp
004011F8 . 76 26 jbe short 00401220
004011FA > 8A9F 37634000 mov bl, [edi+406337] ; 继续表取表内容
00401200 . 8BF5 mov esi, ebp
00401202 . 2BF1 sub esi, ecx
00401204 . 4E dec esi
00401205 . 8A0432 mov al, [edx+esi] ; 3次处理后的用户名倒取63 D2 1E 8E 88 87
00401208 . 32D8 xor bl, al ; XOR 运算结果替换用户名
0040120A . 47 inc edi
0040120B . 881C32 mov [edx+esi], bl ; 倒序继续替换用户名内容63 A1 4E 47 93 32
0040120E . 8887 36634000 mov [edi+406336], al
00401214 . 83FF 05 cmp edi, 5
00401217 . 75 02 jnz short 0040121B
00401219 . 33FF xor edi, edi
0040121B > 41 inc ecx
0040121C . 3BCD cmp ecx, ebp
0040121E .^ 72 DA jb short 004011FA
00401220 > 8D3D 45634000 lea edi, [406345] ; 表剩余内容D3 4E 47 93
00401226 . 33C0 xor eax, eax
00401228 . 85ED test ebp, ebp
0040122A . C705 45634000>mov dword ptr [406345], 0 ; 替换为00
00401234 . 76 17 jbe short 0040124D
00401236 > 8BC8 mov ecx, eax
00401238 . 83E1 03 and ecx, 3
0040123B . 8A1C0F mov bl, [edi+ecx] ; 取替换后的表剩余内容跟最后处理的用户名HEX相加
0040123E . 8D340F lea esi, [edi+ecx]
00401241 . 8A0C02 mov cl, [edx+eax]
00401244 . 02D9 add bl, cl
00401246 . 40 inc eax
00401247 . 3BC5 cmp eax, ebp
00401249 . 881E mov [esi], bl ; 结果替换最后表内容D3 4E 47 93 加次数为用户名长度,故第一位加了两次
0040124B .^ 72 E9 jb short 00401236
0040124D > 5D pop ebp
0040124E . B9 0A000000 mov ecx, 0A
00401253 . A1 45634000 mov eax, [406345] ; 取表最后内容处理后结果的内存值ds:[00406345]=93474ED3
00401258 . 33DB xor ebx, ebx
0040125A > 33D2 xor edx, edx
0040125C . F7F1 div ecx ; A
0040125E . 80C2 30 add dl, 30 ; 余数+30变为数值
00401261 . 8893 49654000 mov [ebx+406549], dl
00401267 . 43 inc ebx
00401268 . 85C0 test eax, eax
0040126A .^ 75 EE jnz short 0040125A
|
能力值:
( LV3,RANK:20 )
|
-
-
24 楼
004012AB . 68 49654000 push 00406549 ; /String2 = "1626529785"
004012B0 . 68 49694000 push 00406949 ; |String1 = "76902769"
004012B5 . E8 36010000 call <jmp.&kernel32.lstrcm>; \lstrcmpA比较了
004012BA . 0BC0 or eax, eax
004012BC 74 16 je short 004012D4 爆破作业点
004012BE . 6A 40 push 40 ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
004012C0 . 68 DB624000 push 004062DB ; |Title = "Good boy..."
004012C5 . 68 AC624000 push 004062AC ; |Text = "Yep, thats the right code!",LF,CR,"Go write a keygen!"
004012CA . FF75 08 push dword ptr [ebp+8] ; |hOwner
004012CD . E8 CA000000 call <jmp.&user32.MessageB>; \MessageBoxA
用户名 mikeyabc
注册码1626529785
|