|
|
[原创]我的Crackme
我随便打用户名leon 密码123456789 就成功了,,,不知是不是BUG? |
|
|
[原创]CRACKME下载!
感谢10楼提供的方法 |
|
|
[原创]CRACKME下载!
4楼的去掉NAG后,固定注册码12345就不存在了... |
|
|
[原创]CRACKME下载!
BY LEON 004013E8 /$ 55 push ebp 004013E9 |. 8BEC mov ebp, esp 004013EB |. 56 push esi 004013EC |. 8B75 08 mov esi, dword ptr [ebp+8] //取注册码位数放进ESI 004013EF |. 8BFE mov edi, esi // ESI的值传递给edi 004013F1 |. 33C0 xor eax, eax // eax清0 004013F3 |> 8A06 /mov al, byte ptr [esi] // 取第1个注册码放进al 004013F5 |. 46 |inc esi esi+1 004013F6 |. 84C0 |test al, al //与自己做异或运算 004013F8 |. 75 09 |jnz short 00401403 //不等于就跳到00401403 004013FA |. 90 |nop 004013FB |. 90 |nop 004013FC |. 90 |nop 004013FD |. 90 |nop 004013FE |. 8807 |mov byte ptr [edi], al 00401400 |. 5E |pop esi 00401401 |. 5D |pop ebp 00401402 |. C3 |retn //返回到 0040141D 00401403 |> 3C 39 |cmp al, 39 // 比较和39所对应的ASCII码 00401405 |.^ 7F EC |jg short 004013F3 // 大于往上跳,取第2个注册码继续,依次循环。 00401407 |. 2C 30 |sub al, 30 //减去30 00401409 |.^ 72 E8 |jb short 004013F3 // 小于往上跳,取第2个注册码,依次循环 0040140B |. 8807 |mov byte ptr [edi], al //把al存起来 0040140D |. 47 |inc edi edi+1 0040140E \.^ EB E3 \jmp short 004013F3 直接跳到004013F3 00401410 /$ 55 push ebp 00401411 |. 8BEC mov ebp, esp 00401413 |. 56 push esi 00401414 |. 8B75 0C mov esi, dword ptr [ebp+C] 00401417 |. 56 push esi ; /Arg1 00401418 |. E8 CBFFFFFF call 004013E8 ; \nagoya.004013E8 0040141D |. 83C4 04 add esp, 4 esp+4 00401420 |. 56 push esi ; /String //压进了01,02,03,04,05,06等字符,就是注册码位数有几个,把第1个变成01,第2个成02,如注册码:123,压的字符就是01,02,03,注册码是:789456,压的注册码就是01,02,03,04,05,06 0x是根据注册码位数定的。 00401421 |. E8 0B010000 call <jmp.&KERNEL32.lstrlen> ; \lstrlenA // 再取注册码位数放进eax 00401426 |. 85C0 test eax, eax //与自己做异或运算,等于就往失败去了 00401428 |. 74 19 je short 00401443 //如果跳就完了 上面这段程序是要验证注册码为数字。不然跳到失败。 0040142A |. 90 nop 0040142B |. 90 nop 0040142C |. 90 nop 0040142D |. 90 nop 0040142E |. 8BC8 mov ecx, eax //把假注册码位数放进ecx,做LOOP的计数器(前面00401421说了,eax=注册码位数)。 00401430 |. 33C0 xor eax, eax //eax清0 00401432 |. 33DB xor ebx, ebx //ebp清0 00401434 |> /D1E0 /shl eax, 1 //算术左移动1位 =MUL eax,2 //相当于eax*2 00401436 |. |8BD8 |mov ebx, eax //把eax放入ebx 00401438 |. |D1E0 |shl eax, 1 //算术左移动1位 =MUL eax,2 //相当于eax*2 0040143A |. |D1E0 |shl eax, 1 //算术左移动1位 =MUL AL,2 //相当于eax*2 0040143C |. |021E |add bl, byte ptr [esi] //bl加01,就是前面压进的字符一个一个加,ebx+1,第2次加02 0040143E |. |03C3 |add eax, ebx //ebx+eax结果放进eax 00401440 |. |46 |inc esi esi+1 00401441 |.^\E2 F1 \loopd short 00401434 //从00401434的地方开始循环每次ecx-1,到0停止,把本次的计算结果设为B 00401443 |> 8B75 08 mov esi, dword ptr [ebp+8] 00401446 |. 8906 mov dword ptr [esi], eax //这里运算的结果是1E240,把运算结果存起来 00401448 |. 5E pop esi 00401449 |. 5D pop ebp 0040144A \. C3 retn //跳到00401247 注册码是:注册码是数字,然后按照注册码的位数前加0,变成0x的形式,把bl+0x的值给bl(ebx),ebx+eax的值给eax,循环(注册码有几个循环几次),把本次计算结果设成B,B和16位的3039(十进制的12345)比较,相等就向成功,不然就失败。 万能注册码是12345,这个程序根本没有对用户名进行计算。 00401247 |. 83C4 08 add esp, 8 //esp+8 0040124A |. A1 25214000 mov eax, dword ptr [402125] 0040124F |. 3D 39300000 cmp eax, 3039 //比较是不是等于十进制的12345 00401254 |. 74 0B je short 00401261 //等于跳到成功 00401256 |. 90 nop 00401257 |. 90 nop 00401258 |. 90 nop 00401259 |. 90 nop 0040125A E8 08020000 call 00401467 //不等于失败的对话框就出来了。 0040125F |.^ EB 95 jmp short 004011F6 00401261 |> E8 E5010000 call 0040144B //成功的对话框。 |
|
|
[原创]CRACKME下载!
这个的NAG要怎么去掉啊,,,高手交下 |
|
|
|
|
|
穿山甲--我向你投降
拿不下^^^^^^^^^^^^^^^^ |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
勋章
兑换勋章
证书
证书查询 >
能力值