最近一直很忙,今天总算抽出点时间总结一下破解YourKit Java Profiler 2013的过程。YourKit Java Profiler 2013(后面简称YJP)是我见过的软件保护做的最好的Java应用软件,虽然YJP是用Java写的应用软件,但是软件保护相关却是用C++写的,在 windows上是的Native代码是yjpagent.dll,在Linux上是Native代码是yjpagent.o。下面的破解是基于 windows版本的YJP。
1.快速浏览一下YJP的安装目录(在我电脑上路径为c:\Program Files\yjp 2013 build 13056\lib),jar包不多,yjp.jar基本上就是要破解的jar包。用java反编译工具jd-gui打开yjp.jar,可以看到jar包中大部分的class和资源文件都以“_”结尾。
2. 用jd-gui无法查看这些文件,仔细查看发现这些文件经过加密处理的。大家都知道,jvm只能执行byte code代码,所以一眼看到这些加密的class文件,就能会想到,不论是如何加密以及在什么地方加密,一定在某个地方会进行解密处理,而且,加载解密后 Class的ClassLoader一定没有加密。经过仔细调查,果不其然,在YJP自定义的ClassLoader类 com.yourkit.h.l.class中找到了这部分代码:
顺便说一下,Natives类是本地方法调用的类,并且未进行加密:
3. 接下来要根据上面的代码:Natives.decipher1(arrayOfByte),可以把所有加密的class和资源文件可以解密出来。(这点很容易!)
解密后的yjp包结构如下:
4.接下来就在解密后class文件中查找license处理相关的代码,很快就在com.yourkit.h.n.class中找到:
再阅读此类和调用此类的其他类,可以了解license的结构如下:
1.userId (String)
2.固定值=1 (int)
3.授权类型 (int,可选4000/4002)
4.授权代码 (string)
5.License签发日期 (date)
6.License失效日期 (为null时表示永不失效)
7.可选项,比如免费支持有效期
5.了解了License结构,接下来就要进行破解了。
YJP是采用RSA进行加密的,我在《破解JRebel 5.x的方法》中介绍了几种可行的破解非对称密钥加密的方法。
如果采用伪造一对RSA公钥和密钥,并替换原有的公钥,那就需要去破解native代码yjpagent.dll。
而破解本地代码要远比破解经过混淆的java byecode困难的多。如果有其他的可行的方法时,一般不考虑这种方式。
(如果一定要用这种方式破解,那么首先要伪造的公钥替换掉yjpagent.dll中的公钥,并在第三步的基础上用伪造的私钥对原yjp.jar中进行了加密的class和资源进行加密)。
现在采取另一种更简单的破解方法,即绕过解密过程直接注入一个合法的License。经过分析,可以在com.yourkit.h.n.class中注入License。
由于com.yourkit.h.n.class在原jar包中是加密的,为了确保注入代码后不存在任何问题就需要对此类进行加密,但是,由于不知道 YJP原始的加密密钥,除非采用前面所说的“伪造一对RSA公钥和密钥,并替换原有的公钥”。原因就是:如果注入License后不进行加密,则会存在一 个隐患:因为加密的class和未加密的class是使用不同的ClassLoader加载的,而com.yourkit.h.n.class原来是加密 的,这样com.yourkit.h.n.class的ClassLoader就发生了变化,就会引起ClassNotFoundException异 常。
大家知道,在JVM中是由唯一决定一个Class,也就是说一个Class使用不同的ClassLoader加载时是不同的。
基于上面的原因,在com.yourkit.h.n.class中注入License不是一个好的方法。仔细分析,最好的方法是在Natives类的 decipher2方法中注入License,并把decipher2由Native调用修改成非Native调用,其他所有的信息保持不变。(可以使用 cglib或javassist来完成)
6. 注入License到Natives类的decipher2方法后, 启动YJP,在License输入窗口,随便输入偶数个16进制数或者空格
就可点击“OK”进行注册。
注册完成后,看到注入的License信息:
但是,在启动YJP自带的Profile demo application时出现错误,而且错误还是来自对createDatabaseImpl的native调用:
7. 既然是createDatabaseImpl的native调用出错,那就用反汇编工具IDA Pro打开看看,并按F5之后看到如下伪代码。 (下面以32位的yjpagent.dll为例):
问题一目了然,黄色部分的“The installation is corrupt”跟上一步java.lang.RuntimeException信息一样。下一步要做的就是从“v18 = 0;”无条件跳转到"v18 = 2;",即绕开中间的"if ( v16 ....."检查。
回到反汇编窗口,找到对应的指令和地址:
也就是在上图中,要由地址7001CA66无条件跳转到地址7001CAAB,即:jmp short loc_7001CABB(对应的HEX代码为EB 43,EB->JMP, 43表示目的地址跟当前地址的偏移量)。换句话说,就是要把把地址7001CA66开始的汇编指令0F 84改为EB 43,并把B1 00 00 00改为90 90 90 90 (90指令代表nop)。
使用任何一种Hex Editor,比如:UltraEdit,010 Editor,HEX Workshop,WinHex等进行修改:
对于64位的yjpagent.dll,处理方法基本一样,在此不再阐述。
8. 再启动YJP,并执行Profile demo application,运行良好,算是成功破解!
总结起来,三个关键步骤:
1. 解密已经加密的"Class_"文件。
2. 在Natives中注入License。
3. 绕过yjpagent.dll中的License完整性校验。
相关推荐
最新YourKit Java Profiler 2019.01 最新破解版 build 111 绿色安装。 欢迎大家试用。 免责声明:这只是供个人开发爱好者使用,如用于商业或公司目的,请购买正版,否则由此产生的后果,本人概不负责。 毕竟这只是...
YourKit Java Profiler 2017 破解版YourKit Java Profiler 2017 破解版YourKit Java Profiler 2017 破解版YourKit Java Profiler 2017 破解版
YourKit Java Profiler :专业Java剖析工具:YourKit Java Profiler 发布。CPU和内存的剖析历来是很困难的,YourKit创造出了革命性的剖析工具,应用在研发和生产阶段,为专业的Java开发者带来了无比的好处。 ...
yourkit java profiler 2015 注册码 实测可进行正常安装 服务器进程内存分析不可多得的工具
最新稳定版本 YourKit Java Profiler 2019.08 build 141 绿色安装。 欢迎大家试用。
最新YourKit Java Profiler 2015破解版 build 15084 绿色安装。 先前破解的15050版本,破的不完整,偶尔有闪退和打不开snapshot等问题。 这次解的全一些。欢迎大家试用。 免责声明:这只是供个人开发爱好者使用,如...
最新YourKit Java Profiler 2015破解版 build 15050 绿色安全 YourKit Java Profiler是目前最好的一款Java Profiler软件
YourKit Java Profiler 是业界领先的Java剖析工具。CPU和内存的剖析历来是很困难的,YourKit创造出了革命性的剖析工具,应用在研发和生产阶段,为专业的Java开发者带来了无比的好处。 YourKit Java Profiler keygen...
YourKit Java Profiler 2017 破解版本,仅供学习交流,如需商用,请到官方网站下载正版软件
最新YourKit Java Profiler 2017.02破解版 build 57 绿色安装。 欢迎大家试用。 免责声明:这只是供个人开发爱好者使用,如用于商业或公司目的,请购买正版,否则由此产生的后果,本人概不负责。 毕竟这只是业余...
The latest stable version: YourKit Java Profiler 2020.09 build 410
YourKit Java Profiler 2023.09 build 109 * JVM support * Linux support * macOS support * Windows support * Java Flight Recorder support
YourKit Java Profiler yjp-2015-build-15084-crack.zip
Java Resource Profiler
JProfiler是一个全功能的Java剖析工具(profiler),JProfiler可以找到性能瓶颈、抓住内存泄漏(memory leaks)、并解决多线程的问题。它让你得以对heap walker作资源回收器的root analysis,可以轻易找出内存泄漏;...
YourKit Java Profiler 是业界领先的Java程序性能分析工具。程序的CPU和内存性能剖析历来是很困难的,YourKit创造出了革命性的性能分析工具,可应用在研发和生产阶段,为专业的Java开发者带来了无比的好处。
用于代码覆盖率分析,函数分析,Api调用分析
YourKit_Java_Profiler_12.0.2_Downloadly.ir.rar
项目检测分析工具,实时获得快照分析项目内存、CPU占用情况等等
YourKit 是一个用于分析Java 与.NET 应用程序的智能工具,YourKit Java Profiler 已经被IT 专业人士与分析师公认为最好的分析工具。通过YourKit 技术解决方案可以以非常高的的专业水平分析出CPU 与内存使用情况。 ...