然后我就尝试根据现有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 上传