看前必读

  本软件是商业软件,本篇文章仅仅介绍 逆向分析过程 和 关于开发软件防止逆向的思考 ,不会提供任何成品破解补丁或成品软件,仅限用于学习和研究目的,否则,一切后果自负。您必须在下载后的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. 程序必要时加一个壳,提高破解门槛,但会以牺牲内存或者运行速度为代价。

羽夏逆向破解日记簿——关于逆向epub格式转化器与思考的更多相关文章

  1. 羽夏逆向破解日记簿——RunAsDate的实现原理分析

    前言   RunAsDate是一个小工具,允许您在指定的日期和时间运行程序,不过有人用它来破解有时间限制了.此实用程序不会更改计算机的当前系统日期和时间,但只会将指定的日期/时间注入所需的应用程序.该 ...

  2. 20165306 Exp1 PC平台逆向破解

    20165306 Exp1 PC平台逆向破解 一.逆向及Bof基础实践说明 1. 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,fo ...

  3. 2017-2018-2 20155303『网络对抗技术』Exp1:PC平台逆向破解

    2017-2018-2 『网络对抗技术』Exp1:PC平台逆向破解 --------CONTENTS-------- 1. 逆向及Bof基础实践说明 2. 直接修改程序机器指令,改变程序执行流程 3. ...

  4. 20155308《网络攻防》 Exp1 PC平台逆向破解(5)M

    20155308<网络攻防> Exp1 PC平台逆向破解(5)M 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是 ...

  5. 2017-2018-2 20155333 《网络对抗技术》 Exp1 PC平台逆向破解

    2017-2018-2 20155333 <网络对抗技术> Exp1 PC平台逆向破解 1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行 ...

  6. 羽夏逆向指引—— Hook

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的, ...

  7. 2018-2019-2 20165312《网络攻防技术》Exp1 PC平台逆向破解

    2018-2019-2 20165312<网络攻防技术>Exp1 PC平台逆向破解 一.Exp1.1 直接修改程序机器指令,改变程序执行流程 知识要求:Call指令,EIP寄存器,指令跳转 ...

  8. 【MyEclipse 2015】 逆向破解实录系列【终】(纯研究)

    声明 My Eclipse 2015 程序版权为Genuitec, L.L.C所有. My Eclipse 2015 的注册码.激活码等授权为Genuitec, L.L.C及其付费用户所有. 本文只从 ...

  9. 【MyEclipse 2015】 逆向破解实录系列【2】(纯研究)

    声明 My Eclipse 2015 程序版权为Genuitec, L.L.C所有. My Eclipse 2015 的注册码.激活码等授权为Genuitec, L.L.C及其付费用户所有. 本文只从 ...

  10. 20165223《网络对抗技术》Exp1 PC平台逆向破解

    目录--PC平台逆向破解 1 逆向及BOF基础实践说明 1.1 实践内容 1.2 实践要求 1.3 基础知识 2 实验步骤 2.1 直接修改程序机器指令,改变程序执行流程 2.2 通过构造输入参数,造 ...

随机推荐

  1. 攻防世界 gametime 使用IDA pro+OD动调

    自学犟种琢磨动调的一个记录,算是第一次动调的新手向,大佬请飘过 题目 准备工作--IDA pro(32X) 下载得到一个exe文件,首先丢到PE里面--无壳,32bit 丢到IDA pro(x32)里 ...

  2. KingbaseES V8R6集群运维案例--主库PITR恢复后备库无法连接到集群

    案例说明: KingbaseES V8R6集群,在主库执行PITR恢复后,clone备库:但是启动集群后,备库无法连接到主库,流复制状态和集群节点状态异常. 适用版本: KingbaseES V8R6 ...

  3. KingbaseES例程_普通表在线转分区表(基于触发器)

    KingbaseES例程_普通表在线转分区表 概述 普通表转分区表,使用视图的替换式触发器,以路由方式,实现在线转移数据. 数据准备 /*普通大表*/ create table tab_single ...

  4. 求一个整数的因数分解--Java--小白必懂

    public class OJ_1415 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ...

  5. 轻松上手Jackjson(珍藏版)

    写在前面 虽然现在市面上有很多优秀的json解析库,但 Spring默认采用Jackson解析Json. 本文将通过一系列通俗易懂的代码示例,带你逐步掌握 Jackson 的基础用法.进阶技巧以及在实 ...

  6. MySQL基本手册

    MySQL配置文件 MySQL软件使用的配置文件名为my.ini,在安装目录下. MySQL常用配置参数: 1.default-character-set:客户端默认字符集. 2.character- ...

  7. Docker 11 数据卷

    由来 Docker 是将应用和环境打包成一个镜像. 这样,数据就不应该保存在容器中,否则容器删除,数据就会丢失,有着非常大的风险. 为此,容器和主机之间需要有一个数据共享技术,使得在 Docker 容 ...

  8. 仅需30行代码,轻松集成HMS Core视频编辑服务屏幕录制能力

    现如今,手机录屏是必不可少的能力之一.对于游戏领域作者来说,在平时直播玩游戏.制作攻略.操作集锦时,不方便切屏,这时在游戏内如果有一个录制按钮就可以随时开启,记录下每个精彩瞬间,减少后期剪辑工作量:在 ...

  9. 大奖升级!HMS Core线上Codelabs挑战赛第3期:用3D建模构建元宇宙

    "元宇宙"概念风生水起,在AR.VR等技术构建的虚拟世界里,3D模型担当重要角色,无论是为玩家提供更丰富更真实游戏体验的3D游戏领域,还是各大电商平台正在启用并不断完善的3D虚拟购 ...

  10. Maven 三种archetype说明合集【转载】

    Maven 三种archetype说明 新建Maven project项目时,需要选择archetype. 那么,什么是archetype? archetype的意思就是模板原型的意思,原型是一个Ma ...