然后我就尝试根据现有PJ包的明文授权文件自己逆向。

1.png (62.79 KB, 下载次数: 0)
下载附件
2022-11-17 15:51 上传
把授权文件放到对应的目录打开软件,提示授权文件解析错误。EXE拖入IDA先看看,发现有JAVA相关的字符串

2.png (47.2 KB, 下载次数: 0)
下载附件
2022-11-17 15:51 上传

3.png (146.24 KB, 下载次数: 0)
下载附件
2022-11-17 15:51 上传
用IDA导入JNI.h,大体看了下流程,应该就是创建JVM虚拟机载入classloader然后加载所需class启动JAVA程序。

4.png (61.43 KB, 下载次数: 0)
下载附件
2022-11-17 15:51 上传

5.png (106.62 KB, 下载次数: 0)
下载附件
2022-11-17 15:51 上传
OD调试起来,在sub_CA3CA0看到了ZIP相关的CLASS,以及DefineClass函数

6.png (107.67 KB, 下载次数: 0)
下载附件
2022-11-17 15:51 上传

7.png (91.05 KB, 下载次数: 0)
下载附件
2022-11-17 15:51 上传

8.png (100.21 KB, 下载次数: 0)
下载附件
2022-11-17 15:51 上传
OD中看下这个DefineClass加载的是bootloader,这个loader 解密加载了其他JAR

9.png (62.7 KB, 下载次数: 0)
下载附件
2022-11-17 15:51 上传

10.png (195.61 KB, 下载次数: 0)
下载附件
2022-11-17 15:51 上传
把JAR DUMP 出来 可以看到里面有个Activator类。Activator类里面就是解析授权文件的。

11.png (73.32 KB, 下载次数: 0)
下载附件
2022-11-17 15:51 上传

12.png (259.38 KB, 下载次数: 0)
下载附件
2022-11-17 15:51 上传
可以看到构造函数里面有X509Certificate 验证,而我下载的PJ包授权文件是明文的
所以这里我们把X509Certificate相关的直接删除掉,然后读取授权文件方式直接换成properties,这样就可以直接解析成功了

13.png (211.01 KB, 下载次数: 0)
下载附件
2022-11-17 15:52 上传
改完后发现还是报错,花了些时间调试了下,发现plugin目录中的launcherJAR包加载Activator签名不通过导致的,需要把这里的getSigners以及这个包中JAdapter类findHook()中的getSigners去掉就OK了

14.png (209.62 KB, 下载次数: 0)
下载附件
2022-11-17 15:52 上传

15.png (164.35 KB, 下载次数: 0)
下载附件
2022-11-17 15:52 上传
最后修改CLASS替换试一下,启动成功了,可以正常进入软件了

16.png (41.59 KB, 下载次数: 0)
下载附件
2022-11-17 15:51 上传