飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3582|回复: 7

西风申请加入!

[复制链接]

该用户从未签到

发表于 2005-3-12 14:49:48 | 显示全部楼层 |阅读模式
破解作者】 西风
【作者邮箱】 [email protected]
【使用工具】 PEiD0.93,UnASPack1.2.1.3,OD1.10正式版
【破解平台】 Win2000
【软件名称】 私人文件保密专家白金版4.01
【下载地址】 http://download.winzheng.com/SoftView/SoftView_25251.htm
【软件简介】
【软件大小】 3.33M
【加壳方式】 aspack2.12
--------------------------------------------------------------------------------
【破解内容】
先安装程序,然后用工具UnASPack1.2.1.3脱壳!脱壳后用PEiD0.93看看是用什么语言编写的!是delphi5.0-6.0,用OD打开程序!

呵呵,我们开始动手,先看有没有提示,输入用户名xflin,注册码:1111111,咦,报错了,有戏,根据提示(你输入的注册码不正确,请重新输新输入或与作者联系!),用OD查找注册码,下断,来到下边:

004D5B16  |. 64:8920        MOV DWORD PTR FS:[EAX],ESP
004D5B19  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
004D5B1C  |. E8 8BEFF2FF    CALL unpacked.00404AAC                   ;  计算用户名长度
004D5B21  |. 3B43 4C        CMP EAX,DWORD PTR DS:[EBX+4C]
004D5B24  |. 7F 19          JG SHORT unpacked.004D5B3F
004D5B26  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
004D5B29  |. E8 7EEFF2FF    CALL unpacked.00404AAC
004D5B2E  |. 3B43 50        CMP EAX,DWORD PTR DS:[EBX+50]
004D5B31  |. 7C 0C          JL SHORT unpacked.004D5B3F
004D5B33  |. 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
004D5B36  |. E8 71EFF2FF    CALL unpacked.00404AAC                   ;  计算注册码长度
004D5B3B  |. 85C0           TEST EAX,EAX
004D5B3D  |. 75 04          JNZ SHORT unpacked.004D5B43
004D5B3F  |> 33DB           XOR EBX,EBX
004D5B41  |. EB 60          JMP SHORT unpacked.004D5BA3
004D5B43  |> 8D55 F4        LEA EDX,DWORD PTR SS:[EBP-C]
004D5B46  |. 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]             ;  [EBP+8]:注册假码
004D5B49  |. E8 E231F3FF    CALL unpacked.00408D30
004D5B4E  |. 8B55 F4        MOV EDX,DWORD PTR SS:[EBP-C]             ;  [EBP-C]:假码
004D5B51  |. 8D45 08        LEA EAX,DWORD PTR SS:[EBP+8]
004D5B54  |. E8 33EDF2FF    CALL unpacked.0040488C
004D5B59  |. 8D4D F0        LEA ECX,DWORD PTR SS:[EBP-10]
004D5B5C  |. 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]             ;  [EBP-4]用户名
004D5B5F  |. 8BC3           MOV EAX,EBX
004D5B61  |. E8 BAFBFFFF    CALL unpacked.004D5720                   ;  真码,假码都入栈了,当然这儿得看看了,注册算法哦
004D5B66  |. 8B45 F0        MOV EAX,DWORD PTR SS:[EBP-10]
004D5B69  |. 8B55 08        MOV EDX,DWORD PTR SS:[EBP+8]
004D5B6C  |. E8 3732F3FF    CALL unpacked.00408DA8


进入CALL,看看,跟到下边:

