声明

  • My Eclipse 2015 程序版权为Genuitec, L.L.C所有.
  • My Eclipse 2015 的注册码、激活码等授权为Genuitec, L.L.C及其付费用户所有.
  • 本文只从逆向工程的兴趣出发,研究软件保护机制.
  • 不会释出完整源代码和破解补丁.
  • 会直接推测出授权信息的地方打码处理
  • 本文针对My Eclipse 2015 Stable 2.0或CL版本

背景

在上两篇博文中,我们研究了逆向中的两大手段:

在本篇,将着重利用上述两种手段,来参破My Eclipse 2015的注册、激活算法及软件保护机制。

先看成果,Bling授权至2099年

激活通过


熟悉软件本身

因为之前并不熟悉My Eclipse,所以找了很久都找不到提示授权信息的界面在哪里,汗一个先!

逆向本身,是从无道到有道,其中的乐趣在于探索本身,而不是结果。

要逆向一个东西,得先熟悉它的布局、机理,否则逆向只能是空谈。

  • My Eclipse软件太大,光安装包就1.3G左右,而且国内是百度网盘下载,奇慢无比.
  • My Eclipse插件巨多,要找出关键的包、lib和代码片段,稍显复杂和繁琐.
  • 因为软件规格明显比CLion高出一个级别,所以其中的困难可谓重重,至少在实现动态调试上需要特殊处理.

插件巨多:

当面对的是一头大象,要战胜它,就需要忍耐,你需要观察它的一举一动,然后才能出击。

分析类加载信息

这里,用我们熟悉的verbose大法,分析类加载信息,缩小目标。

同时,搜集到的类加载信息,在后续的jar包分析中,也是频繁要来看一看,找一找的。

关于main

关于license/licence

一旦发现或者猜想到一些门路,就要来这里看一看,然后分析jar包中的关键类的四周信息,以充分掌握软件的特性,避免做无用功。


创建静态分析环境

分析启动信息

对My Eclipse安装目录下的*.ini进行修改,指定我们自己的java/jre/jvm,以方便使用 jinfo 等工具.

查看vm optionscommand line args

通过分析,从$ME_HOME/plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar入手,尝试将程序启动起来。

正如其名,真的是个launcher/loader,虽然程序启动起来了,但是要想在注册授权信息/My Eclipse Subscription Info之类的附近断掉程序,并且显示源码,这一点还是远远不够的。

打造代码检索环境

为了能够充分掌握某个关键类、方法的调用路径,以方便我们进行回溯或者探索重要信息,通常我们采用如下几种方法:

  • 反编译源代码,在关键点处充分修改,打印调用栈.
  • 利用静态AOP或者hook,插入我们的调试器.
  • 将代码当作文本处理,以利用sed/grep/less等工具,以及文件索引能力,方便大批量的进行关键代码搜索.
  • 直接用调试器附加目标进程,要显示源码的话,往往需要我们加-g以产生调试信息,这一点在My Eclipse的保护机制下受到限制,但这也是我们需要突破的地方.
  • 利用IDE提供的查找使用/正向依赖/反向依赖分析技术.
  • 利用dump,将关键代码段或者类信息从目标进程中dump出来并还原为源代码.

总之,灵活结合上述几种手段,目的是为了充分在My Eclipse这头大象身上辗转腾挪,取我所需.

解压缩jar包,并将class反编译为java文件

jar包是采用zip格式压缩的,所以我们也可以利用unzip来进行解压缩.

为了取得更好的反编译效果,我们这次不使用jd来做,在博主安装的Intellij IDEA的lib下,有一个fern flower的反编译工具,这也是IDEA的默认反编译器,我们就用它了,有兴趣的东西可以搜索下,貌似跟mine craft有很大渊源。

反编译,首先将需要反编译的包搜集到一个文件中,比如genuitec.jar.txt中,然后建立一个简单的脚本进行批处理:

解压缩类似,就不贴图了,我们利用unzip,你也可以利用jar/编程等方式实现解压缩,当然,如果你不嫌累,1000多个jar包,你也可以手工解压缩^^.

unzip ${jar} -d ${out_dir}

建立索引

有条件的可以用solr/lucene来做,这里我们利用IDE的索引能力就可以了,很简单,将所有我们感兴趣的java文件,丢进IDE:

然后,就可以这样来方便地搜索我们需要的class/java文件了:

当然,也可以路径搜索:

虽然因为各种依赖关系极其复杂,要全部修复十分困难,无法全面编译并利用语义搜索等手段,但这一步,为我们充分地占有资料并检索打下坚实基础,配合前面所述的verbose信息,我们可以对关键代码、类、路径、符号进行搜索、跳转,极大地提升我们的分析效率。


打造动态调试环境

在静态阶段,我们的分析能力是受到局限的,了解一个软件的运行机制,比较好的办法,就是调试它。

但是,我们面对的是My Eclipse这样的大象,即使给你完整的源代码,要分析清楚也是一件很困难的事,所以,我们要利用修复、截取等手段,缩小我们动态调试的范围,降低难度。

上面所述,是建立在我们的静态分析基础之上,而静态分析,需要做大量的工作,繁琐、细碎,有时会极为恼火,让你有rm -rf /的冲动,这时候,就静下来,你做的是逆向工作,是从没有门路,创造门路,耐心和调节心情是必做的一件事,这个时候,听听无脑的神曲,尽快reset自己的烦躁,因为后面,还有许多未知的困难在等着你挑战。

