【MyEclipse 2015】 逆向破解实录系列【终】(纯研究)
声明
- My Eclipse 2015 程序版权为Genuitec, L.L.C所有.
- My Eclipse 2015 的注册码、激活码等授权为Genuitec, L.L.C及其付费用户所有.
- 本文只从逆向工程的兴趣出发,研究软件保护机制.
- 不会释出完整源代码和破解补丁.
- 会直接推测出授权信息的地方打码处理
- 本文针对My Eclipse 2015 Stable 2.0或CL版本
背景
在前两篇博文中,我们成功突破了My Eclipse 2015的3个主要保护机制:
- 软件完整性验证保护
- 注册码验证
- 激活 + 联网验证
实现了暴力破解,其实已经可以不用再管神马算法了。
参见:【MyEclipse 2015】 逆向破解实录系列【1】(纯研究)
参见:【MyEclipse 2015】 逆向破解实录系列【2】(纯研究)
但是,上篇博文有提到,暴力破解的方式太过于侵入,而且容易遗漏,不易操作,特别对于ME这款软件,验证点奇多无比,所以,暴力破解相对来说过于”丑陋“。
本篇将展开对My Eclipse 2015的注册码算法、激活码算法研究,以期能够算出正确的注册码和激活码,并通过ME的联网激活,成为其"合法"授权用户。
成果如下:
- 授权信息
- 激活成功提示信息
分析注册码算法
ok,让我们开始分析注册码算法,经过分析,从下面这个类入手:
可以看到,这个混淆效果要比CLion的混淆效果好的多,并且这个类所在的包的数字签名,让你很难通过常规手段进行替换调试。
比如下面的错误:
这里我们有两个办法:
- 去掉其数字签名.
- 自己模拟这个类.
这里,根据实际情况,我们不需要完全去除数字签名,算法相关的类比较少,我们可以在较低的时间成本下采用模拟的方式来推算法。
先看看,这个类里面的几个重要的点:
- 过期时间:
- 注册码验证:
ok,根据分析,我们找到了注册码的一些关键算法,其中有几个解码的算法也要关注:
- 加密/解密段之一
- 加密/解密段之二
细碎的活儿应该怎么干?
一边静态分析,一边抽代码到我们的模拟环境中,然后调试,记录,测试,修改。
可以看到我们的模拟算法逐渐成型:
测试一下:
阶段性战果:
分析激活码算法
到这里,我们已经追出了注册码,My Eclipse 2015还有个激活的步骤。来看看:
可以看到,不找出正确的激活码是不行的,那我们开始吧!
- 激活码验证之一:
- 重要的SystemId(反应激活机器的信息,如处理器、网卡、硬盘等)
- SystemId从哪里来?
值得注意的是,这里取得激活机器信息,使用了JNI,要确定这几个本地库能被检索到:
其中windows使用dll,分32/64位的;unix-like使用so,同样分32/64位。
到这里,我们离激活码一步之遥,坚持就是胜利:
上图可以看出,我们还有个rsa加密/解密没有搞定
,那么追追看吧。
搞定RSA
既然是rsa,那么找找它的key吧,私钥是不大可能找到了,所以我们利用如下思路来搞:
- 随便生成一对公钥/私钥.
- 用我们的私钥加密激活码.
- 用我们的公钥偷梁换柱.
那么,亲,它的公钥在哪里呢?
- 公钥
上图,告诉了我们两个信息:
- 公钥的位置,包括名称:publicKey.bytes
- RSAUtil,这个,我们可以直接copy过来用,真是省心^^.
胜利的曙光就在前面,让我们最后检验下队伍吧:
开始准备打补丁了,先使用finder
找出它的公钥:
patch it!
看下阶段性成果吧!
看来,功夫没有白费,激活码的验证通过了呢^^.
结语
本篇,我们追出了My Eclipse 2015的注册码算法和激活码算法。
至此,MyEclipse 2015 逆向破解研究系列终结。
贴图纪念下吧:
- 暴力破解,去除验证:
- 算出注册、激活码,通过验证:
撰文不易,若觉得本文对你有益,留个言,点个推荐吧 : ]
【MyEclipse 2015】 逆向破解实录系列【终】(纯研究)的更多相关文章
- 【MyEclipse 2015】 逆向破解实录系列【2】(纯研究)
声明 My Eclipse 2015 程序版权为Genuitec, L.L.C所有. My Eclipse 2015 的注册码.激活码等授权为Genuitec, L.L.C及其付费用户所有. 本文只从 ...
- 【MyEclipse 2015】 逆向破解实录系列【1】(纯研究)
声明 My Eclipse 2015 程序版权为Genuitec, L.L.C所有. My Eclipse 2015 的注册码.激活码等授权为Genuitec, L.L.C及其付费用户所有. 本文只从 ...
- myeclipse 2015 myeclipse2010破解共存
1.高版本选择bling版本,低版本选择profession版本2.用高版本的公钥替换低版本的公钥3.先破解低版本的后破解高版本的4.最后用高版本的替换低版本的文件
- MyEclipse 2015 Stable 2.0安装包及破解工具下载
MyEclipse 2015 Stable 2.0安装包及破解文件下载 之前一直在用myeclipse10.7,后来发现10.7版本有点老了,所以就换了2015稳定版的myeclipse,里面附带了破 ...
- Myeclipse 2015 stable 2.0 完美破解方法
2015-08-21 以前写了一篇<Myeclipse 2015 stable 1.0 完美破解方法>,现 在跟新一下Myeclipse 2015 stable 2.0 破解方法,此方法 ...
- Myeclipse 2015 stable 1.0 完美破解方法(转自 http://yangl.net/2015/07/14/myeclipse_2015stable_1/)
Myeclipse 2015 stable 1.0 完美破解方法 http://yangl.net/2015/07/14/myeclipse_2015stable_1/ 破解包(注册机)下载地址:链接 ...
- MyEclipse 2015 Stable 1.0下载安装破解日志
前言 这2天下载了许多myeclipse版本,基本上是14/15版本的,各种破解均告以失败,这次下载了贴吧一个吧友提供的版本,现已破解.破解结果现不好说--目前已装SVN,根据经验,只有等待一定时间验 ...
- java ee@ Myeclipse 2015 stable 1.0 完美破解方法
Myeclipse 2015 stable 1.0 完美破解方法 破解步骤: 使用以前的注册机算号,版本选择Blue即可,后续可解锁Spring高级功能,即Bling的所有功能全部具备 1.1 进入m ...
- MyEclipse 2015 Stable 2.0破解方法
本篇博文简单介绍一下利用网上说明的方法破解MyEclipse 2015 Stable 2.0的具体细节.因为原来在贴吧上的方法不够详细,所以本人重新整理了一下.方法源自:http://tieba.ba ...
随机推荐
- Java解决题目:有一对兔子,从出生第三个月起每个月都生一对兔子,小兔子长到第三个月后,每个月又生一对兔子。。。
题目:有一对兔子,从出生第三个月起每个月都生一对兔子,小兔子长到第三个月后,每个月又生一对兔子,假如兔子都不死,问M个月时兔子的数量,M为键盘读入的正整数.(请用Java语言作答) 样例输入: 3 样 ...
- ehcache整合spring注解方式
一.简介 在hibernate中就是用到了ehcache 充当缓存.spring对ehcache也提供了支持,使用也比较简单,只需在spring的配置文件中将ehcache的ehcache.xml文件 ...
- SQLAlchemy 中文文档翻译计划
SQLAlchemy 中文文档翻译计划已启动. Python 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质.交流群:467338606. 希望大家能够勇敢地去翻译和改进翻译.虽然我 ...
- 一. Linux 常用命令总结
1. linux 基础命令 who, which, basename, dirname, echo, type, hash, whatis, makewhatis, man, info, help, ...
- LINUX 用户’nobody’
1>Windows系统在安装后会自动建立一些用户帐户,在Linux系统中同样有一些用户帐户是在系统安装后就有的,就像Windows系统中的内置帐户一样. 2>它们是用来完成特定任务的,比如 ...
- HFSS 边界条件
Ansoft HFSS求解就是对微分形式的麦克斯韦方程采取有限元方法进行数值求解,在场矢量和导数是都单值.有界而且沿空间连续分布的假设下,这些方程才可以使用.在边界和场 源处,场是不连续的,场的导数变 ...
- spring加载xml
加载文件顺序 情形一:使用classpath加载且不含通配符 这是最简单的情形,Spring默认会使用当前线程的ClassLoader的getResource方法获取资源的URL,如果无法获得当前线程 ...
- OC基础数据类型-NSSet
1.集合:集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址:不过NSArray是有序的集合,NSSet是无序的集合.集合是一种哈希表,运用散列算法,查找集合中的元素比数组 ...
- RabbitMQ 一二事(5) - 通配符模式应用
之前的路由模式是通过key相等来匹配 而通配符,顾名思义,符合条件,则进行消息匹配发送 将路由键和某模式进行匹配.此时队列需要绑定要一个模式上. 符号“#”匹配一个或多个词,符号“*”匹配不多不少一个 ...
- java 21 - 12 随机访问流(不属于IO流)
随机访问流: RandomAccessFile类不属于流,是Object类的子类. 但它融合了InputStream和OutputStream的功能. 支持对文件的随机访问读取和写入. public ...