004D572B  |. 895D EC        MOV DWORD PTR SS:[EBP-14],EBX       ;  清空以下几个地址
004D572E  |. 895D E8        MOV DWORD PTR SS:[EBP-18],EBX
004D5731  |. 895D E4        MOV DWORD PTR SS:[EBP-1C],EBX
004D5734  |. 895D E0        MOV DWORD PTR SS:[EBP-20],EBX
004D5737  |. 8BF9           MOV EDI,ECX
004D5739  |. 8955 FC        MOV DWORD PTR SS:[EBP-4],EDX        ;  [EBP-4]存入用户名
004D573C  |. 8BF0           MOV ESI,EAX
004D573E  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
.......................
004D5754  |. 8D45 EC        LEA EAX,DWORD PTR SS:[EBP-14]
004D5757  |. BA D0584D00    MOV EDX,unpacked.004D58D0           ;  ASCII "gf258369gf"
004D575C  |. E8 2BF1F2FF    CALL unpacked.0040488C
.................
004D5772  |. EB 5D          JMP SHORT unpacked.004D57D1
004D5774  |> 8B45 EC        MOV EAX,DWORD PTR SS:[EBP-14]       ;  存入辅助码gf258369gf
004D5777  |. E8 30F3F2FF    CALL unpacked.00404AAC
004D577C  |. 8BD8           MOV EBX,EAX
004D577E  |. 8D45 E8        LEA EAX,DWORD PTR SS:[EBP-18]
..................
004D5790  |. 8B45 EC        MOV EAX,DWORD PTR SS:[EBP-14]
004D5793  |. E8 6CF5F2FF    CALL unpacked.00404D04
004D5798  |. 8D45 E4        LEA EAX,DWORD PTR SS:[EBP-1C]
004D579B  |. 50             PUSH EAX                            ;  取gf258,作什么用呢,后面便知
004D579C  |. 8BC3           MOV EAX,EBX
004D579E  |. D1F8           SAR EAX,1
004D57A0  |. 79 03          JNS SHORT unpacked.004D57A5
004D57A2  |. 83D0 00        ADC EAX,0
004D57A5  |> 8BCB           MOV ECX,EBX
004D57A7  |. 2BC8           SUB ECX,EAX
...............呵呵,快踩雷区了哦
004D5800  |. E9 91000000    JMP unpacked.004D5896
004D5805  |> 8B45 E0        MOV EAX,DWORD PTR SS:[EBP-20]
004D5808  |. E8 9FF2F2FF    CALL unpacked.00404AAC              ;  将xflin入gf258369gf中间
004D580D  |. 8BD8           MOV EBX,EAX                         ;  将字串长度入EBX
004D580F  |. EB 37          JMP SHORT unpacked.004D5848
004D5811  |> 8B46 68        /MOV EAX,DWORD PTR DS:[ESI+68]      ;  [esi+68]中存的常数211d1c93,后面相加会用到
004D5814  |. 8B56 6C        |MOV EDX,DWORD PTR DS:[ESI+6C]
004D5817  |. 0345 F0        |ADD EAX,DWORD PTR SS:[EBP-10]      ;  这儿进行累加了,看到了吧,这儿就是注册码的一部分了
004D581A  |. 1355 F4        |ADC EDX,DWORD PTR SS:[EBP-C]
004D581D  |. 52             |PUSH EDX
004D581E  |. 50             |PUSH EAX
004D581F  |. 8B45 E0        |MOV EAX,DWORD PTR SS:[EBP-20]
004D5822  |. 0FB64418 FF    |MOVZX EAX,BYTE PTR DS:[EAX+EBX-1]  ;  依次取字符
004D5827  |. 50             |PUSH EAX
004D5828  |. B8 59040000    |MOV EAX,459
004D582D  |. 5A             |POP EDX
004D582E  |. 8BCA           |MOV ECX,EDX
004D5830  |. 33D2           |XOR EDX,EDX
004D5832     F7F1           DIV ECX                             ;  eax除以ecx的值
004D5834  |. 8BC2           |MOV EAX,EDX                        ;  余数入eax(实际上就是取模)
004D5836  |. 33D2           |XOR EDX,EDX
004D5838  |. 290424         |SUB DWORD PTR SS:[ESP],EAX         ;  将刚才累的结果,再减去当前EAX的值
004D583B  |. 195424 04      |SBB DWORD PTR SS:[ESP+4],EDX
004D583F  |. 58             |POP EAX
004D5840  |. 5A             |POP EDX
004D5841  |. 8945 F0        |MOV DWORD PTR SS:[EBP-10],EAX      ;  将最终结果放入[ebp-10],关键的计算结果哦
004D5844  |. 8955 F4        |MOV DWORD PTR SS:[EBP-C],EDX
004D5847  |. 4B             |DEC EBX
004D5848  |> 8B45 E0         MOV EAX,DWORD PTR SS:[EBP-20]      ;  [ebp-20]组合后的字串
004D584B  |. E8 5CF2F2FF    |CALL unpacked.00404AAC             ;  长度
004D5850  |. 3BD8           |CMP EBX,EAX
004D5852  |. 7F 04          |JG SHORT unpacked.004D5858
004D5854  |. 85DB           |TEST EBX,EBX
004D5856  |.^7F B9          \JG SHORT unpacked.004D5811
004D5858  |> 8B5E 60        MOV EBX,DWORD PTR DS:[ESI+60]
004D585B  |. 85DB           TEST EBX,EBX
004D585D  |. 7F 11          JG SHORT unpacked.004D5870
004D585F  |. FF75 F4        PUSH DWORD PTR SS:[EBP-C]           ; /Arg2
004D5862  |. FF75 F0        PUSH DWORD PTR SS:[EBP-10]          ; |Arg1
004D5865  |. 8BD7           MOV EDX,EDI                         ; |
004D5867  |. 33C0           XOR EAX,EAX                         ; |
004D5869  |. E8 9239F3FF    CALL unpacked.00409200              ; \unpacked.00409200
004D586E  |. EB 26          JMP SHORT unpacked.004D5896
004D5870  |> FF75 F4        PUSH DWORD PTR SS:[EBP-C]           ; /存入01
004D5873  |. FF75 F0        PUSH DWORD PTR SS:[EBP-10]          ; |存入刚才累加的结果,刚才说过是注册码的一部分
004D5876  |. 8BD7           MOV EDX,EDI                         ; |
004D5878  |. 8BC3           MOV EAX,EBX                         ; |
004D587A  |. E8 8139F3FF    CALL unpacked.00409200              ; \原来这儿是将二个字符串组合,即01刚才的累加值
004D587F  |. 8B07           MOV EAX,DWORD PTR DS:[EDI]          ;  注册码出来了,那上个CALL,是做什么的,不用我说了吧!

