qxtianlong 发表于 2005-10-21 16:19:21

中国飘云阁破解组织Crackme3.0破解分析

【破文作者】qxtianlong

【所属组织】无

【作者主页】http://qxtianlong.77169.com

【 E-mail 】kk5910@sina.com

【 作者QQ 】249935058

【文章题目】Crackme的详解

【软件名称】中国飘云阁破解组织Crackme3.0

【下载地址】Crackme

【加密方式】用户名/序列号

【加壳方式】无

【破解工具】OD, W32

【软件限制】无

【破解平台】wxp
=======================================================================================================
【软件简介】
Crackme生存的唯一目的就是让我们练手之用!

=======================================================================================================
【文章简介】
我的破解很菜,写这篇东西是给对这个 crackme 有兴趣的兄弟们,分享一下破解心得
=======================================================================================================
【解密过程】
FI查壳无壳,程序语言VC,输入试练码qxtianlong,78787878,有错误提示,W32载入看看有没有字符串提示,还好有提示,双击User Name must have at least 5 characters来到
:00401572 8945E4                  mov dword ptr , eax
:00401575 837DE405                cmp dword ptr , 00000005//比较,用户名要大于等于5位
:00401579 7D43                  jge 004015BE//大于则跳
:0040157B 6A40                  push 00000040

* Possible StringData Ref from Data Obj ->"CrackMe"
                                  |
:0040157D 6820404000            push 00404020

* Possible StringData Ref from Data Obj ->"User Name must have at least 5 "
                                        ->"characters."
                                  |
:00401582 6828404000            push 00404028               //停在这里
:00401587 8B8D40FEFFFF            mov ecx, dword ptr
-------------------------------------------------------------------------------------------------------
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401579(C)
|
:004015BE C745E000000000          mov , 00000000    //跳到这里
:004015C5 EB09                  jmp 004015D0          //无条件跳转
-------------------------------------------------------------------------------------------------------
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004015C5(U)
|
:004015D0 8B45E0                  mov eax, dword ptr //跳到这里
:004015D3 3B45E4                  cmp eax, dword ptr
:004015D6 7D42                  jge 0040161A
:004015D8 8B4DE0                  mov ecx, dword ptr
:004015DB 51                      push ecx
:004015DC 8D4DEC                  lea ecx, dword ptr
:004015DF E81C030000            call 00401900 //取用户名到ECX
:004015E4 0FBED0                  movsx edx, al//逐位取ASC,EDX=71
:004015E7 8B45F0                  mov eax, dword ptr //ebp-10的值入EAX,EAX=81276345
:004015EA 03C2                  add eax, edx//EAX=81276345+71=812763B6
:004015EC 8945F0                  mov dword ptr , eax//EAX值入ebp-10
:004015EF 8B4DE0                  mov ecx, dword ptr //ebp-20的值入ecx,ECX=0
:004015F2 C1E108                  shl ecx, 08//移位运算
:004015F5 8B55F0                  mov edx, dword ptr //ebp-10的值入EDX,EDX=812763B6
:004015F8 33D1                  xor edx, ecx//EDX,ECX做异或运算
:004015FA 8955F0                  mov dword ptr , edx//EDX的值入ebp-10
:004015FD 8B45E0                  mov eax, dword ptr //ebp-20的值入eax,eax=0
:00401600 83C001                  add eax, 00000001//EAX+1
:00401603 8B4DE4                  mov ecx, dword ptr //ebp-1c的值入ECX,ECX=A
:00401606 0FAF4DE0                imul ecx, dword ptr //ECX和EBP-20的值做乘法运算,ECX=0
:0040160A F7D1                  not ecx//逻辑非运算,ECX=FFFFFFFF
:0040160C 0FAFC1                  imul eax, ecx//EAX,ECX做乘法运算,EAX=FFFFFFFF
:0040160F 8B55F0                  mov edx, dword ptr //EBP-10的值入EDX,EDX=812763B6
:00401612 0FAFD0                  imul edx, eax//EDX,EAX做乘法运算,EDX=7ED89C4A
:00401615 8955F0                  mov dword ptr , edx//edx的值入EBP-10
:00401618 EBAD                  jmp 004015C7//无条件跳转
-------------------------------------------------------------------------------------------------------
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401618(U)
|
:004015C7 8B55E0                  mov edx, dword ptr //跳到这里,EBP-20的值入EDX,EDX=0
:004015CA 83C201                  add edx, 00000001//EDX+1(EAX作为用户名位数的计数器)
:004015CD 8955E0                  mov dword ptr , edx//EDX的值入EBP-20
:004015D0 8B45E0                  mov eax,dword ptr ss://EBP-20的值入EAX,EAX=1
:004015D3   3B45 E4             cmp eax,dword ptr ss://ebp-10的值A,EAX做比较
:004015D6    /7D 42               jge short crackme3.0040161A//大于等于则跳
以下就是循环以上的操作了,直到满足004015D6处的跳转为止
0040161A   8B45 F0            mov eax,dword ptr ss://跳到这里,ebp-10的值入EAX,EAX=869FCA32
0040161D   50               push eax//入栈
0040161E   68 54404000      push crackme3.00404054               ; ASCII "%lu"//入栈
00401623   8D4D DC            lea ecx,dword ptr ss://指针给ECX,ECX=0012f88c
00401626   51               push ecx//入栈
00401627   E8 52070000      call <jmp.&MFC42.#2818>//估计是转化为十进制用的,ECX=2258618930
0040162C   83C4 0C            add esp,0C//恢复堆栈现场
0040162F   8D4D DC            lea ecx,dword ptr ss://指针给ECX,ECX=0012F88C,指向真码
00401632   E8 79020000      call crackme3.004018B0//返回值给EAX,EAX=2258618930
00401637   50               push eax//入栈
00401638   8D4D E8            lea ecx,dword ptr ss://指针给ECX,ECX=0012F898,指向假码
0040163B   E8 80020000      call crackme3.004018C0//应该是比较用的
00401640   85C0               test eax,eax//改为xor eax,eax也可以这是任何序列号都是正确的
00401642    /0F85 FF000000      jnz crackme3.00401747//这里可以爆破
OK!
【解密心得】
name:qxtianlong
serial:2258618930
内存注册机
中断地址:00401637
中断次数:1
第一字节:50
指令长度:1
保存方式:内存方式->寄存器EAX
=======================================================================================================
【破解声明】我是一个小小菜虫子,文章如有错误,请高手指正!
【版权声明】本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
=======================================================================================================
                                                                              2005-10-21 15:00

[ Last edited by qxtianlong on 2005-10-22 at 10:57 AM ]

飘云 发表于 2005-10-21 18:47:46

来个注册机~
/:D/:D/:D

网络天使 发表于 2005-10-23 11:14:19

学习中。。。。

zhangyino2 发表于 2005-10-31 18:41:52

支持支持

edata 发表于 2005-11-9 21:58:04

kianny 发表于 2005-11-25 20:26:09

好家伙,呵呵,可惜俺看了还是一头雾水

听听雨吧 发表于 2005-11-27 10:18:40

不错,顶一个!

盗帅 发表于 2005-11-29 00:12:43

学习学习~~~

mwdir1025 发表于 2006-10-19 23:13:49

支持,下来学习

binbinbin 发表于 2006-10-22 22:15:04

不好意思,我怎么都看不出来这是算法分析。回去看了看题目,原来是破解分析。嘻嘻!!

真正如何计算注册码的,相信楼主不知道。
页: [1] 2
查看完整版本: 中国飘云阁破解组织Crackme3.0破解分析