LMD控件是DELPHI下功能非常强大的一组套件,包含从界面到系统等各方面对DELPHI自身控件的增强,使用起来非常方便。

LMD控件的下载地址:http://www.lmd.de

未注册的版本在脱离DELPHI的IDE环境运行时,会弹出警告对话框,并且程序无法运行。本文就简单说明一下怎么去掉这个弹窗对话框。

首先,我们在DELPHI的开发环境中,随便创建一个Win Form项目,在窗体上随便放一个LMD的控件。

在DELPHI 的IDE环境中,这个程序是可以运行的。但是我们编译此项目,然后退出DELPHI的IDE环境,运行刚才编译好后的程序,会出现下面的弹出警告窗。

点击OK后,程序退出,无法运行。

运行x64dbg,下载地址在这里:x64dbg

因为我们刚才编译的是win32的程序,所以我们需要运行x32dbg.exe。然后选择文件-打开,选择我们刚才编译完成的文件,然后应该出现如下图:

这时,我们点击一下左上角第四个图标,就是蓝色向右箭头的图标,写着“运行(R)”的那个,会出现下面的图:

注意,地址可能不一样,但是大致命令结构应该是如此的。DELPHI程序的特点就是

push ebp
mov ebp,esp
add esp, FFFFFFF0
mov eax, xxxxxxxx

到这里,我们在第一行push ebp那里,鼠标右键,选择“搜索”-“当前模块”-“字符串”。在弹出的窗口下部的搜索输入框内,输入前面那个弹窗上的文字,比如我输入的是warning!

于是我们发现找到了8处有这个字符串的,而且这8处都是LMD的警告信息,说明这个就是我们要找的。在第一条上鼠标双击,会跳到下面的界面:

这里需要重点说明一下,地址004C6CDF,也就是灰色条的位置,是调用警告字符串的位置。向上看,地址004C6CCC处,是一个判断,判断哪个值是不是2,如果是,那么在地址004C6CD0处就跳转了,这个跳转就正好跳过了警告提示的那一段。如果不是2,那么就会出现警告提示。所以,我们要做的,就是把JE跳转,改为JMP跳转。也就是不管那个值是不是2,都跳过警告提示。

正常的破解就是这个思路,把地址004C6CD0处的,je xxxx改为jmp xxxx。从16进制代码上,也就是把74改为EB。

但是现在我们还不能这样改,因为一共有8处,我们需要一个一个改,很麻烦。而且,即使这样改了,我们破解的也仅仅是我们编译好的那个程序,而不是破解的控件。那怎么办呢?

别急,我们先看一下这段程序代码:

004C6CCC | 807D FB 02               | cmp byte ptr ss:[ebp-5],2               |
004C6CD0 | 74 43 | je basvz.4C6D15 |
004C6CD2 | 8D45 FC | lea eax,dword ptr ss:[ebp-4] | [ebp-04]:BaseThreadInitThunk

然后我们回到刚才的字符串搜索那里,双击第二行。

004CE664 | 807D FB 02               | cmp byte ptr ss:[ebp-5],2               |
004CE668 | 74 43 | je basvz.4CE6AD |
004CE66A | 8D45 FC | lea eax,dword ptr ss:[ebp-4] | [ebp-04]:BaseThreadInitThunk

瞧见了吗?虽然地址不同,但是16进制的代码是一样的,807DFB0274438D45FC。

我们再把剩余的6个也点开,发现代码都是一样的。也就是说,在控件文件中查找这个16进制代码,找到后,把74改为EB就可以了。

这里需要注意的是,我们查找的16进制代码要遵循两个原则:

1、尽量不要太短,比如你只查找74 43,那么就会把所有的JE +43的跳转全部改掉,这样就可能把很多不该改的地方都改掉了。

2、尽量也要太长,只保障能找到你要找的最短代码即可,太长的话查找会很慢。

