java jar 逆向环境搭建
安装 jd-gui
这个工具主要用来看 java 的字节码文件(.class)
- 到 jd-gui/release 下载 jd-gui-windows-1.6.6.zip
- 解压 jd-gui-windows-1.6.6.zip
- 进入解压后的目录, 把jd-gui.exe 发送快捷方式到桌面
安装 jclasslib
这个工具主要用来改java 字节码文件 (.class)
- 到 jclasslib/release 下载 jclasslib_win64_6_0_3.exe
- 双击 jclasslib_win64_6_0_3.exe 完成安装
安装 7-zip
这个工具是用来查看jar 并替换里面需要修改的class 文件
到 7-zip 下 载安装
安装 jdk
配置环境变量
java jar逆向步骤
使用jd-gui 把 jar 里的class 全部还原成 java 原文件
打开 jd-gui
把jar 拖到 jd-gui
导出java 原文件
File => Save all Source
这会生成一个和jar 原文件目录结构一样的目录, 只不过里面的 .class 全部替换成了 .java
在导出的源文件目录下 使用rg 搜索关键字 定位到目标 .java 再去分析
如
使用 jclasslib 更改 .class
打开 jclasslib
把 .class 拖到 jclasslib
找到需要修改的地方
主要看方法里面的 [0]Code 如上图所示就已经定位到了需要更改的位置了, 在java 文件中可以看到 只需要把return bool 改成 return true 就可以了
这里是已经改过了的, 原来 395 字节处是 iload_0
如何修改
-
编写目标java 文件, 编译后查看机器码
如我需要知道 return true 的机器码
-
编写test.java
test.java
1
2
3
4
5
|
public class test {
public boolean main(String[] args) {
return true;
}
}
|
- 😠 注意: java文件名一定要和 class 名一致, 否则编译不过, 还没有有价值的错误信息
修改class
在需要修改的地方点击左键 => 替换操作码 => 选择 iconst_1 => 确定 => 保存
把改好的文件重新打包成 jar
备份原来的jar
用7zip 打开原来的jar 并进入需要替换的class 所在的目录上
把改好的class 拖进入覆盖掉原来的class
还可以用 beyond compare 去对比一下两个jar 包
😠 注意: 之所以不能把解压后的文件夹直接打包成.zip 再rename
是因为在Windows 下解压的时候, 由于文件名的大小字不敏感, 就有可能会出问题
用有问题的文件再打包就没有意义了
逆向 DVT eclipse
首先了解到DVT 是用的FLEXLM 架构做的验签, 浏览安装目录, 最终定位到 “dvt_eclipse\batch\libs\ro.amiq.dvt.flclient-2.11.jar”
参考jar 逆向步骤对jar 完成修改并打包
参考java jar逆向步骤
查找DVT 中可能包含 ro.amiq.dvt.flclient-2.11.jar 这个jar 的jar
因为jar 可以包含 jar 所以我们除了要替换掉原始的 ro.amiq.dvt.flclient-2.11.jar
这个jar之外, 还要替换包含它的jar
使用rg 搜索可能包含的包
1
|
rg --binary ro.amiq.dvt.flclient-2.11.jar
|
可以看到 eclipse\plugins\ro.amiq.dvt_22.1.22.jar
中包含了 ro.amiq.dvt.flclient-2.11.jar
之所以可以搜索到是因为 每一个 jar 里面会有 MANIFEST.MF 这个文件, 如果它有包含其他 jar 的话, 会在这个文件里面记录
使用 7zip 替换掉需要修改的jar
需要替换的有两个 一个是 batch/libs/ro.amiq.dvt.flclient-2.11.jar
下的, 另一个是 eclipse\plugins\ro.amiq.dvt_22.1.22.jar
参考 把改好的class 拖进入覆盖掉原来的class
清除缓存文件
使用 wsl 里面的 find 命令找到 ro.amiq.dvt.flclient-2.11.jar 缓存的地方
1
|
find -name ro.amiq.dvt.flclient-2.11.jar
|
把第二个结果的jar 删掉
设置LICENSE
license file
DVT.lic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
INCREMENT dvt_core dvtlmd 2.0 21-dec-2029 0 HOSTID=ANY user_info="DVT Eclipse" \
START=1-jan-2020 SIGN="1111 2222 3333 4444 5555 6666 7777 8888\
9999 1111 2222 3333 4444 5555 6666 7777 8888 9999 1111 2222 3333 \
4444 5555 6666 7777 8888 9999 1111 2222 3333 4444"
INCREMENT dvt_sv dvtlmd 2.0 21-dec-2029 0 HOSTID=ANY user_info="DVT Eclipse" \
START=1-jan-2020 SIGN="1111 2222 3333 4444 5555 6666 7777 8888\
9999 1111 2222 3333 4444 5555 6666 7777 8888 9999 1111 2222 3333 \
4444 5555 6666 7777 8888 9999 1111 2222 3333 4444"
INCREMENT dvt_sv_lint dvtlmd 2.0 21-dec-2029 0 HOSTID=ANY user_info="DVT Eclipse" \
START=1-jan-2020 SIGN="1111 2222 3333 4444 5555 6666 7777 8888\
9999 1111 2222 3333 4444 5555 6666 7777 8888 9999 1111 2222 3333 \
4444 5555 6666 7777 8888 9999 1111 2222 3333 4444"
INCREMENT dvt_sv_debug dvtlmd 2.0 21-dec-2029 0 HOSTID=ANY user_info="DVT Eclipse" \
START=1-jan-2020 SIGN="1111 2222 3333 4444 5555 6666 7777 8888\
9999 1111 2222 3333 4444 5555 6666 7777 8888 9999 1111 2222 3333 \
4444 5555 6666 7777 8888 9999 1111 2222 3333 4444"
INCREMENT dvt_vhdl dvtlmd 2.0 21-dec-2029 0 HOSTID=ANY user_info="DVT Eclipse" \
START=1-jan-2020 SIGN="1111 2222 3333 4444 5555 6666 7777 8888\
9999 1111 2222 3333 4444 5555 6666 7777 8888 9999 1111 2222 3333 \
4444 5555 6666 7777 8888 9999 1111 2222 3333 4444"
INCREMENT dvt_vhdl_debug dvtlmd 2.0 21-dec-2029 0 HOSTID=ANY user_info="DVT Eclipse" \
START=1-jan-2020 SIGN="1111 2222 3333 4444 5555 6666 7777 8888\
9999 1111 2222 3333 4444 5555 6666 7777 8888 9999 1111 2222 3333 \
4444 5555 6666 7777 8888 9999 1111 2222 3333 4444"
INCREMENT dvt_e dvtlmd 2.0 21-dec-2029 0 HOSTID=ANY user_info="DVT Eclipse" \
START=1-jan-2020 SIGN="1111 2222 3333 4444 5555 6666 7777 8888\
9999 1111 2222 3333 4444 5555 6666 7777 8888 9999 1111 2222 3333 \
4444 5555 6666 7777 8888 9999 1111 2222 3333 4444"
INCREMENT dvt_e_debug dvtlmd 2.0 21-dec-2029 0 HOSTID=ANY user_info="DVT Eclipse" \
START=1-jan-2020 SIGN="1111 2222 3333 4444 5555 6666 7777 8888\
9999 1111 2222 3333 4444 5555 6666 7777 8888 9999 1111 2222 3333 \
4444 5555 6666 7777 8888 9999 1111 2222 3333 4444"
INCREMENT dvt_pss dvtlmd 2.0 21-dec-2029 0 HOSTID=ANY user_info="DVT Eclipse" \
START=1-jan-2020 SIGN="1111 2222 3333 4444 5555 6666 7777 8888\
9999 1111 2222 3333 4444 5555 6666 7777 8888 9999 1111 2222 3333 \
4444 5555 6666 7777 8888 9999 1111 2222 3333 4444"
|