JEB Decompiler中文网站 > 新手入门 > JEB Decompiler脚本怎么写 JEB Decompiler自动化批处理怎么做
教程中心分类
JEB Decompiler脚本怎么写 JEB Decompiler自动化批处理怎么做
发布时间:2026/03/09 16:29:35

  在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遍历,整套流水线就能稳定落地。

135 2431 0251