一般而言,三到四行指令即可。也就是你需要从上面8个点里,选择相同的指令,再逐渐缩短查找的长度。这个一般都是凭经验,摸索几次就大概知道了。

好了,现在我们已经知道,要找807DFB0274438D45FC,换成807DFB02EB438D45FC

但是,控件文件那么多,我们怎么知道要改哪个文件,哪个文件里有这个16进制代码?

那么就需要使用我们的一个神器,Swiss File Knife,下载地址在这里:Downloads (stahlworks.com)

然后我们写一个脚本,就是创建一个空白的文本文件,写入以下代码:

::script by board4all.biz kenlewis
: 32bit
sfk replace -dumpall -binary "/807DFB0274438D45FC/807DFB02EB438D45FC/" -dir "%cd%" -yes -file *.dcu
pause

这里,冒号开头的相当于是注释,方便阅读代码用的,你可以不写,也可以改成你自己的内容。

sfk replace -dumpall -binary "/807DFB0274438D45FC/807DFB02EB438D45FC/" -dir "%cd%" -yes -file *.dcu

这行就是要把807DFB0274438D45FC,换成807DFB02EB438D45FC,而且是包含子目录的,所有dcu的文件,不需要确认。

然后将这个脚本文件命名为lmd_crack.bat。和上面下载的sfk.exe文件一起复制到LMD控件的安装目录。

然后你双击lmd_crack.bat执行吧,就会出现和我这个界面一样的:

出现这个,就说明破解成功了。

然后,你再去DELPHI中,打开刚才那个工程文件,重新编译,你就发现程序可以脱离DELPHI的IDE环境运行了。你再用LMD写的程序,都不会再有警告弹窗了。说明LMD控件破解完成。

同样的道理,你也可以把64位版的LMD搞定。

这样的破解会存在风险:

1、可能会把不该改的地方也改掉,这个需要实际使用过程中发现哪里不对劲再进行调整。反正目前我还没发现有问题,所以暂时就这样用了;

2、可能会有其他的暗桩没被发现。的确,有网友跟我说还是会有弹窗,不过我还真没遇到过,如果谁发现了,请及时告诉我。

LMD控件的破解的更多相关文章

  1. DevExpress控件安装破解和汉化使用教程

    这段时间因公司业务需要.net开发且需要用到DevExpress控件,我自己研究学习了一下,用的是visual studio(2013)和DevExpress(V14.1.4),VS2013的下载安装 ...

  2. C1控件的破解步骤

    最近接触了一个系统中的打印和报表控件用到了C1控件,控件在以前就注册了的,可是在这次修改了系统后,系统却提示C1的控件没有注册. 怎么回事呢?我们这次并没有修改报表,而且也没有和C1控件相关的改动.怎 ...

  3. WEB网站类型系统中使用的OFFICE控件-破解Ntko-Office

    2011-12-12 22:49| 发布者: Admin| 查看: 1399| 评论: 0|原作者: 风云OA   摘要: WEB下使用的OFFICE控件介绍,另提供一个原创破解 首先来个名词解释,O ...

  4. 常用控件产品官方文档/手册/API列表 c#控件文档API列表 asp.net控件产品技术文档中文版

    .netCHARTING报表图表控件 文档帮助手册Ab3d.PowerToys 文档帮助手册Ab3d.Reader3ds 文档帮助手册ABViewer 文档帮助手册 (工程图纸文档管理系统)Activ ...

  5. DevExpress控件安装、汉化使用教程

    前言 DevExpress是一个庞大的控件库,也很是好用(没用过,听说),但是要收费. 网上关于DevExpress的教程满天飞,我找了一下午也没找到正确的安装.简单实用教程,还是自己摸索吧. 自己动 ...

  6. Xamarin Studio在Mac环境下的配置和Xamarin.iOS常用控件的示例

    看过好多帖子都是Win环境装XS,Mac只是个模拟器,讲解在Mac环境下如何配置Xamarin Studio很少,也是一点点找资料,东拼西凑才把Xamarin Studio装在Mac上跑起来,如下: ...

  7. monkeyrunner之坐标或控件ID获取方法(六)

    Monkeyrunner的环境已经搭建完成,现在对Monkeyrunner做一个简介. Monkeyrunner工具提供了一套API让用户/测试人员来调用,调用这些api可以控制一个Android设备 ...

  8. Delphi 控件大全

    delphi 控件大全(确实很全)   delphi 控件查询:http://www.torry.net/ http://www.jrsoftware.org Tb97 最有名的工具条(ToolBar ...

  9. delphi 控件大全(确实很全)

    delphi 控件查询:http://www.torry.net/ http://www.jrsoftware.org Tb97 最有名的工具条(ToolBar)控件库,仿Office97,如TDoC ...

  10. Qt开发环境中使用报表控件FastReport遇到的一些问题(一)

    FastReport是一款优秀的报表控件,由俄罗斯开发,国内有代理商.Qt环境下可实现报表功能的还有一款叫NCReport,也是收费控件,比较来比较去还是觉得前者功能强点.网上讲解此控件在Qt中使用的 ...

