:::tip
主要记录自己在学习逆向分析JetBrains过程中的点点滴滴成长,目前还在记录分析之中,由于有其他项目可能有所微小的耽搁,不知道后会不会烂尾呢😋。
:::
主要思路:
修改启动选项切换到本地JDK,方便使用
jps
等工具利用
jps
、jinfo <pid>
配和查找sun.java.command
定位main
函数,确认程序启动入口位置通过 启动添加
-verbose
参数分析main
函数所在jar包将所需分析Jar包的Class资源转换为.java的源码形式文件这里工具可有两种,独立程序
JD-GUI
以及IDEA自带程序fernflower
(据说跟minecraft
有渊源)注:双方结合使用较为妥当,二者反编译能力面对混淆也是非常无力的。利用阿里的Java运行时诊断程序
arthas
可以dump运行时产生的类或者使用jad
指令及时的查看产生的源码。
注:配置文件在相应的程序名.jar包中 恢复后即可使用。后发现文件混淆过度,无法利用Idea进行动态调试,遂参考网上方案使用BTrace
进行相关跟踪,效果颇为显著。
2020/02/27
第一次记录今天的分析路程,尝试了多种方案,利用BTrace
跟踪JButton
的构造方法再栈回溯算是小有突破。
根据这个方向,初步打算解决评估版本过期后经过网络验证以后会强制退出。而退出前会弹出一个基于JOptionPane
封装的Dialog,然后会强制退出,由于是多线程问题,无法能够利用静态的方案定位到退出函数,因此以此对话框为基点经过栈回溯,定位相应方法。
1 | javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:857) |
目前在com.intellij.ide.b.a.a
上找到ApplicationManager.getApplication().exit(true, true, false);
一个退出函数,但是暂未确定是响应的退出,以及以何种方式绕过。
2020/02/28
待续…
参考文档: