声明

  • 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的混淆效果好的多,并且这个类所在的包的数字签名,让你很难通过常规手段进行替换调试。

比如下面的错误:

这里我们有两个办法:

  1. 去掉其数字签名.
  2. 自己模拟这个类.

这里,根据实际情况,我们不需要完全去除数字签名,算法相关的类比较少,我们可以在较低的时间成本下采用模拟的方式来推算法。

先看看,这个类里面的几个重要的点:

  • 过期时间:

  • 注册码验证:

ok,根据分析,我们找到了注册码的一些关键算法,其中有几个解码的算法也要关注:

  • 加密/解密段之一

  • 加密/解密段之二

细碎的活儿应该怎么干?

一边静态分析,一边抽代码到我们的模拟环境中,然后调试,记录,测试,修改。

可以看到我们的模拟算法逐渐成型:

测试一下:

阶段性战果:

分析激活码算法

到这里,我们已经追出了注册码,My Eclipse 2015还有个激活的步骤。来看看:

可以看到,不找出正确的激活码是不行的,那我们开始吧!

  • 激活码验证之一:

  • 重要的SystemId(反应激活机器的信息,如处理器、网卡、硬盘等)

  • SystemId从哪里来?

值得注意的是,这里取得激活机器信息,使用了JNI,要确定这几个本地库能被检索到:

其中windows使用dll,分32/64位的;unix-like使用so,同样分32/64位。

到这里,我们离激活码一步之遥,坚持就是胜利:

上图可以看出,我们还有个rsa加密/解密没有搞定,那么追追看吧。


搞定RSA

既然是rsa,那么找找它的key吧,私钥是不大可能找到了,所以我们利用如下思路来搞:

  1. 随便生成一对公钥/私钥.
  2. 用我们的私钥加密激活码.
  3. 用我们的公钥偷梁换柱.

那么,亲,它的公钥在哪里呢?

  • 公钥

上图,告诉了我们两个信息:

  • 公钥的位置,包括名称:publicKey.bytes
  • RSAUtil,这个,我们可以直接copy过来用,真是省心^^.

胜利的曙光就在前面,让我们最后检验下队伍吧:

开始准备打补丁了,先使用finder找出它的公钥:

patch it!

看下阶段性成果吧!

看来,功夫没有白费,激活码的验证通过了呢^^.

结语

本篇,我们追出了My Eclipse 2015的注册码算法和激活码算法。

至此,MyEclipse 2015 逆向破解研究系列终结。

贴图纪念下吧:

  • 暴力破解,去除验证:

  • 算出注册、激活码,通过验证:


撰文不易,若觉得本文对你有益,留个言,点个推荐吧 : ]

【MyEclipse 2015】 逆向破解实录系列【终】(纯研究)的更多相关文章

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

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

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

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

  3. myeclipse 2015 myeclipse2010破解共存

    1.高版本选择bling版本,低版本选择profession版本2.用高版本的公钥替换低版本的公钥3.先破解低版本的后破解高版本的4.最后用高版本的替换低版本的文件

  4. MyEclipse 2015 Stable 2.0安装包及破解工具下载

    MyEclipse 2015 Stable 2.0安装包及破解文件下载 之前一直在用myeclipse10.7,后来发现10.7版本有点老了,所以就换了2015稳定版的myeclipse,里面附带了破 ...

  5. Myeclipse 2015 stable 2.0 完美破解方法

    2015-08-21  以前写了一篇<Myeclipse 2015 stable 1.0 完美破解方法>,现 在跟新一下Myeclipse 2015 stable 2.0 破解方法,此方法 ...

  6. 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/ 破解包(注册机)下载地址:链接 ...

  7. MyEclipse 2015 Stable 1.0下载安装破解日志

    前言 这2天下载了许多myeclipse版本,基本上是14/15版本的,各种破解均告以失败,这次下载了贴吧一个吧友提供的版本,现已破解.破解结果现不好说--目前已装SVN,根据经验,只有等待一定时间验 ...

  8. java ee@ Myeclipse 2015 stable 1.0 完美破解方法

    Myeclipse 2015 stable 1.0 完美破解方法 破解步骤: 使用以前的注册机算号,版本选择Blue即可,后续可解锁Spring高级功能,即Bling的所有功能全部具备 1.1 进入m ...

  9. MyEclipse 2015 Stable 2.0破解方法

    本篇博文简单介绍一下利用网上说明的方法破解MyEclipse 2015 Stable 2.0的具体细节.因为原来在贴吧上的方法不够详细,所以本人重新整理了一下.方法源自:http://tieba.ba ...

随机推荐

  1. cocos2d-x之value

    bool HelloWorld::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getIn ...

  2. 【VB超简单入门】三、开始编程

    接下来要进入正题了!同学们要认真看咯~ 第一步:安装VB开发IDE 在这里我推荐大家安装的是VB迷你版,现在大多数同学使用win7,这个版本可以在win7上运行的妥妥的~ 下载链接:http://pa ...

  3. vim自定义配色方案,图文并茂

    1.先上图                                 下面是tcpdump的源码.颜色根据自己的喜好配置,我比较喜欢亮的颜色,看的清楚! 2.下载辅助配置文件           ...

  4. QQ一键登录功能的实现过程

    QQ登录的思路: 当qq登陆成功后,QQ会给我们返回一个唯一的用户标识:openId,当用户授权QQ时,判断 if(已经有openId){ 跳转到登陆后的页面. }else if(没有openId){ ...

  5. [转]后台页面访问权限:页面基类&内置票据认证 使用方法

    本文转自:http://www.cnblogs.com/fishtreeyu/archive/2011/01/29/1947421.html 一般网站后台页面除了登录页面login.aspx未登录用户 ...

  6. UESTC 923 稳住GCD DP + GCD

    定义:dp[i][j] 表示 在前i个数中,使整个gcd值为j时最少取的数个数. 则有方程: gg = gcd(a[i],j) gg == j : 添加这个数gcd不变,不添加,  dp[i][j] ...

  7. 查​看​和​设​置​o​r​a​c​l​e​数​据​库​的​最​大​连​接​数

    当前的连接数 select count(*) from v$process; 设置的最大连接数(默认值为150) select value from v$parameter where name = ...

  8. java 20 - 9 带有缓冲区的字节输出流和字节输入流

    由之前字节输入的两个方式,我们可以发现,通过定义数组读取数组的方式比一个个字节读取的方式快得多. 所以,java就专门提供了带有缓冲区的字节类: 缓冲区类(高效类) 写数据:BufferedOutpu ...

  9. Genymotion出现unknown generic error和This may occur if you are using a proxy错误的解决方案

    今天在实验室希望在Genymotion上多下载几个模拟器,需要重新登录帐号,却发现一个错误,叫做unknown generic error.前几天还出现过一个很诡异的问题.截图如下: . (1)unk ...

  10. C和指针笔记 3.6链接属性

    链接属性决定如何处理在不同文件中出现的标识符.标识符的作用域也它的链接属性有关,但这两个属性并不相同. 没有链接属性的标识符(none)总是被当作单独的个体,也就是说该标识符的多个声明被当作独立不同的 ...