看前必读

  本软件是商业软件,本篇文章仅仅介绍 逆向分析过程 和 关于开发软件防止逆向的思考 ,不会提供任何成品破解补丁或成品软件,仅限用于学习和研究目的,否则,一切后果自负。您必须在下载后的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. Tarjan 算法——图论学习笔记

    Part.1 引入 在图论问题中,我们经常去研究一些连通性问题,比如: 有向图的联通性:传递闭包--Floyd 算法: 有向图连通性的对称性:强联通分量(SCC)--Tarjan 算法缩点: 无向图的 ...

  2. 7 JavaScript循环语句

    7 循环语句 在js中有三种循环语句. 首先是while循环. 它的逻辑和咱们python中的while几乎一模一样, 就是符号上有些许的区别. // 语法 while(条件){ 循环体 -> ...

  3. #floyd,分治#D 路径之和

    题目 对于每个\(y\),求除了\(y\)之外,其余的所有点组成的有序点对\((x,z)\) 不经过\(y\)的最短路长度之和(不存在即为-1).\(n\leq 320\) 分析 太妙了,首先用flo ...

  4. JDK14中的java tools简介

    目录 故事发生了 java tools简介 jaotc jar jarsigner java javac javadoc javap jcmd jconsole jdb jdeprscan jdeps ...

  5. 战码先锋直播预告丨参与ArkUI,共建OpenHarmony繁荣生态

    OpenAtom OpenHarmony(以下简称"OpenHarmony")工作委员会首度发起「OpenHarmony开源贡献者计划」,旨在鼓励开发者参与OpenHarmony开 ...

  6. 国产化改造就用 Java Solon,v2.7.3 发布

    Java Solon 是什么框架? 是一个可平替 Spring 生态的 Java 应用开发框架.从零开始构建(非 java-ee 架构),有自己的标准规范与开放生态.(历时七年,具备全球第二级别的生态 ...

  7. XRebel工具激活方式,亲测有效

    首先进入生成 GUID 的网址:https://www.guidgen.com/ 用这个网址 + 生成的 GUID 激活:https://jrebel.qekang.com/ 例如:https://j ...

  8. HarmonyOS API Version 7版本特性说明

    2020年9月11日,HarmonyOS SDK发布了首个Beta版本,支持基于HarmonyOS的华为智慧屏.智能穿戴.车机设备开发,让广大的开发者正式步入了HarmonyOS应用开发之旅. 开发者 ...

  9. Spring Boot 版本 GA、RC、beta等含义

    GA General Availability,正式发布的版本,官方开始推荐广泛使用,国外有的用GA来表示release版本. RELEASE 正式发布版,官方推荐使用的版本,有的用GA来表示.比如s ...

  10. 重新点亮shell————测试命令[六]

    前言 我们写好脚本之后希望有一个测试. 正文 介绍一下exit,如果exit 0,那么表示正常退出. 如果exit 10,也就是非0,那么就是异常退出. 然后这个test 标准为[]和 [[]]这样子 ...