〇.〇 最前面的口嗨
很久很久以前,有两种主流的编程语言,一种叫BASIC,一种叫Pascal,前者发展成了VB,后者则发展成了Delphi。
VB很快被C++打败,而Delphi还坚挺了一会,直到其主设被微软挖走整C#。
曾经有一种说法,勤奋的程序员用C,聪明的程序员用Delphi,大概是说C更全能,Delphi更智能(杰出?卓越?)。
笔者曾经也想学学Delphi,想看看聪明人的世界,奈何等笔者工作生活稳定(知道自己没啥上升空间)后,人们说聪明人都用Lisp编程,于是,笔者只能呵呵。
由于笔者从未用Delphi写过任何程序,对其基本没有了解,文中软件也是勉强算破解的第一个Delphi软件,各方面来说笔者都是个新手,自然谈不上水平,大佬看见请随意指教。
〇.一 背景
笔者的媳妇平时会经常翻阅字典,看着支离破碎的第12版新华字典,笔者心疼3秒之后,决定给她找个电脑上能用的字典软件,于是找到了这款软件。
软件未发现使用时间和次数的限制,但对功能做了限制,为了笔者的媳妇使用更方便(虽然笔者媳妇说笔者只是闲出屁了),笔者决定破解下。
论坛中有前辈发过软件2009版破解,2014版暴破,然而笔者愚钝,窃以为2014版暴破那篇文章没有实用意义,而且新华字典第12版是2020年出版的,使用最新2020版软件比较放心点。
笔者这篇所谓的破解完全没有注册码之类的事情,仅仅是启用一些功能,而且破解的在线辞海功能有瑕疵,笔者认为能称为破解,如有小伙伴不认同也可以来交流,你们的回复我都会阅读,但能力所限,未必会回复。
如涉及重复发帖或侵权,劳烦管理删此贴。
一、准备工作
软件下载:软件官网
使用工具:IDR、X32DBG、Resource Hacker
二、软件基础了解
1.运行软件,软件没有帮助文档,笔者发现的功能限制大体有三种:
(1)搜索功能无法使用,包括字典、英汉、成语等等各处的搜索功能;
(2)新华词典功能无法使用;
(3)在线辞海功能无法使用。
新手破解Delphi编写某字典软件
2.Die查壳,无壳,Delphi编写,笔者这是本区第三贴了,就不上图了。这里说一下,软件之前版本是有ASPack壳的,但是脱壳机秒脱,这版本的软件或许是不在乎那2-3M空间了,是真的没壳。
3.使用IDR(论坛也有不少用DeDe的,不过笔者的虚拟机跑DeDe老报错,主系统11倒是不报错,但破解这种活总是虚拟机有安全感,而且相比DeDe,笔者也确实推荐新人使用IDR)反编译,软件主窗体是Form1,其中大多数功能是由面板实现,打开窗体,双击组件对应一下很容易得知,具体为:
flatpanel4:字典,ffbtn4Click
flatpanel14:词典,按钮为ffbtn5,但ffbtn5Click命令非该功能
flatpanel8:英汉,ffbtn8Click
flatpanel12:名句,ffbtn9Click
flatpanel2:名人名言,ffbtn12Click
flatpanel7:歇后语,ffbtn7Click
flatpanel1:成语,ffbtn6Click
flatpanel16:关于
以上大多按钮通过控制相应面板是否可见(即需要那个面板可见,其余面板不可见)来实现相应功能,ffbtn5Click则仅仅是弹出对话框,无相应功能。
新手破解Delphi编写某字典软件
4.注册窗体是Form8,确认注册按钮按下后仅仅弹出对话框。这里笔者一开始以为是笔者对Delphi的结构理解不深刻,在调用按钮点击事件之前就进行了判断,毕竟笔者的汇编水平仅止于15年前大学本科必修的汇编基础,这些语句三行五行能看懂,三五十行就看不懂了,直到调试了一轮后根本没发现读取文本框数据,才认识到自己和大佬的差距。不过笔者不是太轴的人,也没有非要看到注册成功的执念,就没在注册码这下功夫。另外题外话两句,2014版这里也是个假按钮,而运行时的判断标准是data文件夹是否有xho.db这个文件,没这个文件就显示已注册,这个当然也有点坑,只能说聪明的程序员用Delphi未必完全正确,但用Delphi的程序员都是有点厉害的。
新手破解Delphi编写某字典软件
软件基础了解告一段落,当然还有一些需要看的,也有一些可以看的,要用到的之后会有说明,和我一样的新手这里多翻翻掌握下方法就好。
三、软件功能实现
1.搜索功能
IDR中查阅搜索按钮按下后事件(有很多,这里随便贴一个)的反汇编代码,通过将注册窗体Form8里面确认注册那个按钮的标题(Caption)文字与“本软件已注册”对比,如不等就弹对话框,相等就实现功能。
新手破解Delphi编写某字典软件
注册窗体Form8里面确认注册那个按钮的标题在创建窗体时进行设置,直接设置成“本软件未注册”。
新手破解Delphi编写某字典软件
所以要实现搜索功能只需让创建窗体时将按钮标题设置成“本软件已注册”即可,这里将5855B0处的字符串设为“本软件已注册”,或者将58559B这里的5855B0改为58C980都行。
新手破解Delphi编写某字典软件
搜索功能实现
2.新华词典功能
如第二章第三节,ffbtn5Click仅仅是弹出对话框,笔者在软件中未发现直接实现词典功能的命令,检查下上下文,58C0C8至58C0D2为ffbtn5Click事件,其上下都有代码,这么短的区间,哪怕引用其他按钮事件后,仅设置两个面板的是否可见,也写不下,所以笔者这里用下注入,先检查下软件的代码区间,入口1000,大小18D400,也就是代码最多可以写到58E399,检查下代码段末尾处,看到有空余空间。
新手破解Delphi编写某字典软件
将58C0C8处做个大跳转,跳到空余空间处,顺手把之后的调用干掉。
新手破解Delphi编写某字典软件
在空余空间写入代码,就是控制flatpanel14面板可见,其余面板不可见。
新手破解Delphi编写某字典软件
新华词典功能实现
3.在线辞海功能
IDR中翻Form1窗体,发现除了显示的按钮FlatButton1之外,还有个隐藏的按钮ffbtn11也是用来控制在线辞海功能,此外还有Button4也疑似用于辞海功能,所以这里将FlatButton1Click事件替换下就好。这里笔者测试Button4Click事件没反应,ffbtn11Click事件按下后功能实现也有问题,会显示乱码,但这确实是软件本身的功能,或许是这块功能没做好,也或许是笔者水平不足,总之有瑕疵。
事件替换方法(取巧):
Resource Hacker中打开程序文件,双击打开Form1,Ctrl+F查找FlatButton1,将其事件OnClick设置为ffbtn11Click,编译,保存即可。
新手破解Delphi编写某字典软件
强迫症患者也可以修改下按钮的字体颜色,将Font.Color设为16384。
新手破解Delphi编写某字典软件
本次新手破解完成。
四、后记
Delphi的程序反编译后感觉像夺命连环Call,以笔者的水平看起来是非常费劲的,但笔者认为新手还是要见见世面,放一篇Delphi的软件是有必要的,虽然这个属于取巧破解。其实笔者也有尝试过汉语大词典,不过那个太欢乐了,脱个壳给笔者虚拟机关机5-6次,动态调试调注册那块就死机,注册按钮按下的事件反编译出好像三百行,简直可以成为笔者一个月的快乐源泉,笔者决定升升级再来欢乐,就放了这个。
上一篇时笔者以为快要去上班了,结果现在还没去,但这个可能真就是本年度最后一次本版的玩耍了,就是这样。
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!