飘云 发表于 2008-10-20 15:32:15

[PYG官方教程]开悟之门-跟飘云学算法-2

【破文标题】金秘书家庭理财2.01 算法分析
【破文作者】飘云
【作者主页】https://www.chinapyg.com
【破解平台】WinXp
【破解工具】PEiD0.94、OllyDbg
【作者邮箱】[email protected]
【软件名称】金秘书家庭理财2.01
【软件大小】585KB
【原版下载】自行搜索或者论坛附件下载
【软件简介】
    金秘书家庭理财是帮助个人、 家庭、小型企业理财的好帮手,能很方便的知道客户消费了多少钱

,收入多少钱,现有现金多少,存款多少。能快速的满足客户的各种统计需求!   用这个软件的原因

:   . 怎么口袋又瘪了呢?   . 我们是不是经常不知道钱到哪里去了呢?   . 实在是收入都差不

多,为何同事,朋友好象都比我过得充裕?   . 为什么每到年底 月底就捉肩见肘呢?   . 是不是经

常想拥有这样一个软件,她可以每天都记录我的收支情况呢?   . 是不是经常想查查一段时间的消费

与收入的情况呢?   .........   用这个软件吧!她可以很精细的记录和统计您的收支情况。以及

现金和银行储蓄的余额。   且做为共享软件,我们将不断的推陈出新。让您不断体会该软件的实用性

、 精确性 。

【破解过程】
直逼主体算法(根据提示找到~)
00455B80push    -1
00455B82push    0046A48C                   ;SE 处理程序安装
00455B87mov   eax, dword ptr fs:
00455B8Dpush    eax
00455B8Emov   dword ptr fs:, esp
00455B95sub   esp, 10C
00455B9Bpush    ebx
00455B9Cpush    ebp
00455B9Dpush    esi
00455B9Emov   esi, ecx
00455BA0push    edi
00455BA1lea   ecx, dword ptr
00455BA5call    <jmp.&MFC42.#540>
00455BAAlea   ecx, dword ptr
00455BAEmov   dword ptr , 0
00455BB9call    <jmp.&MFC42.#540>
00455BBElea   ecx, dword ptr
00455BC2mov   byte ptr , 1
00455BCAcall    <jmp.&MFC42.#540>
00455BCFlea   ecx, dword ptr
00455BD3mov   byte ptr , 2
00455BDBcall    <jmp.&MFC42.#540>
00455BE0lea   ecx, dword ptr
00455BE4mov   byte ptr , 3
00455BECcall    <jmp.&MFC42.#540>
00455BF1lea   eax, dword ptr     ;:指向用户名
00455BF5mov   ecx, esi
00455BF7push    eax
00455BF8push    42B
00455BFDmov   byte ptr , 4
00455C05call    <jmp.&MFC42.#3097>         ;用户名长度
00455C0Alea   ecx, dword ptr     ;:指向EMAIL
00455C0Epush    ecx
00455C0Fpush    42D
00455C14mov   ecx, esi
00455C16call    <jmp.&MFC42.#3097>         ;Email长度
00455C1Blea   edx, dword ptr     ;:指向地区
00455C1Fmov   ecx, esi
00455C21push    edx
00455C22push    42E
00455C27call    <jmp.&MFC42.#3097>         ;地区长度
00455C2Clea   eax, dword ptr     ;:指向日期
00455C30mov   ecx, esi
00455C32push    eax
00455C33push    42F
00455C38call    <jmp.&MFC42.#3097>         ;日期长度
00455C3Dlea   ecx, dword ptr     ;:指向密码
00455C41push    ecx                        ;上面这几个指针所指向的东西,大家记好了,后

