飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3239|回复: 3

[07版] 加密解密-陪DeDe玩游戏

[复制链接]

该用户从未签到

发表于 2007-4-12 20:42:19 | 显示全部楼层 |阅读模式
标题:加密解密-陪DeDe玩游戏   作者:fonge[PET]


delphi大部分把函数写在自己内部,像showmessage()写出来的对话框,很难找到下断的地方。

DeDe,delphi的克星。DeDe可以导出delphi资源。
像这个delphi按钮,被分析了吧!

__________________________________________________________________________
                                                  图一
是不是,怕了吧!

没关系啦,我们来陪DeDe玩玩,让你认错地方!
好了,开工:
首先我们用delphi写个test小程序!

Code:

  1. unit Unit1;

  2. interface

  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls;

  6. type
  7.   TForm1 = class(TForm)
  8.     Button1: TButton;
  9.     GroupBox1: TGroupBox;
  10.     Label1: TLabel;
  11.     procedure Button1Click(Sender: TObject);
  12.   private
  13.     procedure PlayDeDe;
  14.   public
  15.     { Public declarations }
  16.   end;

  17. var
  18.   Form1: TForm1;

  19. implementation

  20. {$R *.dfm}
  21. procedure TForm1.PlayDeDe;
  22. begin
  23. showmessage('只运行了我');
  24. end;

  25. procedure TForm1.Button1Click(Sender: TObject);
  26. begin
  27. showmessage('DeDe里面看到了这里,但我却没有运行');
  28. PlayDeDe;
  29. end;

  30. end.
复制代码

__________________________________________________________________________


OK,程序写完了,我们来用DeDe定位他吧!
如上[图一],被定位到004530AC。
好,我们用OD调试他,载入,下断bp 004530AC。运行,断下,单步运行到004530C1,返回首个call(也可直接在断下后按Ctrl+F9返回首个call),这个call在delphi程序中一般为
call dword ptr [ebx+120]
  1. 00433904  |.  8BD3               mov     edx, ebx
  2. 00433906  |.  8B83 24010000          mov     eax, dword ptr [ebx+124]
  3. 0043390C  |.  FF93 20010000          call    dword ptr [ebx+120]       ;关注这个call
  4. 00433912  |>  5B                           pop     ebx                              ; 断在这里
  5. 00433913  \.  C3                            retn
复制代码

__________________________________________________________________________

可以得知,调用我们写入的按钮代码正是这个call dword ptr [ebx+120]。
我没分析过DeDe的识别系统,但我还是可以肯定的跟你说,DeDe识别按钮调用不是靠ff9320010000这个。
别问我为什么,他就是这样呗。

我们程序执行时是从call dword ptr[ebx+120]这里进去的,DeDe却不是靠这里识别,那我们就改这里好了,改成我们最终想要调用的地方来执行。[ebx+120]的地方让DeDe去分析吧,不是我们真正执行的代码,随你分析了!
如改成这样90E87AF70100,保存:
  1. 00433906  |.  8B83 24010000 mov     eax, dword ptr [ebx+124]
  2. 0043390C      90                             nop
  3. 0043390D      E8 7AF70100              call    0045308C      ;改成这样,调用我们真正用的
  4. 00433912  |>  5B                            pop     ebx
  5. 00433913  \.  C3                             retn
复制代码

__________________________________________________________________________
执行,成功调用我们想要的地方,再看一看DeDe的导出:
  1. 004530AC   53                     push    ebx
  2. 004530AD   8BD8                          mov     ebx, eax

  3. * Possible String Reference to: ' DeDe里面看到了这里,但我却没有运行'
  4. |
  5. 004530AF   B8CC304500                mov     eax, $004530CC

  6. * Reference to: Dialogs.ShowMessage(AnsiString);
  7. |
  8. 004530B4   E8EF42FDFF                call    004273A8
  9. 004530B9   8BC3                          mov     eax, ebx

  10. * Reference to: crtl._abort;
  11. |           or: dclIntraweb_50_70.@PackageLoad;
  12. |           or: dclIntraweb_50_70.@PackageUnload;
  13. |           or: Intraweb_50_70.@PackageLoad;
  14. |           or: Intraweb_50_70.@PackageUnload;
  15. |           or: IntrawebDB_50_70.@PackageLoad;
  16. |
  17. 004530BB   E8CCFFFFFF                 call    0045308C
  18. 004530C0   5B                              pop     ebx
  19. 004530C1   C3                              ret