随机推荐

  1. MySQL设置字符集、排序规则和区分字母大小

    摘要:在MySQL中,设置字符集和排序规则,在查询时区分字母大小写,utf8mb4支持emoji表情,而utf8不支持. 问题综述   在工作中,设置的一些唯一标志字符串和登录密码都是区分大小写的,但 ...

  2. http协议中长连接和短连接介绍

      TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,客户端与服务器端之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时可以释放这个连接.连接的建立依靠"三次握手& ...

  3. MQ的学习记录~

    MQ是一个消息中间件,是为了解决发送者和接收者处理速度不匹配的问题而产生的,有队列和主题两种. 队列:一对一. 主题:一对多.例如有100人订阅了我的公众号,当我在公众号上发布新的文章时100人都能收 ...

  4. Springboot笔记<11>面向切面编程AOP

    面向切面编程AOP AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是Spring框架中 ...

  5. JS如何实现实时获取网络时间

    首先我们列出常用的js获取网络时间的代码: getFullYear()获取年份 getMonth()获取月份[0-11] getDate()获取日 getHours()获取小时 getMinutes( ...

  6. 多多行动,Action And Think Not Thinking Thinking But Not Action

    行动和思考 为什么道理大家都懂,还是过不好我们自己的生活呢? 其实从小到大,我们了解和接触的大道理以及理论知识已经很多了,很多高深的哲学思想,有可能在我们小学的时候已经接触到了.种瓜得瓜,种豆得豆.一 ...

  7. 浅析百万级分布式调度引擎——DAGScheduleX能做什么?

    公交车伴随着我们的日常生活已是随处可见,不同路线的公交车根据各自的时间表有序发出,到达站点,接上站台的乘客再缓缓驶向下一站--早高峰会有短区间的加班车,发车间隔也更短,夜半时分的班次则间隔更长.这一切 ...

  8. ArkUI-X资源分类与访问

    应用开发过程中,经常需要用到颜色.字体.间距.图片等资源,在不同的设备或配置中,这些资源的值可能不同. 应用资源:借助资源文件能力,开发者在应用中自定义资源,自行管理这些资源在不同的设备或配置中的表现 ...

  9. Java源码分析系列笔记-8.CyclicBarrier

    目录 1. 是什么 2. 如何使用 2.1. 不带Runnable 2.2. 带Runnale 3. 原理分析 3.1. uml 3.2. 构造方法 3.2.1. 使用Lock和Condition实现 ...

  10. Python库积累之you-get库:网页视频与资源下载

    ↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓ you-get库是一个强大的视频网站下载工具,可以通过音视频网页的url链接直接下载包括视频,图片等媒体内容,从而解决一些网站视 ...