飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 118|回复: 2

[原创] 破解一个自己写的Delphi7.0程序

[复制链接]
  • TA的每日心情
    开心
    2024-11-29 10:09
  • 签到天数: 44 天

    [LV.5]常住居民I

    发表于 昨天 16:14 | 显示全部楼层 |阅读模式
    unit MainUnit;

    interface

    uses
      Windows, Messages, SysUtils, Classes, Graphics,
      Controls, Forms, Dialogs, StdCtrls;
    type
      TfrmMain=class(TForm)
        btnFunc1: TButton;
        btnFunc2: TButton;
        lblTip: TLabel;
        procedure FormCreate(Sender : TObject);
        procedure btnFunc1Click(Sender : TObject);
        procedure btnFunc2Click(Sender : TObject);
        procedure _PROC_00452954(Sender : TObject);
        procedure _PROC_00452BE5(Sender : TObject);
        procedure _PROC_00452C14(Sender : TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end ;

    var
      frmMain: TfrmMain;

    {This file is generated by DeDe Ver 3.99a Copyright (c) 1999-2002 DaFixer}

    implementation

    {$R *.DFM}

    procedure TfrmMain.FormCreate(Sender : TObject);
    begin
    (*
    00452A28   55                     push    ebp
    00452A29   8BEC                   mov     ebp, esp
    00452A2B   83C4F8                 add     esp, -$08
    00452A2E   8955F8                 mov     [ebp-$08], edx
    00452A31   8945FC                 mov     [ebp-$04], eax

    * Reference to frmMain
    |
    00452A34   8B45FC                 mov     eax, [ebp-$04]
    * Reference to : TfrmMain._PROC_00452954()
    |
    00452A37   E818FFFFFF             call    00452954
    * Reference to frmMain
    |
    00452A3C   8B55FC                 mov     edx, [ebp-$04]
    * Reference to field TfrmMain.OFFS_0304
    |
    00452A3F   888204030000           mov     [edx+$0304], al
    * Reference to frmMain
    |
    00452A45   8B45FC                 mov     eax, [ebp-$04]
    * Reference to field TfrmMain.OFFS_0304
    |
    00452A48   80B80403000000         cmp     byte ptr [eax+$0304], $00
    00452A4F   7542                   jnz     00452A93
    00452A51   33C9                   xor     ecx, ecx
    00452A53   B201                   mov     dl, $01
    * Reference to class TfrmReg
    |
    00452A55   A110254500             mov     eax, dword ptr [$00452510]
    * Reference to : TApplication._PROC_004497C0()
    |
    00452A5A   E8616DFFFF             call    004497C0
    * Reference to TfrmReg instance
    |
    00452A5F   8B1570424500           mov     edx, [$00454270]
    00452A65   8902                   mov     [edx], eax
    * Reference to TfrmReg instance
    |
    00452A67   A170424500             mov     eax, dword ptr [$00454270]
    00452A6C   8B00                   mov     eax, [eax]
    00452A6E   8B10                   mov     edx, [eax]
    * Reference to method TfrmReg.ShowModal()
    |
    00452A70   FF92EC000000           call    dword ptr [edx+$00EC]
    * Reference to TfrmReg instance
    |
    00452A76   A170424500             mov     eax, dword ptr [$00454270]
    00452A7B   8B00                   mov     eax, [eax]
    * Reference to: System.Proc_00403630
    |
    00452A7D   E8AE0BFBFF             call    00403630
    * Reference to frmMain
    |
    00452A82   8B45FC                 mov     eax, [ebp-$04]
    * Reference to : TfrmMain._PROC_00452954()
    |
    00452A85   E8CAFEFFFF             call    00452954
    * Reference to frmMain
    |
    00452A8A   8B55FC                 mov     edx, [ebp-$04]
    * Reference to field TfrmMain.OFFS_0304
    |
    00452A8D   888204030000           mov     [edx+$0304], al
    * Reference to frmMain
    |
    00452A93   8B45FC                 mov     eax, [ebp-$04]
    * Reference to field TfrmMain.OFFS_0304
    |
    00452A96   8A9004030000           mov     dl, byte ptr [eax+$0304]
    * Reference to frmMain
    |
    00452A9C   8B45FC                 mov     eax, [ebp-$04]
    * Reference to control TfrmMain.btnFunc1 : TButton
    |
    00452A9F   8B80F8020000           mov     eax, [eax+$02F8]
    00452AA5   8B08                   mov     ecx, [eax]
    * Reference to method TButton.SetEnabled(Boolean)
    |
    00452AA7   FF5164                 call    dword ptr [ecx+$64]
    * Reference to frmMain
    |
    00452AAA   8B45FC                 mov     eax, [ebp-$04]
    * Reference to field TfrmMain.OFFS_0304
    |
    00452AAD   8A9004030000           mov     dl, byte ptr [eax+$0304]
    * Reference to frmMain
    |
    00452AB3   8B45FC                 mov     eax, [ebp-$04]
    * Reference to control TfrmMain.btnFunc2 : TButton
    |
    00452AB6   8B80FC020000           mov     eax, [eax+$02FC]
    00452ABC   8B08                   mov     ecx, [eax]
    * Reference to method TButton.SetEnabled(Boolean)
    |
    00452ABE   FF5164                 call    dword ptr [ecx+$64]
    * Reference to frmMain
    |
    00452AC1   8B45FC                 mov     eax, [ebp-$04]
    * Reference to field TfrmMain.OFFS_0304
    |
    00452AC4   80B80403000000         cmp     byte ptr [eax+$0304], $00
    00452ACB   7415                   jz      00452AE2
    * Possible String Reference to: '软件已注册,全部功能可用'
    |
    00452ACD   BA042B4500             mov     edx, $00452B04
    * Reference to frmMain
    |
    00452AD2   8B45FC                 mov     eax, [ebp-$04]
    * Reference to control TfrmMain.lblTip : TLabel
    |
    00452AD5   8B8000030000           mov     eax, [eax+$0300]
    * Reference to: Controls.Proc_00431A58
    |
    00452ADB   E878EFFDFF             call    00431A58
    00452AE0   EB13                   jmp     00452AF5
    * Possible String Reference to: '未注册,请放入sRegFile2020.Dat 密钥文件... ... ...'
    |
    00452AE2   BA282B4500             mov     edx, $00452B28
    * Reference to frmMain
    |
    00452AE7   8B45FC                 mov     eax, [ebp-$04]
    * Reference to control TfrmMain.lblTip : TLabel
    |
    00452AEA   8B8000030000           mov     eax, [eax+$0300]
    * Reference to: Controls.Proc_00431A58
    |
    00452AF0   E863EFFDFF             call    00431A58
    00452AF5   59                     pop     ecx
    00452AF6   59                     pop     ecx
    00452AF7   5D                     pop     ebp
    00452AF8   C3                     ret
    *)
    end;

    procedure TfrmMain.btnFunc1Click(Sender : TObject);
    begin
    (*
    00452B5C   55                     push    ebp
    00452B5D   8BEC                   mov     ebp, esp
    00452B5F   83C4F8                 add     esp, -$08
    00452B62   8955F8                 mov     [ebp-$08], edx
    00452B65   8945FC                 mov     [ebp-$04], eax
    * Possible String Reference to: '功能1执行成功,仅注册后可访问'
    |
    00452B68   B8802B4500             mov     eax, $00452B80
    * Reference to : TMessageForm._PROC_00427930()
    |
    00452B6D   E8BE4DFDFF             call    00427930
    00452B72   59                     pop     ecx
    00452B73   59                     pop     ecx
    00452B74   5D                     pop     ebp
    00452B75   C3                     ret
    *)
    end;

    procedure TfrmMain.btnFunc2Click(Sender : TObject);
    begin
    (*
    00452BA0   55                     push    ebp
    00452BA1   8BEC                   mov     ebp, esp
    00452BA3   83C4F8                 add     esp, -$08
    00452BA6   8955F8                 mov     [ebp-$08], edx
    00452BA9   8945FC                 mov     [ebp-$04], eax
    * Possible String Reference to: '功能2执行成功,仅注册后可访问'
    |
    00452BAC   B8C42B4500             mov     eax, $00452BC4
    * Reference to : TMessageForm._PROC_00427930()
    |
    00452BB1   E87A4DFDFF             call    00427930
    00452BB6   59                     pop     ecx
    00452BB7   59                     pop     ecx
    00452BB8   5D                     pop     ebp
    00452BB9   C3                     ret
    *)
    end;

    procedure TfrmMain._PROC_00452954(Sender : TObject);
    begin
    (*
    00452954   55                     push    ebp
    00452955   8BEC                   mov     ebp, esp
    00452957   81C428FEFFFF           add     esp, $FFFFFE28
    0045295D   33D2                   xor     edx, edx
    0045295F   8955F4                 mov     [ebp-$0C], edx
    00452962   8945FC                 mov     [ebp-$04], eax
    00452965   33C0                   xor     eax, eax
    00452967   55                     push    ebp
    00452968   68FC294500             push    $004529FC
    ***** TRY
    |
    0045296D   64FF30                 push    dword ptr fs:[eax]
    00452970   648920                 mov     fs:[eax], esp
    00452973   C645FB00               mov     byte ptr [ebp-$05], $00
    * Possible String Reference to: 'sRegFile2020.Dat'
    |
    00452977   B8142A4500             mov     eax, $00452A14; // 密钥文件名字符串地址
    * Reference to: Unit_0040727C.Proc_00408714
    |
    0045297C   E8935DFBFF             call    00408714; // 调用文件存在性检测函数
    00452981   84C0                   test    al, al;   // 判断文件是否存在(al返回值)
    // -------------------------------修改点1:jmp 004529E0------------------------------------------------------------------
    00452983   7461                   jz      004529E6; // 文件不存在直接跳出校验逻辑
    * Possible String Reference to: 'sRegFile2020.Dat'
    |
    00452985   BA142A4500             mov     edx, $00452A14
    0045298A   8D8528FEFFFF           lea     eax, [ebp+$FFFFFE28]
    * Reference to: System.Proc_00402C58
    |
    00452990   E8C302FBFF             call    00402C58
    00452995   8D8528FEFFFF           lea     eax, [ebp+$FFFFFE28]
    * Reference to: System.Proc_004029F4
    |
    0045299B   E85400FBFF             call    004029F4
    * Reference to: System.Proc_00402864
    |
    004529A0   E8BFFEFAFF             call    00402864
    004529A5   8D55F4                 lea     edx, [ebp-$0C]
    004529A8   8D8528FEFFFF           lea     eax, [ebp+$FFFFFE28]
    * Reference to: System.Proc_00402FD0
    |
    004529AE   E81D06FBFF             call    00402FD0
    004529B3   8D8528FEFFFF           lea     eax, [ebp+$FFFFFE28]
    * Reference to: System.Proc_0040303C
    |
    004529B9   E87E06FBFF             call    0040303C
    * Reference to: System.Proc_00402864
    |
    004529BE   E8A1FEFAFF             call    00402864
    004529C3   8D8528FEFFFF           lea     eax, [ebp+$FFFFFE28]
    * Reference to: System.Proc_00402D14
    |
    004529C9   E84603FBFF             call    00402D14
    * Reference to: System.Proc_00402864
    |
    004529CE   E891FEFAFF             call    00402864
    004529D3   8B45F4                 mov     eax, [ebp-$0C]
    * Reference to: MainUnit.Proc_004528F4
    |
    004529D6   E819FFFFFF             call    004528F4; // 密钥校验算法函数
    004529DB   3D21C3E498             cmp     eax, $98E4C321; // 对比校验正确哈希值
    004529E0   7504                   jnz     004529E6; // 校验不匹配跳过注册标记赋值
    // -------------------------------修改点2:jmp 004529E2--------------------------------------------------------------
    004529E2   C645FB01               mov     byte ptr [ebp-$05], $01; // 校验通过,标记置1(已注册)
    004529E6   33C0                   xor     eax, eax
    004529E8   5A                     pop     edx
    004529E9   59                     pop     ecx
    004529EA   59                     pop     ecx
    004529EB   648910                 mov     fs:[eax], edx
    ****** FINALLY
    |
    * Possible String Reference to: '奅麐錧?'
    |
    004529EE   68032A4500             push    $00452A03
    004529F3   8D45F4                 lea     eax, [ebp-$0C]
    * Reference to: System.Proc_00404380
    |
    004529F6   E88519FBFF             call    00404380
    004529FB   C3                     ret
    004529FC   E98313FBFF             jmp     00403D84
    00452A01   EBF0                   jmp     004529F3
    ****** END
    |
    00452A03   8A45FB                 mov     al, byte ptr [ebp-$05]
    00452A06   8BE5                   mov     esp, ebp
    00452A08   5D                     pop     ebp
    00452A09   C3                     ret
    *)
    end;

    procedure TfrmMain._PROC_00452BE5(Sender : TObject);
    begin
    (*
    00452BE5   8BEC                   mov     ebp, esp
    00452BE7   33C0                   xor     eax, eax
    00452BE9   55                     push    ebp
    00452BEA   68092C4500             push    $00452C09
    ***** TRY
    |
    00452BEF   64FF30                 push    dword ptr fs:[eax]
    00452BF2   648920                 mov     fs:[eax], esp
    00452BF5   FF05085C4500           inc     dword ptr [$00455C08]
    00452BFB   33C0                   xor     eax, eax
    00452BFD   5A                     pop     edx
    00452BFE   59                     pop     ecx
    00452BFF   59                     pop     ecx
    00452C00   648910                 mov     fs:[eax], edx
    ****** FINALLY
    |
    00452C03   68102C4500             push    $00452C10
    00452C08   C3                     ret
    00452C09   E97611FBFF             jmp     00403D84
    00452C0E   EBF8                   jmp     00452C08
    ****** END
    |
    00452C10   5D                     pop     ebp
    00452C11   C3                     ret
    *)
    end;

    procedure TfrmMain._PROC_00452C14(Sender : TObject);
    begin
    (*
    00452C14   832D085C450001         sub     dword ptr [$00455C08], +$01
    00452C1B   C3                     ret
    *)
    end;

    end.

    反汇编里标注了2处破解点,纯属于没入门的玩具,高手飘过吧......!



    破解练习.rar

    238.14 KB, 下载次数: 0, 下载积分: 飘云币 -2 枚

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2025-1-14 13:49
  • 签到天数: 393 天

    [LV.9]以坛为家II

    发表于 昨天 17:03 | 显示全部楼层
    PYG有你更精彩!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-1-13 09:04
  • 签到天数: 339 天

    [LV.8]以坛为家I

    发表于 昨天 17:13 | 显示全部楼层
    PYG21周年生日快乐
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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