zoukankan      html  css  js  c++  java
  • 使用Dede破解Delphi软件实战

    昨日练习了一把如何破解Delphi软件。下面和大家分享一下破解的过程,对初学者,希望有授之以渔的作用。

    首先分析我们的目标软件,不要问我破解的是什么软件。保护知识产权,要从娃娃抓取。

    目标软件是一个销售系统,它有时间限制,安装完成后可以正常运行,把系统时间调后一年,软件不能正常执行,再把系统时间调回,效果依然一样。

    在使用过期软件时,系统依然能够登陆,但是在点击菜单的时候,弹出您使用的软件已经过期的字样。

    下手:

    1.观察程序的目录结构,程序主要就是一个exe文件,其余有两个ddl,察看属性,是borland公司的。

    2.使用UltraEdit打开这个软件的主执行文件,看看头部,没有加壳。看看中间的资源代码,出现TLabel等开头的字符,显然该软件是Delphi开发的

    3.使用Dede打开这个软件的exe文件,进行分析和二次详细分析。

    4我们知道,在登陆过程中显然没有进行过期验证,而是在菜单的表单弹出来之前验证的,目标明确,我们直奔主Form文件。打开窗体标签,从中发现了TMainForm,在右边的代码中我们看到了工具栏常见的代码

    object ToolButton4: TToolButton
            Left = 124
            Top = 0
            Cursor = crHandPoint
            Hint = '客户资料管理'
            Caption = 'ToolButton4'
            ImageIndex = 4
            OnClick = ToolButton4Click
          end

    我们从中选取几个按钮的事件。例如 OnClick = ToolButton4Click 和OnClick = ToolButton5Click

    5。进入过程标签,从里面选取MainFormUnit,在右边的事件地址列表中找到我们刚才选取的ToolButton4Click,ToolButton5Click,点击右键,反汇编。生成的代码均包含这样一段

    * Reference to : TMainForm.Proc_005FA21C()
    |
    005FABB4   E863F6FFFF             call    005FA21C
    005FABB9   84C0                   test    al, al
    005FABBB   0F85B3000000           jnz     005FAC74

    在这里,如果jnz跳转了,那么整个过程就结束了,毫无疑问,jnz上面的call就是进行验证的地方。

    双击这个call,我们跟踪进去。没有什么特别的地方,但是发现这样的代码

    * Possible String Reference to: '当数据备份与恢复窗口打开时,不能打开
    |                                其它的窗口'
    |
    005FA24B   BA64A25F00             mov     edx, $005FA264


    也就是说这个全局函数在检验是否过期之后,还进行其他的合法性检查,如果察看其他的click事件,会发现还有一些用户权限的检查。那么我们往上找

    * Reference to : THYMain._PROC_00547434()
    |
    005FA228   E807D2F4FF             call    00547434
    005FA22D   84C0                   test    al, al
    005FA22F   7404                   jz      005FA235
    005FA231   B301                   mov     bl, $01
    005FA233   EB22                   jmp     005FA257
     

    这个00547434,如果执行后没问题,jz才可以继续执行。可疑,我们继续跟踪进去,双击该函数

    奇迹发生了,我们看到了什么?

    * Possible String Reference to: '您使用的软件是试用版,试用期限将到?
    |                                �绻���绦�褂茫�肽�胛颐橇�担?
    |                                购买软件的使用权限。不然将影响您的?
    |                                ぷ?您已输入的数据不会丢失,注册后?
    |                                杉绦�褂?'
    |
    00547457   BAA8745400             mov     edx, $005474A8


    显然,这个函数就是判断过期的地方,一旦过期就会发出警告窗口。

    地方找到了,我们仔细分析一下他的结构,有两个地方可以发生检查

    00547434   53                     push    ebx
    00547435   56                     push    esi
    00547436   8BF0                   mov     esi, eax
    00547438   33DB                   xor     ebx, ebx

    * Reference to field THYMain.OFFS_003C
    |
    0054743A   837E3C02               cmp     dword ptr [esi+$3C], +$02
    0054743E   7407                   jz      00547447
    00547440   8BC6                   mov     eax, esi

    * Reference to: HYMainUnit.Proc_00545E00
    |
    00547442   E8B9E9FFFF             call    00545E00

    * Reference to field THYMain.OFFS_003C
    |
    00547447   837E3C01               cmp     dword ptr [esi+$3C], +$01
    0054744B   7522                   jnz     0054746F

    * Reference to TApplication instance
    |
    0054744D   A138316000             mov     eax, dword ptr [$00603138]
    00547452   8B00                   mov     eax, [eax]

    * Reference to field TApplication.Handle : HWnd
    |
    00547454   8B4024                 mov     eax, [eax+$24]

    * Possible String Reference to: '您使用的软件是试用版,试用期限将到?
    |                                �绻���绦�褂茫�肽�胛颐橇�担?
    |                                购买软件的使用权限。不然将影响您的?
    |                                ぷ?您已输入的数据不会丢失,注册后?
    |                                杉绦�褂?'
    |
    00547457   BAA8745400             mov     edx, $005474A8

    * Reference to: Unit_00500794.Proc_00500ED4
    |
    0054745C   E8739AFBFF             call    00500ED4
    00547461   33D2                   xor     edx, edx

    * Reference to field THYMain.OFFS_00C4
    |
    00547463   8B86C4000000           mov     eax, [esi+$00C4]

    * Possible reference to virtual method THYMain.OFFS_00C0
    |
    00547469   FF96C0000000           call    dword ptr [esi+$00C0]

    * Reference to field THYMain.OFFS_003C
    |
    0054746F   837E3C02               cmp     dword ptr [esi+$3C], +$02
    00547473   7524                   jnz     00547499

    * Reference to TApplication instance
    |
    00547475   A138316000             mov     eax, dword ptr [$00603138]
    0054747A   8B00                   mov     eax, [eax]

    * Reference to field TApplication.Handle : HWnd
    |
    0054747C   8B4024                 mov     eax, [eax+$24]

    * Possible String Reference to: '您使用的软件是试用版,如果您要继续?
    |                                褂茫�肽�胛颐橇�担�郝蛉砑�氖褂?
    |                                权限(您已输入的数据不会丢失,注册后
    |                                可继续使用)'
    |
    0054747F   BA48755400             mov     edx, $00547548

    * Reference to: Unit_00500794.Proc_00500ED4
    |
    00547484   E84B9AFBFF             call    00500ED4
    00547489   33D2                   xor     edx, edx

    * Reference to field THYMain.OFFS_00C4
    |
    0054748B   8B86C4000000           mov     eax, [esi+$00C4]

    * Possible reference to virtual method THYMain.OFFS_00C0
    |
    00547491   FF96C0000000           call    dword ptr [esi+$00C0]
    00547497   B301                   mov     bl, $01
    00547499   8BC3                   mov     eax, ebx
    0054749B   5E                     pop     esi
    0054749C   5B                     pop     ebx
    0054749D   C3                     ret

    一个是0054744B jnz 0054746F

    另一个是00547473 jnz 00547499

    显然,下面要做的不用说了吧,就是75->EB的工作了,呵呵。总算舒了一口气,

    6.注意哦,这里的地址都是相对地址,Dede提供了一个转到物理地址的工具,在工具菜单里面。我们使用它得到这两句的物理地址是0014684B,00146873

    7不用多了,打开UltraEdit,找到这两个地址。做你该做的事!

    后记:本科苦学汇编语言,今天总算发挥了点作用,不知道是欣慰呢,还是无奈!

  • 相关阅读:
    多态与封装
    [Vue] karme/jasmine/webpack/vue搭建测试环境
    [Vue] vue中setInterval的问题
    hosts文件的作用
    [Nodejs] node写个helloworld
    [JavaScript] Cookie,localStorage,sessionStorage概述
    [Vue] vuex进行组件间通讯
    常用工具网站(记事,图表等)
    npm安装github包的方式
    常用的练习网站
  • 原文地址:https://www.cnblogs.com/jijm123/p/10321173.html
Copyright © 2011-2022 走看看