本文为原创作品,转载请注明出处,作者:Chris.xisaer E-mail:69920579@qq.com

QQ群3244694

补丁程序下载地址:https://download.csdn.net/download/xsdn123/71939906

https://github.com/hansiyuan1983/UltraEdit/tree/%E7%A0%B4%E8%A7%A3%E8%A1%A5%E4%B8%81

1.本文所设计的相关技术只限于交流和学习使用,请勿将其用于商业活动。对此产生的一切后果本人概不负责。

2.如果本文涉及到侵犯著作权的问题,请及时联系,我将下架文章。

3.在此鄙视垃圾CODER诞生地CSDN。竟然不允许发破解技术相关的文章。技术本无罪,人性是贪婪。(还有假冒破解技术,搞收费的某论坛)。

现在我准备为大家带来UltraEdit64破解的一些技术分享。目前的最新版本 Version 28.20.0.92,这是一个64位的文本处理软件。可能老家伙们都知道这个编辑软件。非常的NICE,尤其是他的二进制查看功能。对于程序员来说很好很强大。但是不知道从什么时候开始这个软件收费了。。希望大家都自觉购买正版软件。本文的目的不是提供给大家使用破解版。而是分享一些软件的漏洞,以促使软件开发者更注意软件的安全使用。

首先我们来看一下试用期到期时候的情况!

这里还是提醒大家请购买正版软件,以鼓励软件行业的良性发展。

先说明几点情况:1 此软件没有加壳,这个结论是经过验证的。

2 此软件是用MFC编写。请大家先补习一下MFC的基本只是。

我们打开反编译神器:idapro64,为什么用64??因为我们要破解的UE64是64位的软件,SO...

来一张图吧

对于新手可能有点懵逼,老手掠过,我先讲解一下IDA的基本情况。左边的窗口是函数窗口,右边的窗口是程序代码窗口。下面的窗口是输出窗口,上面还有很多标签页。我们关注是import  ,struct,还有pseudocodeXXX窗口。

IDA的用法如果详细些会成为一本书,应为确实有一本IDA使用说明的书。目前已经除了第二版了。我这里就不赘述了,有兴趣的同学可以去看看。非常不错。不光将IDA的使用,还有一些反编译的知识。

可能看到这篇文章的各位水平不一样。我这里只给新手讲解,大牛可以绕道。刚刚接触破解的同学可能拿到一个程序不知道从何下手。我们该怎么找到程序的漏洞?(这里我用漏洞其实不合适,但是没办法。等你们写文章的时候就知道我为什么用漏洞,而不是线索了。)。

开头的图片大家都看了,是是用到期后弹出模态对话框。阻止任何操作,关闭对话框后程序关闭。那么我们首先判断一下程序虽然是试用版,但是其实功能和正式版是一样的,唯一区别就是多了试用倒计时。那么我们的思路就有了。1.干掉这个对话框。2点击输入许可证密钥。通过模拟验证程序完成注册。3,通过修改验证程序逻辑达到欺骗源程序验证机制的方式关闭对话框。当然还有其他的一些方法我这里就不一一说明了。

不过我可以告诉大家干掉这个对话框,虽然可以但是实现起来非常麻烦,比第3步还要麻烦。因为开头我说过这个程序是MFC写的。作者创建的对话框时封装在自己类中的由自己的类实现了个对话框初始化函数。所以你如果想只干掉对话框会有一些数据无法传递给源程序,这样程序会访问非法内存地址,导致无法正常运行。

如果你选择第二种方法我只能说你有以一颗强大的心,而且是真心想学习反汇编技术,这个程序的许可证是通过哈希算法得到的 无非就是机器码。磁盘编号 ,电子邮件等等信息混合成一个哈希值。然后验证。而且破解者个程序的也肯定不是我一个人。可能有大牛已经写出来了。我这里就不过多赘述(因为真的很复杂)

我们试试第三种方法。修改程序验证逻辑。首先我们找到切入点,对搜索一下字符串吧!不是试用版吗 还是根据地区自动选择语言的。想变成英文版只能改系统区域。麻烦。我就猜测一下吧。英文的试用 应该是trial. 先打开另一个工具X64DBG!!!

搜索所有模块字符串。我们先找一下包含trial的相关信息!可能要等一会,程序代码量还是挺大的!

并没有搜到想要的信息。明显和提示的对不上。想从这里找对话框的一些地址是没戏了。回到IDApro,我们点击import选项卡:搜索CreateDialog关键字。我们能够发现