ok,这里在我们反编译的java代码中,挑一段感兴趣的地方,小小修改一点,编译为class文件,替换到对应的jar包中,然后利用前文所述的launcher来跑一下看看吧!

我擦,这什么鬼东西?

后话:My Eclipse 2015 采用的完整性验证技术,配合数字签名,以达到检测代码被修改的目的。

真是令人恼火,看来没有CLion那么好搞,静一静,想想思路。

让我们来推测一下这个提示框的调用栈:

	java
-> main
-> initialize
-> ..
-> integrationCheck
-> alert("骚年,你动了我的代码!")

好的,想必你已经懂我在说什么。

利用回溯法来分析完整性验证机制,并看看它做了什么.


破除软件完整性验证保护

自己造轮子,精准搜索:finder

既然修改了代码,出现了错误,动态调试从何谈起?

作为工程师,你能够改变世界的那一点,就在于你可以按照需要,来造轮子。

这个时候,我们有两种办法:

  1. 还是从静态环境中,来搜索错误提示
  2. 自己造轮子,来搜索错误提示.

为什么需要自己造轮子呢?

  • 静态环境的搭建极其耗时
  • 逆向目标复杂,静态分析容易遗漏
  • 方便后续的补丁操作

看看我们这个时候需要的轮子:

没错,我们需要在jar包中、zip包中、文件夹中、class文件中:

  • 找到我们感兴趣的文件格式
  • 查找字节指纹
  • 打印我们需要的各类信息

如下:

这个时候,我们的检索能力如下:

  1. verbose信息.
  2. 静态环境提供的路径、符号、文件搜索.
  3. 提供文件指纹、字节特征码搜索的finder.
  4. ServiceAbility Agent提供的运行时信息.

抹除完整性验证代码

在抹除前,My Eclipse的完整性验证代码之一如下:

抹除后,如下:

MyEclipse 2015 的完整性验证,分散在多个jar包的多个类中,要不遗漏,一是需要耐心,二是依赖finder的字节指纹搜索,同时配合静态环境的分析。

这里,思路很重要,剩下的就看你擅长不擅长干细活了^^.


自己造轮子,文件补丁师 : patcher

现在,我们需要用抹除验证的代码,替换原来的代码,并删除、增加一些东西,这里你可以手动去做,毕竟jar包就是zip格式,也可以自己做patch程序。

考虑自己做patch程序的主要目的:

  1. 不可能一次patch到位,需要多次进行补丁操作.写程序来做,配置后即可自动化完成.(省时)
  2. 输出必要的调试信息以方便诊断.(省心)
  3. 自动化crack过程.(省力)

如下:

调试信息:

让程序飞起来

做完了上面的步骤,基本上,就可以为所欲为了。

现在,让我们将程序跑起来,以确保我们的小范围修改可以如期运行:

完整性验证保护已突破,但是还有注册保护,如上图所示,看来,逆向之旅还遥遥无期呢?

那么,如何破解注册保护呢?

下篇揭晓。

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

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

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

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

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

    声明 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. 问题解决——在结构体中使用set保存结构体数据

    =====================声明========================== 本文原创,转载请明确的注明出处和作者,并保持文章的完整性(包括本声明部分). 本文链接:http:/ ...

  2. ehcache整合spring注解方式

    一.简介 在hibernate中就是用到了ehcache 充当缓存.spring对ehcache也提供了支持,使用也比较简单,只需在spring的配置文件中将ehcache的ehcache.xml文件 ...

  3. 利用jsp和servlet,MySQL实现简易报表

    beans包和jdbc包代码不放了,麻烦 Service.java: package service; import java.sql.Connection;import java.sql.Resul ...

  4. gdb 远程调试 android native 程序

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 先看一张原理图: 我是 Linux 和 Android 双料 0 基础,目前对 gdb 了解的很浅显.(注意 ...

  5. linux进程间通信-XSI IPC

    一 什么是XSI IPC     有三种 IPC我们称作XSI IPC,即消息队列.信号量以及共享存储器(共享内存),它们之间有很多相似之处. 二 标识符和键     每个内核中的 IPC结构(消息队 ...

  6. 如何在WIN7下进行LINUX虚拟机搭建

    Linux是一套免费使用和自由传播的类Unix操作系统,非常适用于搭建网络服务器等,我本人日常工作时,是使用的LINUX和WIN7双操作系统,但每次更换系统总要关机重启很不方便,所以也在WIN7下搭建 ...

  7. 搜索+剪枝 POJ 1416 Shredding Company

    POJ 1416 Shredding Company Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5231   Accep ...

  8. J2EE笔记2

    1. 部署并启动 tomcat 服务器.1). 解压 apache-tomcat-6.0.16.zip 到一个非中文目录下2). 配置一个环境变量. java_home(指向 JDK 安装的根目录) ...

  9. Hamilton回路的判定与构造

    定理1:在一个具有n个顶点的无向连通图G中,如果任意两个顶点的度数之和大于n,则G具有Hamilton回路.此条件为充分条件 定理2:设图G = <V,E>,是Hamilton图,则对于v ...

  10. Android 动态加载 (三) PAK 详解

    pak文件经常出现于游戏的安装目录中,其实pak文件是一种特殊的游戏压缩文件,用于压缩声音.图片等资料.由于pak文件专门针对游戏设计文件结构,pak文件就是将多个文件(图片.音乐.文本)打包为一个单 ...