飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4040|回复: 4

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

[复制链接]

该用户从未签到

发表于 2005-10-19 13:04:08 | 显示全部楼层 |阅读模式
【破文作者】qxtianlong

【所属组织】无

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

【 E-mail 】[email protected]

【 作者QQ 】249935058

【文章题目】Crackme  的详解

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

【下载地址】Crackme

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

【加壳方式】无

【破解工具】OD

【软件限制】无

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

=======================================================================================================
【文章简介】
我的破解很菜,写这篇东西是给对这个 crackme 有兴趣的兄弟们,分享一下破解心得
=======================================================================================================
【解密过程】
PEID查壳,无壳,顺便看程序是VB的,试运行输入试练码qxtianlong,78787878,确认后,有错误提示
OD载入,下断点bp rtcMsgBox,F9运行,马上断下,此时在系统领空,Ctrl+F9返回程序领空
660E1FF2 M>  55                 push ebp     //断在这里
660E1FF3     8BEC               mov ebp,esp
660E1FF5     83EC 4C            sub esp,4C
660E1FF8     8B4D 14            mov ecx,dword ptr ss:[ebp+14]
660E1FFB     53                 push ebx
660E1FFC     56                 push esi
660E1FFD     57                 push edi
返回到这里,00404877     51                 push ecx
00404878     FF15 30104000      call dword ptr ds:[<&MSVBVM60.#595>] ; MSVBVM60.rtcMsgBox//这个CALL就是出错CALL
0040487E     8D55 90            lea edx,dword ptr ss:[ebp-70]
我们向上翻动代码,然后在004044D0     55                 push ebp//下断,F9运行断下,F8过到
0040457E     8B55 D8            mov edx,dword ptr ss:[ebp-28]//看到提示
堆栈 ss:[0012F4E0]=001527CC, (UNICODE "qxtianlong")
edx=00DF0608
00404581     8D4D E4            lea ecx,dword ptr ss:[ebp-1C]//ECX=0012F4EC
00404584     897D D8            mov dword ptr ss:[ebp-28],edi//0012f4e0=0
00404587     FF15 A4104000      call dword ptr ds:[<&MSVBVM60.__vbaS>; MSVBVM60.__vbaStrMove//函数调用EAX=001527CC
0040458D     8D4D D0            lea ecx,dword ptr ss:[ebp-30]//ECX=0012F4D8
00404590     FF15 B4104000      call dword ptr ds:[<&MSVBVM60.__vbaF>; MSVBVM60.__vbaFreeObj//EAX清零
00404596     8B16               mov edx,dword ptr ds:[esi]           ; crackme1.00405A68
00404598     56                 push esi//入栈0014ac58
省略N行
004045D1     8B55 D8            mov edx,dword ptr ss:[ebp-28]//提示看到假码
004045D4     8D4D DC            lea ecx,dword ptr ss:[ebp-24]//ECX=0012F4E4
004045D7     897D D8            mov dword ptr ss:[ebp-28],edi//0012f4e0=0
004045DA     FF15 A4104000      call dword ptr ds:[<&MSVBVM60.__vbaS>; MSVBVM60.__vbaStrMove//EAX=0015275C
004045E0     8D4D D0            lea ecx,dword ptr ss:[ebp-30]//ECX=0012f4d8
004045E3     FF15 B4104000      call dword ptr ds:[<&MSVBVM60.__vbaF>; MSVBVM60.__vbaFreeObj//EAX清零
004045E9     8B45 E4            mov eax,dword ptr ss:[ebp-1C]//EAX=001527CC'qxtianlong'
004045EC     8B35 10104000      mov esi,dword ptr ds:[<&MSVBVM60.__v>; MSVBVM60.__vbaLenBstr
004045F2     50                 push eax
004045F3     FFD6               call esi                             ; MSVBVM60.__vbaLenBstr//取字符串长度入EAX=A
004045F5     83F8 05            cmp eax,5//和5比较
004045F8     0F8D 85000000      jge crackme1.00404683//大于则跳
来到
00404683     8B45 E4            mov eax,dword ptr ss:[ebp-1C]//EAX=001527CC
00404686     50                 push eax
00404687     FFD6               call esi                             ; MSVBVM60.__vbaLenBstr//取字符串长度入EAX=A
00404689     8BC8               mov ecx,eax//ecx=A
0040468B     FF15 50104000      call dword ptr ds:[<&MSVBVM60.__vbaI>; MSVBVM60.__vbaI2I4
省略N行
004046EF     FF15 0C104000      call dword ptr ds:[<&MSVBVM60.#693>] ; MSVBVM60.rtcByteValueBstr//取ASC码
004046F5     25 FF000000        and eax,0FF
004046FA     8D4D D8            lea ecx,dword ptr ss:[ebp-28]
004046FD     03C7               add eax,edi
004046FF    /0F80 04020000      jo crackme1.00404909//无溢出
00404705     8BF8               mov edi,eax//EDI=71
00404707     FF15 B8104000      call dword ptr ds:[<&MSVBVM60.__vbaF>; MSVBVM60.__vbaFreeStr
0040470D     8D55 B0            lea edx,dword ptr ss:[ebp-50]
00404710     8D45 C0            lea eax,dword ptr ss:[ebp-40]
00404713     52                 push edx
00404714     50                 push eax
00404715     6A 02              push 2
00404717     FFD3               call ebx
00404719     B8 01000000        mov eax,1
0040471E     83C4 0C            add esp,0C
00404721     66:03C6            add ax,si
00404724     0F80 DF010000      jo crackme1.00404909
0040472A     8BF0               mov esi,eax
0040472C   ^ E9 71FFFFFF        jmp crackme1.004046A2//循环逐位ASC码相加放入EDI=445
省略N行
00404770     FF15 08104000      call dword ptr ds:[<&MSVBVM60.__vbaS>; MSVBVM60.__vbaStrI4//转化为10进制EAX=1093
00404776     8BD0               mov edx,eax//EDX=1093
00404778     8D4D D4            lea ecx,dword ptr ss:[ebp-2C]
0040477B     FF15 A4104000      call dword ptr ds:[<&MSVBVM60.__vbaS>; MSVBVM60.__vbaStrMove
00404781     8B55 D8            mov edx,dword ptr ss:[ebp-28]//假码
00404784     50                 push eax
00404785     52                 push edx
00404786     FF15 4C104000      call dword ptr ds:[<&MSVBVM60.__vbaS>; MSVBVM60.__vbaStrCmp//比较
好了,OVER
【解密心得】
=======================================================================================================
最近几天一直研究游戏引擎,还有分析quake3的代码,确实是厉害也没有时间写东西,今天抽空写点简单的东西,
VB程序,根据我以前写的相信你也应该知道此类比较简单,明码方式,算法也很简单,用户名必须大于等于5位,用户名逐位ASC码相加转化为10进制
name:qxtianlong
serial:1093
算法注册机
没有做任何优化和检查,大家讲究着看吧
#include <iOStream>
#include <conio.h>
#include <string.h>
using namespace std;
int main()
{
char name[50];
int i;
int temp;
unsigned long reg;
reg=0;
cout<<"************************"<<endl;
cout<<"* KeyGen by qxtianlong *"<<endl;
cout<<"*    2005-10-18 夜     *"<<endl;
cout<<"************************"<<endl;
AA: cout<<"请输入用户名:";
cin>>name;
temp=strlen(name);
if(temp<5)
{
     cout<<"用户名至少5位"<<endl;
     cout<<"请重新输入"<<endl;
     goto AA;
}
for(i=0;i<temp;i++)
{
   reg+=name;
}
cout<<"您的注册码是:"<<reg<<endl;
getch();
}
【破解声明】我是一个小小菜虫子,文章如有错误,请高手指正!
【版权声明】本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
=======================================================================================================
                                                                                 2005-10-18 夜
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-8-4 08:53
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2005-10-31 18:34:13 | 显示全部楼层
    学习了,支持一下
    PYG19周年生日快乐!
    lxh6828 该用户已被删除
    发表于 2005-11-8 20:48:13 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-11-25 11:31:12 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-11-25 19:04:08 | 显示全部楼层
    感谢,学习了
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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