热搜词
发表于 2020-1-17 11:20:25 | 显示全部楼层 |阅读模式

昨日练习了一把如何破解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()

|

005fabb4e863f6ffffcall005fa21c

005fabb984c0testal, al

005fabbb0f85b3000000jnz005fac74

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

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

* possible string reference to: '当数据备份与恢复窗口打开时,不能打开

|其它的窗口'

|

005fa24bba64a25f00movedx, $005fa264

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

* reference to : thymain._proc_00547434()

|

005fa228e807d2f4ffcall00547434

005fa22d84c0testal, al

005fa22f7404jz005fa235

005fa231b301movbl, $01

005fa233eb22jmp005fa257

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

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

* possible string reference to: '您使用的软件是试用版,试用期限将到?

|绻绦褂茫肽胛颐橇担?

|购买软件的使用权限。不然将影响您的?

|ぷ?您已输入的数据不会丢失,注册后?

|杉绦褂?'

|

00547457baa8745400movedx, $005474a8

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

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

0054743453pushebx

0054743556pushesi

005474368bf0movesi, eax

0054743833dbxorebx, ebx

* reference to field thymain.offs_003c

|

0054743a837e3c02cmpdword ptr [esi+$3c], +$02

0054743e7407jz00547447

005474408bc6moveax, esi

* reference to: hymainunit.proc_00545e00

|

00547442e8b9e9ffffcall00545e00

* reference to field thymain.offs_003c

|

00547447837e3c01cmpdword ptr [esi+$3c], +$01

0054744b7522jnz0054746f

* reference to tapplication instance

|

0054744da138316000moveax, dword ptr [$00603138]

005474528b00moveax, [eax]

* reference to field tapplication.handle : hwnd

|

005474548b4024moveax, [eax+$24]

* possible string reference to: '您使用的软件是试用版,试用期限将到?

|绻绦褂茫肽胛颐橇担?

|购买软件的使用权限。不然将影响您的?

|ぷ?您已输入的数据不会丢失,注册后?

|杉绦褂?'

|

00547457baa8745400movedx, $005474a8

* reference to: unit_00500794.proc_00500ed4

|

0054745ce8739afbffcall00500ed4

0054746133d2xoredx, edx

* reference to field thymain.offs_00c4

|

005474638b86c4000000moveax, [esi+$00c4]

* possible reference to virtual method thymain.offs_00c0

|

00547469ff96c0000000calldword ptr [esi+$00c0]

* reference to field thymain.offs_003c

|

0054746f837e3c02cmpdword ptr [esi+$3c], +$02

005474737524jnz00547499

* reference to tapplication instance

|

00547475a138316000moveax, dword ptr [$00603138]

0054747a8b00moveax, [eax]

* reference to field tapplication.handle : hwnd

|

0054747c8b4024moveax, [eax+$24]

* possible string reference to: '您使用的软件是试用版,如果您要继续?

|褂茫肽胛颐橇担郝蛉砑氖褂?

|权限(您已输入的数据不会丢失,注册后

|可继续使用)'

|

0054747fba48755400movedx, $00547548

* reference to: unit_00500794.proc_00500ed4

|

00547484e84b9afbffcall00500ed4

0054748933d2xoredx, edx

* reference to field thymain.offs_00c4

|

0054748b8b86c4000000moveax, [esi+$00c4]

* possible reference to virtual method thymain.offs_00c0

|

00547491ff96c0000000calldword ptr [esi+$00c0]

00547497b301movbl, $01

005474998bc3moveax, ebx

0054749b5epopesi

0054749c5bpopebx

0054749dc3ret

一个是0054744b jnz 0054746f

另一个是00547473 jnz 00547499

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

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

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

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

本文来自csdn博客,转载请标明出处:http://blog.csdn.net/danny_xcz/archive/2005/05/26/381080.aspx


全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-11-22 18:15 , Processed in 0.155169 second(s), 23 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team