JEB Decompiler中文网站 > 最新资讯 > JEB Decompiler怎么做版本对比 JEB Decompiler差异结果怎么导出
教程中心分类
JEB Decompiler怎么做版本对比 JEB Decompiler差异结果怎么导出
发布时间:2026/04/21 15:59:01

  拿到两个版本的样本以后,很多人第一反应是想找一个一键差异按钮,结果在JEB里翻了一圈,越找越乱。就我这次查到的JEB官方公开手册来看,官方明确写了两件事:一是JEB支持把多个文件放进同一个项目里分析,二是它支持导出反编译结果、导出当前活动片段的原始文本或HTML。但我没有在公开手册里查到一个被单独写成正式功能页的“一键版本对比”入口。所以更稳的做法,不是先执着找某个神秘按钮,而是先把两版样本放到同一套分析环境里,再围绕同类单元、同类文本和导出结果去做对照。

  一、JEB Decompiler怎么做版本对比

 

  真要在JEB里做版本对比,先别急着同时开两堆标签页硬看。更实用的顺序,是先把两个版本放进同一个项目,再在项目树里对齐同类单元,然后分别打开反汇编或反编译视图去看。官方Tips页明确说明,JEB支持Multi-file Projects,可以通过File菜单里的Add an Artifact把额外文件加入同一个项目。

 

  1、先把两个版本放进同一个项目

 

  先打开第一个版本,再用File菜单里的Add an Artifact把第二个版本也加进来。这样做的好处很直接,两版样本会同时留在同一个Project Explorer里,后面你找对应单元、来回切视图和保存工程都会顺很多。官方手册已经明确把多文件同项目作为标准用法写出来了。

 

  2、先在项目树里对齐同类单元

 

  进项目以后,不要马上从最底层方法开始比。更稳的是先在Project Explorer里对齐同类单元,比如同一个APK里的同名DEX单元、同一套native模块、同一类资源或同一段文本单元。官方文档对Units and Documents的说明很明确,JEB分析文件以后会产出units,而这些units会生成不同文档视图,所以版本对比最好先在unit这一层把对象对齐。

 

  3、再在对应代码视图里做并排查看

 

  当你已经找到两版里对应的类、函数或代码单元以后,再分别打开反汇编和反编译视图去看。JEB官方Tips页写到,代码单元会生成反汇编等文本文档,而且通用分析动作都在Action菜单里。这意味着真正的版本对比,不是先比“文件名像不像”,而是先把对应单元打开到同一层级,再去看方法体、常量、调用关系有没有改。

 

  4、想缩小范围时先用搜索定位变化点

 

  如果两个版本都不小,先别全量翻。更实用的办法,是先用快速搜索把类名、方法名、关键字符串、异常提示或可疑常量定位出来,再回到对应单元看差异。JEB官方Misc页面说明,Quick Search可以对项目里生成的文本类文档做快速搜索,这一步很适合拿来先缩圈。

 

  二、JEB Decompiler差异结果怎么导出

 

  差异结果导出这件事,关键不是“怎么把整个项目扔出去”,而是先分清你要导的是整批反编译代码,还是当前窗口里这一段已经看好的差异片段。JEB官方Misc页面把导出方式写得很清楚,File里的Export菜单支持导出部分或全部反编译结果,也支持把当前活动片段导成raw text或HTML。

 

  1、整批差异整理优先导出decompilations

 

  如果你已经定位好了要比较的一批类或方法,想把它们完整拿出去做文本级对照,最合适的入口是File里的Export decompilations。官方说明明确写到,用户可以导出部分或全部反编译结果,而且还能给导出内容加filter。这样做的好处是,后面你可以把两版反编译代码放到外部文本对比工具里继续比,不必在JEB里一屏一屏抄。

  2、只想保留当前差异片段就导出active fragment

 

  如果你不是要整批导,而是已经在当前窗口里看到了关键改动,比如某个函数体、某段反编译代码或某块反汇编,那么直接导出active fragment更省事。官方说明里写得很明确,当前活动片段可以导出成raw text或HTML,而且会保留与JEB文本视图相近的着色效果。

 

  3、要做正式差异记录时优先留HTML

 

  如果你导出的目的不是继续机器比对,而是留给同事复核、写分析记录或放进审计材料,那HTML通常更合适。因为官方已经说明,活动片段可以导出成带类似JEB颜色效果的HTML,这样比纯文本更适合保留可读性。

 

  4、要继续机器对照时优先留raw text

 

  如果你后面还准备把两版函数、类或代码片段丢到外部diff工具里继续比,raw text会更直接。它少了一层展示包装,更适合继续做行级或段级差异比较。这里“更适合机器对照”是顺着JEB官方把raw text和HTML并列为导出格式这一点得出的实际用法判断。

 

  三、JEB Decompiler做版本对比时先留什么结果

 

  真正容易返工的地方,往往不在“导不导得出来”,而在“留错了东西”。很多人明明还没定位变化点,就先把整批代码全导了,后面文件一大反而更难看;也有人只留了几张截图,过两天回头想复核,又发现关键上下文没保存。更稳的办法,其实不是一开始就求全,而是先把变化点收窄,再决定留整批代码还是留关键片段。

 

  1、先留变化点对应的代码单元

 

  先用搜索和项目树把疑似变化点找出来,再打开对应的类、方法或函数。这样后面导出的内容是围绕问题走的,不会一上来就淹没在大量无关代码里。

 

  2、再决定是导整批还是导片段

 

  如果变化是系统性的,比如一个包下很多类都变了,那就导出部分或全部decompilations;如果变化只集中在几个方法里,就直接导active fragment。这样做的好处是,导出的内容规模和后续用途能对上,不会不是太碎就是太大。

 

  3、正式留档时图和文不要混成一种

 

  JEB官方公开手册这次我查到的正式导出能力主要还是文本和代码导出,没有看到把“差异结果报告”单独做成一类导出页。所以如果你要做正式记录,比较稳的做法通常是:关键差异片段导HTML作为可读版,整批反编译结果导raw text作为复核版。这样后面无论是看展示还是继续比对,都还有回旋空间。

 

  4、最后把工程一起保存下来

 

  当两版样本都已经加进同一个项目,而且你已经做了定位、打开了对应单元、留下了注释或笔记,最好把整个工程也保存下来。JEB官方Misc页面说明,项目本身可以保存成JDB2数据库工程,后面重新打开时还能接着用之前那套分析环境。这样做的价值,不是替代导出,而是防止过几天回头时还得再把两版样本重新摆一遍。

  总结

 

  JEB Decompiler做版本对比,按我这次查到的官方公开资料,更稳的思路不是先找一个想象中的一键diff,而是先把两个版本放进同一个项目,再在项目树里把对应单元对齐,然后围绕同类代码视图去看变化。JEB Decompiler差异结果怎么导出,关键也不是一股脑全导,而是先判断你要留的是整批反编译代码,还是当前已经确认过的关键片段,再分别用decompilation export、raw text或HTML去收结果。把“先定位,再导出”这层顺序放在前面,版本对比这件事通常会比一开始就追求全自动更稳,也更不容易返工。

135 2431 0251