找到了一个创建对话框的函数。但是别高兴,这个并不是我们需要的函数。因为开头说过这是个MFC程序。所以我们应该能想到,作者写程序的时候不是用SDK中的函数写程序,而是用C++封装类后写程序。再结合MFC的相关知识。我们知道MFC中是有个对话框类的 CDialog.所以我们现在应该等待IDAPRO 这个强大的软件。然后再函数窗口搜索我们猜测的MFC类CDialog:

不出所料,我们找到了我们的线索。那不用说了只要是创建对话框。就一定会用到CDialog的构造函数。所以我们选择我们搜到的CDialog::CDialog(uint,CWnd*),这函数作为切入点。开始我们的找CALL之旅!

我们双击函数进入查看:

我们在函数名字上面右键查看交叉引用 看看一共有多少处调用了此函数,然后回溯出只有在关于我们需要的这个创建对话框函数。这里可能大家有些不明白。因为程序里面创建的对话框很多。当你点开交叉引用的时候你会发现可能成百上千的地方都调用了这个函数。而我们需要断下来的地方只有一个。而且通过上面函数的this指针我们能知道这是CDialog的成员函数。开头我还说过,作者写MFC程序肯定是以C++的习惯将其他类封装到自己的类中。所以我们要找的并不是MFC中的CDialog类中的构造函数。我们要找的是封装了这个函数的未命名函数。因为IDA是不能识别作者自己的类名和函数名的。所以这里我们只能通过回溯CALL 找出到底是哪个函数调用。

通过函数回溯我们最终确定调用这个CALL的地址是

.text:00000001403E5F90                 call    sub_140458A60

这个函数的主调函数非常的长 我决定只把名字给大家截图看一下,具体的还是大家自己浏览IDA吧因为 太长了。。。。

讲过漫长的初始化工作。。我们最终看到了这条汇编语句:

这个调用就是后续启动对话框的调用。我们想要干掉对话框就要做些动作不让这条语句执行。这里我就不详细写怎么写这些基础指令了。。很简单。但是我要告诉大家。如果你只是修改此处代码的话。那么程序将启动即崩溃。因为作者这里通过自己的函数传递了一些数据给后面的程序。如果得不到这些数据的初始化。那么程序将访问未知的内存空间。好,那我们就进去修改一下再出来。我们进入函数一直步进。直到来到这个地址:

这里有相当多的CALL ,而且每个CALL 之前都是比较后才调用的。在这里我先透露一点反汇编的结果。这些CALL 都是验证软件的各种状态的,有剩余日期,有激活状态,有版本信息。

我们在这里不要管先单步走一下程序。发现在进入call    sub_14044B790这个CALL后会弹出对话框,实际上是函数经过对比版本后发现版本是试用版,然后对比激活信息发现并未激活。然后程序会通过调用自己封装的sub_140458A60 函数调用CDialog类的初始化函数生成对话框。流程就是这样的。

这里需要看动态调试的结果。当指令指针运行到00000001403E6B6E这条指令的时候 也就是test al,al. 我们观察寄存器窗口标志位ZF的值是1:

也就是说这条语句之后我们的 标志位不为0,跳转不会发生。会继续下面的验证工作,也就是剩余天数是否还有,当然TEST EAX,EAX 之后显然跳转也为发生就是我们要进入正常逻辑开启对话框了。好了至于应该修改哪里还是留给各位大神来完成吧。这里我就不说出答案了。(已经显而易见了)

我们来看一下破解后的程序:

如果你还有不明白的地方可以来群里找我交流一下技术。随时欢迎!!

