使用Dede破解Delphi软件实战

时间:2023-01-10 11:00:04

昨日练习了一把如何破解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,找到这两个地址。做你该做的事!

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

使用Dede破解Delphi软件实战的更多相关文章

  1. puppet实现主从部署各种软件实战参考模型

    puppet实现主从部署各种软件实战参考模型   实验要求:     1.我将准备三个节点 node2 , node3 , node4 2.我们想让节点node3部署ntp,nginx ;节点node ...

  2. 没有装delphi软件则须修改程序的Uses单元,去掉QDialogs qtintf.dll

    转: 花了几天的功夫,终于完成了一个delphi调用webservice(C#)的任务,发现了好多问题,不过还是解决了,和大家分享一下.首先,就是调用时一个问题,如果你的webservice没有数据库 ...

  3. 在Windows10中破解一些软件

    在Windows10中破解一些软件 一.前言   以前的windows是很好破解的,这里说的windows包含了windows的一些产品,比如说office,visio等等,可是自从到了新版的wind ...

  4. 关于delphi软件运行出现Invalid floating point operation的错误的解决办法

    关于delphi软件运行出现Invalid floating point operation的错误的解决办法   关于delphi软件运行出现Invalid floating point operat ...

  5. SSH密码暴力破解及防御实战

    SSH密码暴力破解及防御实战 一.Hydra(海德拉) 1.1 指定用户破解 二.Medusa(美杜莎) 2.1 语法参数 2.2 破解SSH密码 三.Patator 3.1 破解SSH密码 四.Br ...

  6. 深入理解.NET程序的原理 谈一谈破解.NET软件的工具和方法

    最近一段时间不忙,闲下来的空闲时间,重读了一下CLR的原理,回味一下有关程序集的的知识,顺便练了一下手,学习致用,破解了若干个.NET平台的软件.以此来反观.NET程序开发中,需要注意的一些问题. 基 ...

  7. 如何破解.net软件

    .net sdk中有不少很强大的工具,可以轻易完成对.net程序的破解,只要你懂得一点IL语言就行.现在以一个 M 软件为例,介绍整个破解过程. 第零步:用反编译工具分析软件的可执行文件,制订破解逻辑 ...

  8. 使用 InstallShield 制作 Delphi 软件安装包

    软件版本: InstallShield 12 Delphi 5/7 SQL Server 2005 一.配置软件信息 二.软件安装的需求配置 三.安装架构 四.安装需要的文件 软件的安装路径.可执行文 ...

  9. delphi软件启动的顺序解密。

    运行顺序 1.主窗体的oncreate -- onshow ---- onActivate ---- onResize --- 然后继续走,这个时候主窗体已经显示出来了,猜想delphi的思路是先让主 ...

随机推荐

  1. EF架构~AutoMapper对象映射工具简化了实体赋值的过程

    回到目录 AutoMapper是一个.NET的对象映射工具,一般地,我们进行面向服务的开发时,都会涉及到DTO的概念,即数据传输对象,而为了减少系统的负载,一般我们不会把整个表的字段作为传输的数据,而 ...

  2. 我的Android第二章:Android目录结构

    嗨!各位,小编又和大家分享知识啦,在昨天的博客笔记中小编给大家讲解了如何去配置Android工具以及SDK中的一些配置,那在今天的学习小编会带给大家哪些Android知识呢?首先我们看一下今天的学习目 ...

  3. nginx+tomcat集群配置(3)---获取真实客户端IP

    前言: 在初步构建的nginx+tomcat服务集群时, 发现webserver获取到的客户端ip都是同一个, 皆为作为反向代理服务的nginx所在的机器IP. 这不太符合我们的基本需求, 为将来的数 ...

  4. 常用js正则

    selectedName = selectedName.replace(/,$/, '');//去除尾部字符串 selectedCode = selectedCode.replace(/,$/, '' ...

  5. App自动更新之通知栏下载

    见证过博客园的多次升级,你也希望你的软件通过更新发布新特性通知用户吧,是的.这篇文章是android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用. 1.设计思路,使用Versio ...

  6. debian安装jdk6

    一般用命令 apt-get install sun-java6-jdk ,会报找不到源的错误. vim /etc/apt/sources.list # 於最下方新增此行 deb http://ftp. ...

  7. IOS开发——Protocol使用协议

    protocol ['prəutəkɔl] (样例:http://blog.sina.com.cn/s/blog_6aafe9c90100yozz.html ) 一.说明  两个类进行通讯,用协议就比 ...

  8. Linux基础四

    vim编辑器 vi编辑器的增强版,语法高亮等扩展功能 vim三种工作模式  a,i,o等键输出模式 命令模式,输入模式,末行模式 模式间的切换 a:当前行插入 i:当前行插入 o:全新一行插入 :键末 ...

  9. 前端学习笔记之HTML body内常用标签

    阅读目录 一 HTML语义化 二 字符实体 三 h系列标签 四 p标签 五 img标签 六 a标签 七 列表标签 八 table标签 九 form标签 一 HTML语义化 body中的标签是会显示到浏 ...

  10. NB-IoT省电模式:PSM、DRX、eDRX【转】

    转自:https://blog.csdn.net/zoomdy/article/details/80447372 NB-IoT支持三种省电模式:PSM (Power Saving Mode,省电模式) ...