中国飘云阁破解组织Crackme3.0破解分析
【破文作者】qxtianlong【所属组织】无
【作者主页】http://qxtianlong.77169.com
【 E-mail 】[email protected]
【 作者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 ] 来个注册机~
/:D/:D/:D 学习中。。。。 支持支持 好家伙,呵呵,可惜俺看了还是一头雾水 不错,顶一个! 学习学习~~~ 支持,下来学习 不好意思,我怎么都看不出来这是算法分析。回去看了看题目,原来是破解分析。嘻嘻!!
真正如何计算注册码的,相信楼主不知道。
页:
[1]
2