使用jhsdb(hotspot debugger)破解加密的Java应用程序
Java 代码保护的一种解决方案是类文件加密或 jar 文件加密。此类方案通过自定义的加载器加载加密的class文件或jar文件,由于JVM的Attach机制的存在,这种方案没有任何用处,并且可以使用JDK自带的工具轻松破解。
示例应用程序
下面是一个带有简单摆动窗口和按钮的示例应用程序。 https://github.com/3-keys/test-swing-app
加密应用程序
使用Eclipse导出可运行的jar文件,并使用加密工具对jar文件进行加密。加密后jar文件的结构如下:
test-swing-app.jar为加密后的jar文件数据,Launcher类为本工具自定义加载类,加密后的jar包仍然通过标准的java -jar命令运行
破解加密应用程序
首先运行加密后的jar文件,然后找到JDK的bin目录,应该可以找到jshdb文件。
执行jhsdb hsdb,打开HotSpot调试器,如果在Windows下,您可能需要以管理员身份运行,点击文件选择附加到HotSpot进程...
使用 ps aux | Linux系统中使用grep java命令,Windows系统中通过任务管理器查找进程pid。在下面的对话框中输入进程pid。
成功附加后,点击工具->类浏览器
Browser类包含所有加载的类的信息,搜索com.example,你可能会看到com.example下的所有类
单击 com.example.TestWindow @0x0000…。然后单击“创建.class文件”
在执行jhsdb命令之前,切换到生成的类文件所在的目录