您的位置:首页 > 其它

羽夏逆向破解日记簿——关于逆向epub格式转化器与思考

2021-09-14 10:19 260 查看

看前必读

  本软件是商业软件,本篇文章仅仅介绍 逆向分析过程 和 关于开发软件防止逆向的思考 ,不会提供任何成品破解补丁或成品软件,仅限用于学习和研究目的,否则,一切后果自负。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权到您的权益,请联系本人删除。

主角和工具

  • Detect it easy 1.01
  • IDA 7.5
  • X32DBG
  • epub converter

  最近心血来潮想搞一个

ePub
格式转化器,转化成PDF到各种设备阅读挺方便的。然后我搜到了它。从官网下载后,它是这样滴:

  一看是收费版本的,顿时起劲了,想试试自己的逆向功底。打开这个软件后,它会亲切地弹出一个窗提示:你想不想买我呀?你还有10个试用。(我之前测试过一次,所以剩九个了)

  要想逆向一个程序,首先得知道它有什么特征。三个按钮我就不说是什么意思了,我们点一下继续按钮看看会是什么样子,我们就会来到我展示第一个图片的样子。

  然后我们转化一个试试,我随便从网上下载一个ePub电子书试一试水。点击转化按钮,如下图:

  如下是转换结果:

  点确定后然后亲切的告诉你,你又少了一次机会了:

  好,我们打开转化好的文件,我们看到了每页上都加上了可恶的水印 ******ebook converter DEMO Watermarks*******

  软件判断自己是否被注册有多种方式:通过一个全局变量标识自己是否被注册,或者用一个类进行管理等等多种方式,话不多说,开始进入逆向分析阶段。

  拖入到PE查壳器

Detect it easy
,发现的
Delphi
编写的,且未加壳,这给我们的分析降低了足够的难度。

  然后拖入到

IDA
,等待其分析完毕,可能需要几分钟的时间,耐心等待,当如下图所示时,说明
IDA
帮我们做完了自己能做的分析。

  如果注册成功,肯定不会有水印********ebook converter DEMO Watermarks********* ,先用它搜一下字符串,可惜的是搜不到:

  

IDA
搜不到,但
X32DBG
不一定搜不到。我们把它拖进去看看搜一搜,然后搜到了:

  然后我们

动静结合
,把这个指令的地址转到
IDA
看看,然后
F5
大体看看执行流程:

  这个字符串的引用只有一处,可以判断,这个指针指向的内容是用来判断是否是注册的。先命名好一个名字,然后查看一下它的引用,看一看有没有可疑引用。所谓的可疑引用是有守护线程或者定时器来时刻检测注册状态是否非法,这只是一个简单搜索,并不能保证全部找到,但幸运的是,这里只有一个,并且还是定时器,如下图:

  编过程序的同志都知道定时器都需要设置

Enabled
或者类似属性启用,
True
就是
1
unknown_libname_774
我们可以大胆的猜测是来设置这个是用来设置这个状态的,事实就是如此。

  综上:将

mov dl, 0x1
改为
mov dl, 0x0
,然后将
0x614394
的内容改为
1
,然后查看是否破解成功。

  显示破解成功,并且转化后不带水印。

  此程序的所有功能都被解除了,但是我提一句,程序使用还是有问题,会产生异常,原因自己找找,产生的异常并不是由于反调试,具体原因自己分析。本篇文章是对程序付费功能限制进行逆向和思考,故不再叙述。

敬告

  1. 通过本文说明逆向破解,虽然能解除所有功能限制,但不能完全正常使用,会有程序异常出现。
  2. 本文和破解的相关程序仅限用于学习和研究目的,否则,一切后果自负。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
  3. 你的 IDA 的 F5 的结果可能和我的不一样,因为它本来就不准确,只能提供一些参考,需要一些调整。IDA 的 F5 不是万能的,它会因一些花指令和变形指令干扰导致反编译成伪代码失败,汇编是最重要。

彩蛋

  如果心细的话,你可以翻一翻

plugin
文件夹,里面会有直接打开电子书阅读器,可以直接打开ePub等文件,是不是大大方便了电脑端阅读电子书呢?

思考

  1. 验证不要仅仅靠一个全局变量(然而本程序应该是一个类,因为最后有释放该内存的函数)进行校验,要多设立检验点增大破解难度,并使用被假破解提供假象,迷惑破解者,但会提高人力成本。
  2. 一次验证后,要多重验证,防止自己已被破解而不知。本程序还是考虑到了,启动一个定时器来频繁校验,但在 IDA 面前,这不是个秘密,稍作深入分析很容易被发现,更改一个字节就能关闭此定时器。但过多的验证可能会增大程序内存和 CPU 占用,增大人力成本,甚至影响用户体验。
  3. 程序必要时加一个壳,提高破解门槛,但会以牺牲内存或者运行速度为代价。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: