Skip to content

Commit b454323

Browse files
author
Super User
committed
feat: add config mode, multi-keyword search, and json/txt export
1 parent f3dfc8c commit b454323

3 files changed

Lines changed: 506 additions & 119 deletions

File tree

README.md

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,53 @@
1717
新版本砍掉了原先的功能,只支持批量搜索文件夹下的jar文件反编译分析
1818

1919
# 使用说明
20-
原使用说明可以参考公众号文章:https://mp.weixin.qq.com/s/fRAnIqa8OieuTt2iLuKdCg?token=329619276&lang=zh_CN
2120

22-
注意!更新后请参考公众号新文章使用,原方法已不适用
21+
## 1) 命令行模式
2322

24-
在config.properties中配置源码所在文件夹、源码输出文件夹、搜索字符串
25-
分别对应配置字段:csDirectory、outputDirectory、searchText
23+
```bash
24+
java -jar JarMethodFinder-1.0-SNAPSHOT.jar <jarDirectory> <keywords> [cfrJarPath] [outputDir]
25+
```
26+
27+
- `jarDirectory`: 待审计 JAR 根目录(会递归扫描)
28+
- `keywords`: 搜索关键字,支持逗号分隔多个,例如:`exec,Runtime.getRuntime,ProcessBuilder`
29+
- `cfrJarPath`(可选): CFR 反编译器路径,不传则读取环境变量 `CFR_JAR_PATH`,再兜底 `./cfr.jar`
30+
- `outputDir`(可选): 导出目录(用于 JSON/TXT 结果导出)
31+
32+
示例:
33+
34+
```bash
35+
java -jar JarMethodFinder-1.0-SNAPSHOT.jar /data/jars "exec,Runtime.getRuntime" /tools/cfr.jar /tmp/search-output
2636
```
27-
csDirectory=C:\\Users\\xxxx
28-
outputDirectory=C:\\Users\\xxxx\\output
29-
searchText=where,Concat,...
37+
38+
## 2) config.properties 模式(推荐)
39+
40+
```bash
41+
java -jar JarMethodFinder-1.0-SNAPSHOT.jar --config config.properties
42+
#
43+
java -jar JarMethodFinder-1.0-SNAPSHOT.jar config.properties
3044
```
31-
searchText可以配置多个字符串关键字,并用,号进行分割
3245

33-
指定配置文件执行jar文件后,在输出文件夹中对每个方法输出结果文件
46+
配置示例:
47+
48+
```properties
49+
jarDirectory=/data/jars
50+
keywords=exec,Runtime.getRuntime,ProcessBuilder
51+
cfrJarPath=/tools/cfr.jar
52+
outputDir=/tmp/search-output
53+
outputFormat=all
54+
caseSensitive=false
55+
contextLines=3
56+
```
3457

35-
每个文件中记录了方法名称和方法中的利用链,还会展示上下文5行代码,更加直观的显示
58+
字段说明:
3659

37-
如下指定关键字为MapFilePath,搜索出相关代码的效果
60+
- `jarDirectory`: JAR 扫描目录
61+
- `keywords`: 关键字列表(逗号分隔)
62+
- `cfrJarPath`: CFR 路径(可选)
63+
- `outputDir`: 导出目录(可选)
64+
- `outputFormat`: `txt` / `json` / `all`
65+
- `caseSensitive`: 是否大小写敏感,默认 `false`
66+
- `contextLines`: 匹配上下文行数(上下各 N 行),默认 `3`
3867

3968

4069
# 更新日志
@@ -43,19 +72,11 @@ searchText可以配置多个字符串关键字,并用,号进行分割
4372
- 2026-03-06 优化JAR审计流程:
4473
- 支持跨平台CFR路径配置(第三参数或环境变量 `CFR_JAR_PATH`
4574
- 修复反编译输出路径处理,减少误报“反编译失败”
75+
- 新增 `config.properties` 模式
76+
- 新增结果导出(`JSON/TXT/all`
77+
- 新增多关键字逗号分隔搜索
4678
- 优化匹配输出逻辑与去重,提升稳定性
4779

48-
## 新版执行示例
49-
50-
```bash
51-
# 方式1:命令行直接传 CFR 路径
52-
java -jar JarMethodFinder-1.0-SNAPSHOT.jar /path/to/jars Runtime.getRuntime /path/to/cfr.jar
53-
54-
# 方式2:环境变量配置 CFR 路径
55-
export CFR_JAR_PATH=/path/to/cfr.jar
56-
java -jar JarMethodFinder-1.0-SNAPSHOT.jar /path/to/jars Runtime.getRuntime
57-
```
58-
5980
**本工具由Code4th安全团队开发维护**
6081

6182
![image](https://ice.frostsky.com/2024/08/18/5559fc7abc47065e9e5e53a7dba2142b.jpeg)

config.example.properties

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
jarDirectory=/data/jars
2+
keywords=exec,Runtime.getRuntime,ProcessBuilder
3+
cfrJarPath=/tools/cfr.jar
4+
outputDir=/tmp/search-output
5+
outputFormat=all
6+
caseSensitive=false
7+
contextLines=3

0 commit comments

Comments
 (0)