在JEB里做自动化,思路要先分清两层:一层是脚本本身怎么写,核心是拿到ctx上下文后去打开文件、拿Project、遍历Unit并导出结果;另一层是怎么把脚本挂到命令行去跑成批处理,让它能在无人值守环境里按目录批量产出反编译结果。把这两层跑通后,你再做类名过滤、输出归档与并发加速就会很顺。
一、JEB Decompiler脚本怎么写
JEB的客户端脚本是Python脚本,运行在Jython环境里,入口固定为实现IScript接口并提供run方法,run会收到IClientContext或图形界面的IGraphicalClientContext。
1、确认脚本语法口径是Python 2.7
写脚本时按Python 2.7语法来写,避免f字符串、类型注解等Python 3写法,否则在Jython里会直接报语法错误。
2、在UI里新建与运行脚本
把脚本放到JEB安装目录的scripts文件夹,打开UI客户端后按F2进入【File】→【Scripts】执行脚本,先用最小脚本确认运行链路正常。
3、用最小骨架把ctx信息打出来
先写一个只打印版本号与参数的脚本,确认ctx.getArguments能取到你传入的参数,后面再接打开文件与导出逻辑。
4、拿到当前Project并定位你关心的Unit
脚本里通常先拿prj=ctx.getMainProject,然后用prj.findUnit或prj.findUnits找Dex单元或APK单元,Dex单元IDexUnit是你遍历方法、类、字段的入口。
5、需要区分UI脚本与命令行脚本的上下文差异
脚本在UI里运行时ctx是IGraphicalClientContext,能操作工作区视图与文档;在命令行里运行时ctx通常是IClientContext,只做分析与导出更合适,别把UI交互逻辑写进批处理脚本里。
二、JEB Decompiler自动化批处理怎么做
批处理的关键是两件事:用JEB的命令行模式加载脚本并传入输入输出参数,然后在操作系统层用循环把一批文件喂给它。一般先用官方示例脚本跑通单文件,再扩展到目录批处理最快。
1、先确认你的许可与命令行调用方式
命令行执行脚本需要Pro或CE许可,基本调用格式是启动脚本加-c再加--script,双横线后面是传给脚本的参数。
2、用官方示例DecompileFile.py先跑通单文件
PNF Software在示例脚本里给了标准用法,包含从ctx.getArguments取参、ctx.open打开输入文件、遍历代码单元并使用导出器做快速反编译的套路,你可以先直接复用它来验证环境与输出目录是否正确。
Linux示例写法
3、做目录批处理时用外层脚本循环调用JEB命令行
最稳妥的做法是每个输入文件启动一次JEB命令行实例,输出目录按文件名分文件夹,避免不同任务互相覆盖。
4、需要更细粒度控制时把批处理逻辑搬进JEB脚本
如果你希望一次启动JEB处理多个文件,可以让脚本第一个参数接收输入目录,然后在脚本里循环ctx.open逐个打开并导出结果,这个模式更省外层脚本,但要更注意异常处理与输出目录隔离,避免中途一个文件失败导致后面都没跑完。示例脚本里已演示ctx.open与取参的基本写法,你按同样方式扩展即可。
5、批处理常用的两个稳态参数
如果你跑大型工程或混淆很重的目标,建议显式设置方法级反编译超时,避免某个方法卡住拖垮全批次;示例脚本里提供了--mtimeout这类参数口径,适合直接拿来用。
三、JEB Decompiler脚本与批处理常见卡点怎么排
批处理跑不起来或跑出来不完整,通常不是JEB不会做,而是上下文、Unit选择或输出组织出了问题,按下面顺序排会更快。
1、脚本运行但prj为空
先确认你是在打开文件后再取ctx.getMainProject,命令行脚本通常需要先ctx.open输入文件才能生成Project。
2、APK里有多个Dex但你只处理到一个
不要只用prj.findUnit拿第一个Dex,改用prj.findUnits取Dex列表逐个处理,否则多Dex应用会漏反编译。
3、输出目录只有少量文件或缺类
优先检查你导出的是哪类Unit,dexdec相关单元与Dex单元是不同层,反编译输出通常来自dexdec或导出器流程;官方示例脚本采用导出器来加速并规范输出,你先对齐示例脚本的输出结构再做自定义筛选会更稳。
4、脚本在UI能跑,命令行跑不了
把脚本里任何依赖IGraphicalClientContext的UI交互去掉,只保留IClientContext可用的分析与导出逻辑,并用ctx.getArguments做纯参数驱动。
总结
JEB Decompiler脚本怎么写的核心是实现IScript并在run里用ctx拿参数、取Project、找Unit并导出结果,注意语法口径是Python 2.7的Jython环境。JEB Decompiler自动化批处理怎么做则是用命令行-c加--script把脚本挂上去,先复用官方DecompileFile示例跑通单文件,再用外层循环把目录里的文件逐个喂给JEB,必要时加超时与多Dex遍历,整套流水线就能稳定落地。