那么算法很清晰了吧:,基本上说来,就是
输入的用户,使用gf258369gf进行组合,组合成“gf258用户名369gf”然后设置一个常数$211d1c93,取组合后字串的长度,进入循环,取组合字串第一个字符asc码,用常数$456除asc码取模,然后加上$211d1c93,结束,第二次循环,取组合字串第二个字符asc码。。。。。。。。。。。。。,呵呵,不用我再叙述了吧。最后的结果前面再加上01,组成新的字符串。

注册机算法:
Var
  i :Byte;
  n :Byte;
  tmp :Integer;
  result:Dword;
  asctmp:Integer;
  tmp2:Integer;
begin
edit1.Text:='gf258'+edit1.Text+'369gf';
n:=Length(Edit1.Text);
n:=n;
tmp:=0;
result:=0;
For i:=1 To n  do
  begin
    result:= result+$211d1c93;
    asctmp:=ord(edit1.text);
    tmp2:=$459 mod asctmp;
    result:=result-tmp2;
  end;
  edit2.text:='01'+IntToHex(result,8);
end;
注册机没有解决中文的问题,我想这个中文的问题不用我再写出来吧,转成HEX,再进行计算就行了。

[ Last edited by 西风 on 2005-3-12 at 02:52 PM ]
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-12-1 11:04
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2005-3-12 15:43:36 | 显示全部楼层
    不错!还差两篇哦!
    注意软件发布时间

    下次最好带[PYG]后缀,以辨别!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-3-30 17:42
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2005-3-12 17:55:48 | 显示全部楼层
    强烈支持!徒弟比师傅强了!好好努力哦!
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2005-3-12 18:20:12 | 显示全部楼层
    谢谢师父帮我顶起,我会更努力,多发贴的?
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-12-22 19:44
  • 签到天数: 44 天

    [LV.5]常住居民I

    发表于 2005-3-12 23:38:02 | 显示全部楼层
    写的很详细
    弱弱的问下
    n:=Length(Edit1.Text);
    n:=n;

    这里的n:=n是什么意思?
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2005-3-13 07:57:09 | 显示全部楼层
    实际上那句是多余了,,呵呵,我做得太冗余了,

    不好意思!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-3-30 17:42
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2005-3-14 17:37:52 | 显示全部楼层
    恩,注册机不错,但是仍有缺陷!哈,比我的好!再鼎!^_^
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-3-16 06:25:01 | 显示全部楼层
    走过路过,看到了一篇大作的说。

    不经意又偷学了点,哎!!!没办法那,现在高手那么多,到哪都能看到收益非浅的文章的说。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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