复制代码


怎么样,过隐了!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

x
PYG19周年生日快乐!

该用户从未签到

发表于 2007-4-12 21:55:43 | 显示全部楼层
精品文章....
PYG19周年生日快乐!

该用户从未签到

发表于 2007-4-13 08:30:59 | 显示全部楼层
fonge 是对抗破解中的原码强人!
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-4-11 20:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2007-4-24 21:03:48 | 显示全部楼层
    delphi大部分把函数写在自己内部,像showmessage()写出来的对话框,很难找到下断的地方。

    DeDe,delphi的克星。DeDe可以导出delphi资源。
    像这个delphi按钮,被分析了吧!
    110.jpg (84.38 KB)
    2007-4-12 20:42
    __________________________________________________________________________
                                                      图一
    是不是,怕了吧!

    没关系啦,我们来陪DeDe玩玩,让你认错地方!
    好了,开工:
    首先我们用delphi写个test小程序!
    111.jpg (6.95 KB)
    2007-4-12 20:42
    Code:

    [Copy to clipboard] [ - ]CODE:
    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

    type
      TForm1 = class(TForm)
        Button1: TButton;
        GroupBox1: TGroupBox;
        Label1: TLabel;
        procedure Button1Click(Sender: TObject);
      private
        procedure PlayDeDe;
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}
    procedure TForm1.PlayDeDe;
    begin
    showmessage('只运行了我');
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    showmessage('DeDe里面看到了这里,但我却没有运行');
    PlayDeDe;
    end;

    end.
    __________________________________________________________________________


    OK,程序写完了,我们来用DeDe定位他吧!
    如上[图一],被定位到004530AC。
    好,我们用OD调试他,载入,下断bp 004530AC。运行,断下,单步运行到004530C1,返回首个call(也可直接在断下后按Ctrl+F9返回首个call),这个call在delphi程序中一般为
    call dword ptr [ebx+120]

    [Copy to clipboard] [ - ]CODE:
    00433904  |.  8BD3               mov     edx, ebx
    00433906  |.  8B83 24010000          mov     eax, dword ptr [ebx+124]
    0043390C  |.  FF93 20010000          call    dword ptr [ebx+120]       ;关注这个call
    00433912  |>  5B                           pop     ebx                              ; 断在这里
    00433913  \.  C3                            retn
    __________________________________________________________________________

    可以得知,调用我们写入的按钮代码正是这个call dword ptr [ebx+120]。
    我没分析过DeDe的识别系统,但我还是可以肯定的跟你说,DeDe识别按钮调用不是靠ff9320010000这个。
    别问我为什么,他就是这样呗。

    我们程序执行时是从call dword ptr[ebx+120]这里进去的,DeDe却不是靠这里识别,那我们就改这里好了,改成我们最终想要调用的地方来执行。[ebx+120]的地方让DeDe去分析吧,不是我们真正执行的代码,随你分析了!
    如改成这样90E87AF70100,保存:

    [Copy to clipboard] [ - ]CODE:
    00433906  |.  8B83 24010000 mov     eax, dword ptr [ebx+124]
    0043390C      90                             nop
    0043390D      E8 7AF70100              call    0045308C      ;改成这样,调用我们真正用的
    00433912  |>  5B                            pop     ebx
    00433913  \.  C3                             retn
    __________________________________________________________________________
    执行,成功调用我们想要的地方,再看一看DeDe的导出:

    [Copy to clipboard] [ - ]CODE:
    004530AC   53                     push    ebx
    004530AD   8BD8                          mov     ebx, eax

    * Possible String Reference to: ' DeDe里面看到了这里,但我却没有运行'
    |
    004530AF   B8CC304500                mov     eax, $004530CC

    * Reference to: Dialogs.ShowMessage(AnsiString);
    |
    004530B4   E8EF42FDFF                call    004273A8
    004530B9   8BC3                          mov     eax, ebx

    * Reference to: crtl._abort;
    |           or: dclIntraweb_50_70.@PackageLoad;
    |           or: dclIntraweb_50_70.@PackageUnload;
    |           or: Intraweb_50_70.@PackageLoad;
    |           or: Intraweb_50_70.@PackageUnload;
    |           or: IntrawebDB_50_70.@PackageLoad;
    |
    004530BB   E8CCFFFFFF                 call    0045308C
    004530C0   5B                              pop     ebx
    004530C1   C3                              ret
    怎么样,过隐了!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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