首页
社区
课程
招聘
[原创]DaXXoR Crackme-FLTE 算法分析和delphi注册机代码实现
2006-7-24 22:24 5712

[原创]DaXXoR Crackme-FLTE 算法分析和delphi注册机代码实现

2006-7-24 22:24
5712
【文章标题】: DaXXoR Crackme-FLTE 算法分析和delphi注册机代码实现
【作    者】: testkey
【邮    箱】: pediytest@sina.com
【主    页】: http://bbs.pediy.com
【软件名称】: DaXXoR Crackme-FLTE
【下载地址】: 本地下载
【加壳方式】: 无
【保护方式】: 注册码
【工    具】: OD
【作者声明】: 仅做分析研究,无商业用途。
--------------------------------------------------------------------------------
【详细过程】
  根据错误提示字串,我们可以找注册码比较的核心:
  
  进入注册码计算的核心:
  
  004012AA   .  55                  push    ebp
  004012AB   .  89E5                mov     ebpesp
  004012AD   .  57                  push    edi
  004012AE   .  56                  push    esi
  004012AF   .  53                  push    ebx
  004012B0   .  81EC 0C020000       sub     esp, 20C
  004012B6   .  C785 24FEFFFF 10AC4>mov     dword ptr [ebp-1DC], 0041AC10
  004012C0   .  C785 28FEFFFF 6CDF4>mov     dword ptr [ebp-1D8], 0044DF6C
  004012CA   .  8D85 2CFEFFFF       lea     eax, [ebp-1D4]
  004012D0   .  8D55 E8             lea     edx, [ebp-18]
  004012D3   .  8910                mov     [eax], edx
  004012D5   .  BA FF144000         mov     edx, 004014FF
  004012DA   .  8950 04             mov     [eax+4], edx
  004012DD   .  8960 08             mov     [eax+8], esp
  004012E0   .  8D85 0CFEFFFF       lea     eax, [ebp-1F4]
  004012E6   .  890424              mov     [esp], eax
  004012E9   .  E8 42500200         call    00426330
  004012EE   .  C785 64FEFFFF 00000>mov     dword ptr [ebp-19C], 0
  004012F8   .  C785 60FEFFFF 00000>mov     dword ptr [ebp-1A0], 0
  00401302   .  A1 00404500         mov     eax, [454000]
  00401307   .  890424              mov     [esp], eax
  0040130A   .  E8 E1B80200         call    0042CBF0
  0040130F   .  894424 04           mov     [esp+4], eax                     ; |用户名
  00401313   .  8D85 28FFFFFF       lea     eax, [ebp-D8]                    ; |
  00401319   .  890424              mov     [esp], eax                       ; |
  0040131C   .  E8 5F970200         call    <jmp.&msvcrt.strcpy>             ; \strcpy
  00401321   .  A1 04404500         mov     eax, [454004]
  00401326   .  890424              mov     [esp], eax
  00401329   .  E8 C2B80200         call    0042CBF0
  0040132E   .  894424 04           mov     [esp+4], eax                     ; ||假码
  00401332   .  8D85 68FEFFFF       lea     eax, [ebp-198]                   ; ||
  00401338   .  890424              mov     [esp], eax                       ; ||
  0040133B   .  E8 40970200         call    <jmp.&msvcrt.strcpy>             ; |\strcpy
  00401340   .  8D85 28FFFFFF       lea     eax, [ebp-D8]                    ; |
  00401346   .  890424              mov     [esp], eax                       ; |
  00401349   .  E8 22970200         call    <jmp.&msvcrt.strlen>             ; \strlen
  0040134E   .  8985 60FEFFFF       mov     [ebp-1A0], eax                   ;  用户名长度为7
  00401354   .  83BD 60FEFFFF 06    cmp     dword ptr [ebp-1A0], 6
  0040135B   .  7F 05               jg      short 00401362
  0040135D   .  E9 30020000         jmp     00401592
  00401362   >  90                  nop
  00401363   >  8B85 64FEFFFF       mov     eax, [ebp-19C]
  00401369   .  3B85 60FEFFFF       cmp     eax, [ebp-1A0]
  0040136F   .  7C 05               jl      short 00401376
  00401371   .  E9 89000000         jmp     004013FF
  00401376   > \8D45 E8             lea     eax, [ebp-18]
  00401379   .  0385 64FEFFFF       add     eax, [ebp-19C]
  0040137F   .  8D88 40FFFFFF       lea     ecx, [eax-C0]                            ;  用户名 "testkey"
  00401385   .  8D45 E8             lea     eax, [ebp-18]
  00401388   .  0385 64FEFFFF       add     eax, [ebp-19C]
  0040138E   .  8D90 40FFFFFF       lea     edx, [eax-C0]                            ;  用户名
  00401394   .  0FB685 60FEFFFF     movzx   eaxbyte ptr [ebp-1A0]                  ;  用户名长度7
  0040139B   .  0202                add     al, [edx]                                ;  7+HEX
  0040139D   .  2C 04               sub     al, 4                                    ;  结果-4
  0040139F   .  8801                mov     [ecx], al                                ;  w
  004013A1   .  8D45 E8             lea     eax, [ebp-18]
  004013A4   .  0385 64FEFFFF       add     eax, [ebp-19C]
  004013AA   .  8D88 40FFFFFF       lea     ecx, [eax-C0]
  004013B0   .  8D45 E8             lea     eax, [ebp-18]
  004013B3   .  0385 64FEFFFF       add     eax, [ebp-19C]
  004013B9   .  2D C0000000         sub     eax, 0C0
  004013BE   .  0FB695 60FEFFFF     movzx   edxbyte ptr [ebp-1A0]                  ;  7
  004013C5   .  0FB600              movzx   eaxbyte ptr [eax]                      ;  取HEX
  004013C8   .  28D0                sub     aldl                                   ;  hex-7
  004013CA   .  2C 02               sub     al, 2                                    ;  hex-2
  004013CC   .  8801                mov     [ecx], al                                
  004013CE   .  8D45 E8             lea     eax, [ebp-18]
  004013D1   .  0385 64FEFFFF       add     eax, [ebp-19C]
  004013D7   .  8D90 40FFFFFF       lea     edx, [eax-C0]                            
  004013DD   .  8D45 E8             lea     eax, [ebp-18]
  004013E0   .  0385 64FEFFFF       add     eax, [ebp-19C]
  004013E6   .  2D C0000000         sub     eax, 0C0
  004013EB   .  0FB600              movzx   eaxbyte ptr [eax]                      ;  新hex
  004013EE   .  04 02               add     al, 2                                    ;  HEX+2
  004013F0   .  8802                mov     [edx], al                                ;  顺次得到新字符串
  004013F2   .  8D85 64FEFFFF       lea     eax, [ebp-19C]
  004013F8   .  FF00                inc     dword ptr [eax]
  004013FA   .^ E9 64FFFFFF         jmp     00401363
  004013FF   >  C785 64FEFFFF 00000>mov     dword ptr [ebp-19C], 0
  00401409   .  8D85 48FEFFFF       lea     eax, [ebp-1B8]
  0040140F   .  890424              mov     [esp], eax
  00401412   .  E8 85030400         call    0044179C
  00401417   .  8D85 38FEFFFF       lea     eax, [ebp-1C8]
  0040141D   .  890424              mov     [esp], eax
  00401420   .  E8 77030400         call    0044179C
  00401425   .  8D85 28FFFFFF       lea     eax, [ebp-D8]                            ;  新字符串paopgau
  0040142B   .  894424 04           mov     [esp+4], eax
  0040142F   .  8D85 48FEFFFF       lea     eax, [ebp-1B8]
  00401435   .  890424              mov     [esp], eax
  00401438   .  C785 10FEFFFF 01000>mov     dword ptr [ebp-1F0], 1
  00401442   .  E8 F5090400         call    00441E3C
  00401447   .  C74424 08 90124000  mov     dword ptr [esp+8], 00401290
  0040144F   .  C74424 04 03000000  mov     dword ptr [esp+4], 3
  00401457   .  8D85 48FEFFFF       lea     eax, [ebp-1B8]
  0040145D   .  890424              mov     [esp], eax
  00401460   .  E8 57F30300         call    004407BC
  00401465   .  C74424 08 90124000  mov     dword ptr [esp+8], 00401290
  0040146D   .  C74424 04 05000000  mov     dword ptr [esp+4], 5
  00401475   .  8D85 48FEFFFF       lea     eax, [ebp-1B8]
  0040147B   .  890424              mov     [esp], eax
  0040147E   .  E8 39F30300         call    004407BC
  00401483   .  C74424 08 92124000  mov     dword ptr [esp+8], 00401292              ;  需要插入的字符串ASCII "axd"
  0040148B   .  C74424 04 06000000  mov     dword ptr [esp+4], 6
  00401493   .  8D85 48FEFFFF       lea     eax, [ebp-1B8]
  00401499   .  890424              mov     [esp], eax
  0040149C   .  E8 1BF30300         call    004407BC
  004014A1   .  8D85 68FEFFFF       lea     eax, [ebp-198]
  004014A7   .  894424 04           mov     [esp+4], eax
  004014AB   .  8D85 38FEFFFF       lea     eax, [ebp-1C8]
  004014B1   .  890424              mov     [esp], eax
  004014B4   .  E8 83090400         call    00441E3C
  004014B9   .  8D85 48FEFFFF       lea     eax, [ebp-1B8]
  004014BF   .  894424 04           mov     [esp+4], eax
  004014C3   .  8D85 38FEFFFF       lea     eax, [ebp-1C8]
  004014C9   .  890424              mov     [esp], eax
  004014CC   .  E8 5BB90400         call    0044CE2C         处理后的字符串"pao-p-axdgau"
  004014CC   .  E8 5BB90400         call    0044CE2C
  004014D1   .  84C0                test    alal                           ; |
  004014D3   .  74 61               je      short 00401536                   ; |
  004014D5   .  C74424 0C 40000000  mov     dword ptr [esp+C], 40            ; |
  004014DD   .  C74424 08 96124000  mov     dword ptr [esp+8], 00401296      ; |ASCII "woot"
  004014E5   .  C74424 04 9B124000  mov     dword ptr [esp+4], 0040129B      ; |ASCII "You Solved It"
  004014ED   .  A1 08404500         mov     eax, [454008]                    ; |
  004014F2   .  890424              mov     [esp], eax                       ; |
  004014F5   .  E8 F69A0200         call    <jmp.&USER32.MessageBoxA>        ; \MessageBoxA
  004014FA   .  83EC 10             sub     esp, 10
  004014FD   .  EB 37               jmp     short 00401536

  ==============================================================================================================
  上面的算法实际上可以简化为:
  
  1、把用户名的每一位的字符的hex值-4,得到新的字符串。
  2、把新的字符串拆开并与字符串'axd' 组成注册码,格式新字符串前3位+'-'+第4位+'-'+'axd'+剩余的字符串
  ==============================================================================================================
  用delphi实现注册代码为:
  
  var
    a,i,l:Integer;
    name1,sn:String;
  begin
    l:=length(edit1.text);
    if l=0 then exit;
    name1:=edit1.text;
    sn:='';
    a:=0;
    for i:=1 to l do
    begin
      a:=ord(name1[i])-4;
      sn:=sn+chr(a);
    end;
    sn:=copy(sn,1,3)+'-'+copy(sn,4,1)+'-axd'+copy(sn,5,l-4);
    edit2.text:=sn;
  end;
  
  
--------------------------------------------------------------------------------
【总结】
  算法简单,适合新手练习。
  
  自己水平不行,转挑软柿子捏,惭愧ing。
  
--------------------------------------------------------------------------------
【版权声明】: 转载请注明文章出自http://www.pediy.com

本代码的着色效果由xTiNt自动完成
下载xTiNt http://211.90.75.84/web/kanaun/download/xTiNt.rar

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
免费 7
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回