面要用~
00455C42push    430
00455C47mov   ecx, esi
00455C49call    <jmp.&MFC42.#3097>         ;密码长度
00455C4Emov   edx, dword ptr
00455C52mov   edi, dword ptr [<&MSVCRT._>;msvcrt._mbscmp
00455C58push    004825B0                   ; /s2 = ""
00455C5Dpush    edx                        ; |s1
00455C5Ecall    edi                        ; \以下几个是对文本框输入值的判断~
00455C60add   esp, 8
00455C63test    eax, eax
00455C65je      short 00455CB3
00455C67mov   eax, dword ptr
00455C6Bpush    004825B0
00455C70push    eax
00455C71call    edi
00455C73add   esp, 8
00455C76test    eax, eax
00455C78je      short 00455CB3
00455C7Amov   ecx, dword ptr
00455C7Epush    004825B0
00455C83push    ecx
00455C84call    edi
00455C86add   esp, 8
00455C89test    eax, eax
00455C8Bje      short 00455CB3
00455C8Dmov   edx, dword ptr
00455C91push    004825B0
00455C96push    edx
00455C97call    edi
00455C99add   esp, 8
00455C9Ctest    eax, eax
00455C9Eje      short 00455CB3
00455CA0mov   eax, dword ptr
00455CA4push    004825B0
00455CA9push    eax
00455CAAcall    edi
00455CACadd   esp, 8
00455CAFtest    eax, eax
00455CB1jnz   short 00455CC3             ;文本框都输入了则会跳向后面,开始下面的算法

~
00455CB3push    0
00455CB5push    0
00455CB7push    0048225C                   ;尊敬的客户!你需要在右边的网站上注册后,正确

的填写用户、邮箱、地区、注册日期和取得的密码就可以注册啦!
00455CBCmov   ecx, esi
00455CBEcall    <jmp.&MFC42.#4224>
00455CC3lea   ecx, dword ptr     ;指向的是日期~~ 在堆栈中跟随可以看

到详细情况~
00455CC7call    <jmp.&MFC42.#6282>         ;取得日期返回到EAX
00455CCClea   ecx, dword ptr
00455CD0call    <jmp.&MFC42.#6283>
00455CD5lea   ecx, dword ptr     ;指向的是EMAIL
00455CD9call    <jmp.&MFC42.#6282>         ;取得EMAIL返回到EAX
00455CDElea   ecx, dword ptr
00455CE2call    <jmp.&MFC42.#6283>
00455CE7mov   ecx, 10
00455CECxor   eax, eax
00455CEElea   edi, dword ptr
00455CF2mov   byte ptr , 0
00455CF7rep   stos dword ptr es:
00455CF9lea   ecx, dword ptr
00455CFDlea   ebp, dword ptr
00455D00call    <jmp.&MFC42.#540>
00455D05lea   ecx, dword ptr
00455D09mov   byte ptr , 5
00455D11call    <jmp.&MFC42.#540>
00455D16lea   ecx, dword ptr
00455D1Apush    00482250                   ;特征码:goodsoft
00455D1Flea   edx, dword ptr
00455D23mov   bl, 6
00455D25push    ecx
00455D26push    edx
00455D27mov   byte ptr , bl
00455D2Ecall    <jmp.&MFC42.#924>
00455D33lea   ecx, dword ptr
00455D37lea   edx, dword ptr
00455D3Bpush    ecx
00455D3Cpush    eax
00455D3Dpush    edx
00455D3Emov   byte ptr , 7
00455D46call    <jmp.&MFC42.#922>
00455D4Bpush    eax
00455D4Clea   ecx, dword ptr
00455D50mov   byte ptr , 8
00455D58call    <jmp.&MFC42.#858>
00455D5Dlea   ecx, dword ptr
00455D61mov   byte ptr , 7
00455D69call    <jmp.&MFC42.#800>
00455D6Elea   ecx, dword ptr
00455D72mov   byte ptr , bl
00455D79call    <jmp.&MFC42.#800>
00455D7Emov   eax, dword ptr
00455D81mov   ecx, ebp
00455D83call    dword ptr           ;★★★★★初始化MD5的常数~~ 准备进行MD5换

算~★★★★★
00455D86mov   eax, dword ptr     ;日期 + goodsoft + Email    连接起来~~~比

如:[email protected]
00455D8Amov   edx, dword ptr
00455D8Dmov   ecx, dword ptr
00455D90push    ecx
00455D91push    eax
00455D92mov   ecx, ebp
00455D94call    dword ptr
00455D97mov   eax, dword ptr
00455D9Alea   ecx, dword ptr
00455D9Epush    ecx
00455D9Fmov   ecx, ebp
00455DA1call    dword ptr           ;此CALL完成MD5运算,,详细的请读者F7深入跟

踪~
00455DA4mov   ecx, 20
00455DA9xor   eax, eax
00455DABlea   edi, dword ptr
00455DB2mov   byte ptr , 0
00455DBAlea   edx, dword ptr
00455DC1rep   stos dword ptr es:
00455DC3push    edx
00455DC4lea   eax, dword ptr
00455DC8push    10
00455DCApush    eax
00455DCBcall    00455B10
00455DD0mov   edx, dword ptr
00455DD4lea   ecx, dword ptr
00455DDBpush    ecx                        ; /真码(大写的MD5哦,注意看下~~)
00455DDCpush    edx                        ; |假码
00455DDDcall    dword ptr [<&MSVCRT._mbscm>; \关键比较~~
00455DE3add   esp, 14
00455DE6test    eax, eax
00455DE8jnz   004560DE                   ;成功则执行下面的UPDATE语句~ 写入注册信息到

数据库~~
00455DEElea   eax, dword ptr
00455DF2lea   ecx, dword ptr
00455DF6push    eax
00455DF7push    00482234                   ;update regsoft set rname ='
00455DFCpush    ecx
00455DFDcall    <jmp.&MFC42.#926>
00455E02push    00482228                   ;', remail='
00455E07lea   edx, dword ptr
00455E0Bpush    eax
00455E0Cpush    edx
00455E0Dmov   byte ptr , 9
00455E15call    <jmp.&MFC42.#924>
00455E1Alea   ecx, dword ptr
00455E1Elea   edx, dword ptr
00455E22push    ecx
00455E23push    eax
00455E24push    edx
00455E25mov   byte ptr , 0A
00455E2Dcall    <jmp.&MFC42.#922>
00455E32push    0048221C                   ;', rdate='
00455E37push    eax
00455E38lea   eax, dword ptr
00455E3Cmov   byte ptr , 0B
00455E44push    eax
00455E45call    <jmp.&MFC42.#924>
00455E4Alea   ecx, dword ptr
00455E4Elea   edx, dword ptr
00455E52push    ecx
00455E53push    eax
00455E54push    edx
00455E55mov   byte ptr , 0C
00455E5Dcall    <jmp.&MFC42.#922>
00455E62push    00482210                   ;', rarea='
00455E67push    eax
00455E68lea   eax, dword ptr
00455E6Cmov   byte ptr , 0D
00455E74push    eax
00455E75call    <jmp.&MFC42.#924>
00455E7Alea   ecx, dword ptr
00455E7Elea   edx, dword ptr
00455E82push    ecx
00455E83push    eax
00455E84push    edx
00455E85mov   byte ptr , 0E
00455E8Dcall    <jmp.&MFC42.#922>
00455E92push    00482204                   ;', rpwd='
00455E97push    eax
00455E98lea   eax, dword ptr
00455E9Cmov   byte ptr , 0F
00455EA4push    eax
00455EA5call    <jmp.&MFC42.#924>
00455EAAlea   ecx, dword ptr
00455EAElea   edx, dword ptr
00455EB2push    ecx
00455EB3push    eax
00455EB4push    edx
00455EB5mov   byte ptr , 10
00455EBDcall    <jmp.&MFC42.#922>
00455EC2push    004821F4                   ;'where id =1
00455EC7push    eax
00455EC8lea   eax, dword ptr
00455ECCmov   byte ptr , 11
00455ED4push    eax
00455ED5call    <jmp.&MFC42.#924>
00455EDApush    eax
00455EDBlea   ecx, dword ptr
00455EDFmov   byte ptr , 12
00455EE7call    <jmp.&MFC42.#858>
00455EEClea   ecx, dword ptr
00455EF0mov   byte ptr , 11
00455EF8call    <jmp.&MFC42.#800>
00455EFDlea   ecx, dword ptr
00455F01mov   byte ptr , 10
00455F09call    <jmp.&MFC42.#800>
00455F0Elea   ecx, dword ptr
00455F12mov   byte ptr , 0F
00455F1Acall    <jmp.&MFC42.#800>
00455F1Flea   ecx, dword ptr
00455F23mov   byte ptr , 0E
00455F2Bcall    <jmp.&MFC42.#800>
00455F30lea   ecx, dword ptr
00455F34mov   byte ptr , 0D
00455F3Ccall    <jmp.&MFC42.#800>
00455F41lea   ecx, dword ptr
00455F45mov   byte ptr , 0C
00455F4Dcall    <jmp.&MFC42.#800>
00455F52lea   ecx, dword ptr
00455F56mov   byte ptr , 0B
00455F5Ecall    <jmp.&MFC42.#800>
00455F63lea   ecx, dword ptr
00455F67mov   byte ptr , 0A
00455F6Fcall    <jmp.&MFC42.#800>
00455F74lea   ecx, dword ptr
00455F78mov   byte ptr , 9
00455F80call    <jmp.&MFC42.#800>
00455F85lea   ecx, dword ptr
00455F89mov   byte ptr , bl
00455F90call    <jmp.&MFC42.#800>
00455F95push    1
00455F97push    0
00455F99lea   ecx, dword ptr
00455F9Dcall    00403A30
00455FA2push    ecx
00455FA3mov   ecx, esp
00455FA5mov   dword ptr , esp
00455FA9push    eax
00455FAAcall    00403C30
00455FAFlea   ecx, dword ptr
00455FB3mov   byte ptr , bl
00455FBApush    ecx
00455FBBlea   ecx, dword ptr
00455FC1call    00403A50
00455FC6mov   ecx, eax
00455FC8call    00403F10
00455FCDmov   eax, dword ptr
00455FD1test    eax, eax
00455FD3je      short 00455FDB
00455FD5mov   edx, dword ptr
00455FD7push    eax
00455FD8call    dword ptr
00455FDBpush    0
00455FDDpush    0
00455FDFpush    004821A8                   ;您已经成为我们的正式用户!感谢您的注册,您将

可以免费升级和获得我们的售后服务!
00455FE4mov   ecx, esi
00455FE6call    <jmp.&MFC42.#4224>
00455FEBpush    00482180                   ;您已经成为我们的正式用户!感谢您的注册!
00455FF0push    431
00455FF5mov   ecx, esi
00455FF7call    <jmp.&MFC42.#3092>
.
.
.省略部分无关代码
00456170retn


【算法总结】
1.参与运算的只有:时间、Email;
2.时间 + goodsoft + Email连接起来~,设为Str;
3.对Str进行MD5换算即的到注册码Sn;

【算法注册机】uses
UnitMD5{自行搜搜一下,网上很多};
{$R *.dfm}

{-------------------------------------------------------------------------------
过程名:    GetMD5String
作用:      计算MD5并转换成字符串返回
作者:      piaoyun
日期:      2008.10.20
参数:      str:string
返回值:    string
-------------------------------------------------------------------------------}
function GetMD5String(str:string):string;
var
MD5:MD5Digest;
begin
MD5 := MD5String(str);
Result := MD5Print(MD5);
end;


{-------------------------------------------------------------------------------
过程名:    TForm1.btnOKClick
作用:      计算 按钮事件
作者:      piaoyun
日期:      2008.10.20
参数:      Sender: TObject
返回值:    无
-------------------------------------------------------------------------------}
procedure TForm1.btnOKClick(Sender: TObject);
var
str:string;
const
s = 'goodsoft';
begin
if (edtDate.Text <> '') and (edtEmail.Text <> '') then
begin
    str := edtDate.Text+ s + edtEmail.Text;
    edtSn.Text := //自己动脑筋得到SN哦~~~
end
else
    ShowMessage('请输入完整信息!');
end;


{-------------------------------------------------------------------------------
过程名:    TForm1.btnCancelClick
作用:      退出 按钮事件
作者:      piaoyun
日期:      2008.10.20
参数:      Sender: TObject
返回值:    无
-------------------------------------------------------------------------------}
procedure TForm1.btnCancelClick(Sender: TObject);
begin
close;
end;

{-------------------------------------------------------------------------------
过程名:    TForm1.FormCreate
作用:      创建窗口时初始化界面显示
作者:      piaoyun
日期:      2008.10.20
参数:      Sender: TObject
返回值:    无
-------------------------------------------------------------------------------}
procedure TForm1.FormCreate(Sender: TObject);
begin
edtDate.Text := formatdatetime('yyyymmdd',Date);
edtEmail.Text := '[email protected]';
end;【版权声明】 本文原创于P.Y.G官方,纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

wangwei628 发表于 2008-10-20 15:38:51

学习了
多谢分享

lucky_fish 发表于 2008-10-20 16:16:50

每次都来学,但用起来真的好难啊

jackzkm 发表于 2008-10-20 16:19:22

进来学习一下!!

月之精灵 发表于 2008-10-20 18:38:24

下载学习下/:good

tony_liu518 发表于 2008-10-20 19:50:30

跟着老大学习,真是荣幸啊!/:014

孤漂江湖狼 发表于 2008-10-20 19:56:38

老大出的很勤啊,收藏了

hggg 发表于 2008-10-20 21:11:57

多谢分享,收藏了

夜冷风 发表于 2008-10-20 21:15:53

感谢老大.文章写的不错,我看了下了解基本算法了
学习写了一个注册机!!!/:013

[ 本帖最后由 夜冷风 于 2008-10-20 21:20 编辑 ]

crystalsnail 发表于 2008-10-21 23:39:27

多谢分享,学习了/:good /:good
页: [1] 2 3
查看完整版本: [PYG官方教程]开悟之门-跟飘云学算法-2