使用jhsdb(hotspot debugger)破解加密的Java应用程序

Java 代码保护的一种解决方案是类文件加密或 jar 文件加密。此类方案通过自定义的加载器加载加密的class文件或jar文件,由于JVM的Attach机制的存在,这种方案没有任何用处,并且可以使用JDK自带的工具轻松破解。

示例应用程序

下面是一个带有简单摆动窗口和按钮的示例应用程序。 https://github.com/3-keys/test-swing-app

img

加密应用程序

使用Eclipse导出可运行的jar文件,并使用加密工具对jar文件进行加密。加密后jar文件的结构如下:

img

test-swing-app.jar为加密后的jar文件数据,Launcher类为本工具自定义加载类,加密后的jar包仍然通过标准的java -jar命令运行

破解加密应用程序

首先运行加密后的jar文件,然后找到JDK的bin目录,应该可以找到jshdb文件。

1_nsxbwNJrGJB4mpzsQv55VA

执行jhsdb hsdb,打开HotSpot调试器,如果在Windows下,您可能需要以管理员身份运行,点击文件选择附加到HotSpot进程...

img

使用 ps aux | Linux系统中使用grep java命令,Windows系统中通过任务管理器查找进程pid。在下面的对话框中输入进程pid。

img

成功附加后,点击工具->类浏览器

img

Browser类包含所有加载的类的信息,搜索com.example,你可能会看到com.example下的所有类

img

单击 com.example.TestWindow @0x0000…。然后单击“创建.class文件”

img

在执行jhsdb命令之前,切换到生成的类文件所在的目录

img

使用Luyten 或者jadx打开类文件,您可以看到反编译的代码

img