破解UltraEdit64 Version 28.20.0.92 技术分享。的更多相关文章

  1. Could not update Activiti database schema: unknown version from database: '5.20.0.1'

    转: Could not update Activiti database schema: unknown version from database: '5.20.0.1' 2017年11月22日 ...

  2. This Android SDK requires Android Developer Toolkit version 20.0.0 or above

    本人最近在操作更新ANDROID SDK时出现类似于题目中的错误,是一启动ECLIPSE时.但是,我现在只是想恢复到原先的开发环境.于是找到本文,方法有效!!! windows 下面安装Android ...

  3. 【转】This Android SDK requires Android Developer Toolkit version 20.0.0 or above

    本人最近在操作更新ANDROID SDK时出现类似于题目中的错误,是一启动ECLIPSE时.但是,我现在只是想恢复到原先的开发环境.于是找到本文,方法有效!!! windows 下面安装Android ...

  4. flutter doctor出现问题 [!] Android toolchain - develop for Android devices (Android SDK version 28.0.3) X Android license status unknown. Try re-installing or updating your Android SDK Manager. 的解决方案

    首先,问题描述: flutter doctor Doctor summary (to see all details, run flutter doctor -v): [√] Flutter (Cha ...

  5. 一定要记住这20种PS技术,让你的照片美的不行! - imsoft.cnblogs

    照片名称:调出照片柔和的蓝黄色-简单方法, 1.打开原图素材,按Ctrl + J把背景图层复制一层,点通道面板,选择蓝色通道,图像 > 应用图像,图层为背景,混合为正片叠底,不透明度50%,反相 ...

  6. Hadoop 3.0 EC技术

    Hadoop 3.0 EC技术 EC的设计目标 Hadoop默认的3副本方案需要额外的200%的存储空间.和网络IO开销 而一些较低I/O的warn和cold数据,副本数据的访问是比较少的(hot数据 ...

  7. 技术分享 | 简单测试MySQL 8.0.26 vs GreatSQL 8.0.25的MGR稳定性表现

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. M ...

  8. hadoop2.20.0集群安装教程

    一.安装的需要软件及集群描述 1.软件: Vmware9.0:虚拟机 Hadoop2.2.0:Apache官网原版稳定版本 JDK1.7.0_07:Oracle官网版本 Ubuntu12.04LTS: ...

  9. 【3D动画建模设计工具】Maxon Cinema 4D Studio for Mac 20.0

    图标 Icon   软件介绍 Description Maxon Cinema 4D Studio R20 ,是由德国公司Maxon Computer一款适用于macOS系统的3D动画建模设计工具,是 ...

随机推荐

  1. cmd到指定目录并执行命令 mysql到bin目录并执行命令 cmd bat进入指定文件夹中并执行命令

    其实就一条命令:(保存为bat格式,注意:有两个and希腊字母 && )cmd /k "cd /d Your ProjectPath&&Your CMD co ...

  2. 日常Java 2021/11/15

    Applet类 每一个Applet都是java.applet Applet类的子类,基础的Applet类提供了供衍生类调用的方法,以此来得到浏览器上下文的信息和服务.这些方法做了如下事情: 得到App ...

  3. 03-Collection用例管理及批量执行

    当我们对一个或多个系统中的很多用例进行维护时,首先想到的就是对用例进行分类管理,同时还希望对这批用例做回归测试 .在postman也提供了这样一个功能,就是Collection .通过这个Collec ...

  4. oracle 拆分字符串

    WITH t AS (SELECT '1-2-3-4' a FROM dual)SELECT Regexp_Substr(a, '[^-]+', 1, LEVEL) i FROM tCONNECT B ...

  5. awk的基本用法

    最近遇到导入的csv文件首行为日期,但需要将日期作为列导入到数据库中,直接使用ctl文件好像无法实现,了解到awk这个强大的命令. 导入的CSV文件除了首行为日期,其他的都是格式相同的.需要将首行单独 ...

  6. redis入门到精通系列(七):redis高级数据类型详解(BitMaps,HyperLogLog,GEO)

    高级数据类型和五种基本数据类型不同,并非新的数据结构.高级数据类型往往是用来解决一些业务场景. (一)BitMaps (1.1) BitMaps概述 在应用场景中,有一些数据只有两个属性,比如是否是学 ...

  7. Dubbo提供者的异步执行

    从前面"对提供者的异步调用"例子可以看出,消费者对提供者实现了异步调用,消费者线程的执行过程不再发生阻塞,但提供者对IO耗时操作仍采用的是同步调用,即IO操作仍会阻塞Dubbo的提 ...

  8. 【HarmonyOS】【DevEco Studio】NOTE02 :Create a  “Hello World ”Application

    Author:萌狼蓝天 StudyTime:2021/12/06 Version:3.0 Beta1 包结构 src | --> resource 资源文件目录 | --> layout/ ...

  9. Python绘制柱状图

    1.1Python绘制柱状图对应代码如下所示 import matplotlib.pyplot as plt import numpy as np from pylab import mpl mpl. ...

  10. thinkphp引入PHPExcel类---thinkPHP类库扩展-----引入没有采用命名空间的类库

    最近项目中遇到引入PHPExcel第三方类库 但是下载的phpExcel类没有命名空间,而且所有接口文件的命名都是以.php结尾  而不是tp中的.class.php 解决办法很简单:在引入没有采用命 ...