飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5402|回复: 15

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

[复制链接]

该用户从未签到

发表于 2005-10-21 16:19:21 | 显示全部楼层 |阅读模式
【破文作者】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 [ebp-1C], eax
:00401575 837DE405                cmp dword ptr [ebp-1C], 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 [ebp+FFFFFE40]
-------------------------------------------------------------------------------------------------------
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401579(C)
|
:004015BE C745E000000000          mov [ebp-20], 00000000    //跳到这里
:004015C5 EB09                    jmp 004015D0          //无条件跳转
-------------------------------------------------------------------------------------------------------
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004015C5(U)
|
:004015D0 8B45E0                  mov eax, dword ptr [ebp-20]//跳到这里
:004015D3 3B45E4                  cmp eax, dword ptr [ebp-1C]
:004015D6 7D42                    jge 0040161A
:004015D8 8B4DE0                  mov ecx, dword ptr [ebp-20]
:004015DB 51                      push ecx
:004015DC 8D4DEC                  lea ecx, dword ptr [ebp-14]
:004015DF E81C030000              call 00401900 //取用户名到ECX
:004015E4 0FBED0                  movsx edx, al//逐位取ASC,EDX=71
:004015E7 8B45F0                  mov eax, dword ptr [ebp-10]//ebp-10的值入EAX,EAX=81276345
:004015EA 03C2                    add eax, edx//EAX=81276345+71=812763B6
:004015EC 8945F0                  mov dword ptr [ebp-10], eax//EAX值入ebp-10
:004015EF 8B4DE0                  mov ecx, dword ptr [ebp-20]//ebp-20的值入ecx,ECX=0
:004015F2 C1E108                  shl ecx, 08//移位运算
:004015F5 8B55F0                  mov edx, dword ptr [ebp-10]//ebp-10的值入EDX,EDX=812763B6
:004015F8 33D1                    xor edx, ecx//EDX,ECX做异或运算
:004015FA 8955F0                  mov dword ptr [ebp-10], edx//EDX的值入ebp-10
:004015FD 8B45E0                  mov eax, dword ptr [ebp-20]//ebp-20的值入eax,eax=0
:00401600 83C001                  add eax, 00000001//EAX+1
:00401603 8B4DE4                  mov ecx, dword ptr [ebp-1C]//ebp-1c的值入ECX,ECX=A
:00401606 0FAF4DE0                imul ecx, dword ptr [ebp-20]//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]//EBP-10的值入EDX,EDX=812763B6
:00401612 0FAFD0                  imul edx, eax//EDX,EAX做乘法运算,EDX=7ED89C4A
:00401615 8955F0                  mov dword ptr [ebp-10], 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]//跳到这里,EBP-20的值入EDX,EDX=0
:004015CA 83C201                  add edx, 00000001//EDX+1(EAX作为用户名位数的计数器)
:004015CD 8955E0                  mov dword ptr [ebp-20], edx//EDX的值入EBP-20
:004015D0 8B45E0                  mov eax,dword ptr ss:[ebp-20]//EBP-20的值入EAX,EAX=1
:004015D3     3B45 E4             cmp eax,dword ptr ss:[ebp-1C]//ebp-10的值A,EAX做比较
:004015D6    /7D 42               jge short crackme3.0040161A//大于等于则跳
以下就是循环以上的操作了,直到满足004015D6处的跳转为止
0040161A     8B45 F0            mov eax,dword ptr ss:[ebp-10]//跳到这里,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:[ebp-24]//指针给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:[ebp-24]//指针给ECX,ECX=0012F88C,指向真码
00401632     E8 79020000        call crackme3.004018B0//返回值给EAX,EAX=2258618930
00401637     50                 push eax//入栈
00401638     8D4D E8            lea ecx,dword ptr ss:[ebp-18]//指针给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 ]
PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2005-10-21 18:47:46 | 显示全部楼层
    来个注册机~
    /:D/:D/:D
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-10-23 11:14:19 | 显示全部楼层
    学习中。。。。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-8-4 08:53
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2005-10-31 18:41:52 | 显示全部楼层
    支持支持
    PYG19周年生日快乐!
    edata 该用户已被删除
    发表于 2005-11-9 21:58:04 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-11-25 20:26:09 | 显示全部楼层
    好家伙,呵呵,可惜俺看了还是一头雾水
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-11-27 10:18:40 | 显示全部楼层
    不错,顶一个!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-11-29 00:12:43 | 显示全部楼层
    学习学习~~~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-4-30 21:58
  • 签到天数: 75 天

    [LV.6]常住居民II

    发表于 2006-10-19 23:13:49 | 显示全部楼层
    支持,下来学习
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-6-11 12:16
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2006-10-22 22:15:04 | 显示全部楼层
    不好意思,我怎么都看不出来这是算法分析。回去看了看题目,原来是破解分析。嘻嘻!!

    真正如何计算注册码的,相信楼主不知道。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表