Android 反混淆神器JEB2的使用简介

反混淆神器JEB2

Posted by Jack on August 28, 2018

Android 反混淆神器JEB2的使用简介

背景

我们在逆向Android应用的时候会使用 jd-GUIjadxLuyten等工具进行代码审查,但市面上大部分的应用是混淆过的,简单点的混淆会使类名,方法名变成诸如 a,b,c之类的。更有甚者会自定义混淆规则将类名,方法名混淆成藏文,蒙古文等“天书”(后面我会写一篇自定义混淆规则的文章)。如何反混淆则是今天所要介绍的

JEB2工具的基本使用

首先下载jeb2.2.5破解版

下载link: 链接:http://pan.baidu.com/s/1bJdWse 密码:ncr3

Jeb支持Windows,Linux,Macos 系统我这里用的Windows系统所以点击jeb_wincon.bat,然后在JEB2中打开需要逆向的apk

双击Bytecode打开smali代码

点击Bytecode/Hierarchy窗口即可查看包名树状图 树状图排列: 包名->类名

双击包名下的类名即可查看smali代码

想把smali代码转换成java代码 很简单 只需右键Q即可

双击方法即可跳转到方法的定义 点击方法按x键可以查看方法的调用

双击Manifest即可查看AndroidManifest.xml

以上就是JEB2的基本用法,接下来重点来了

JEB2反混淆脚本

反混淆脚本思路

许多APK开发商为了在崩溃时保存源文件类名、行号等信息会在APK混淆时添加以下规则保留源文件信息.

(注意:若APK没有保留这些源信息时则无法反混淆)

-keepattributes SourceFile,LineNumberTable

这样我们在看Smali时就能在(JEB中称为)字段中看到原始类名信息.如下图所示:

JEB2.2.x是默认不显示这些调试信息的可以根据以下步骤在设置中打开:Edit -> Options -> Engines -> 修改ShowDebugDirectives的值为true

这样我们就可以在JEB2中根据每个类的原始信息进行批量重命名达到反混淆的效果。

脚本下载地址:

https://github.com/S3cuRiTy-Er1C/JebScripts

加载脚本之前先需要在 jeb225/scripts/目录下安装Jypthon环境,具体步骤如下:

Setting up Jython:

  • Download a stand-alone Jython package from http://www.jython.org/downloads.html We recommend either version 2.5 (fastest) or version 2.7 (latest)
  • Drop the downloaded ‘jython-standalone-???.jar’ file in the scripts/ sub-directory located in your JEB installation directory
  • Make sure that the client property ‘.ScriptsFolder’ refers to that directory (it is the case by default; use ‘Edit/Options, Advanced…’ to verify this)

我这边下载的是 jython-standalone-2.5.4-rc1

完成后打开JEB2 -> File -> Scripts -> Run Scripts -> 选择从上面下载的 JEB2DeobscureClass.py脚本

效果

这样看起来是不是清楚多了?

O(∩_∩)O哈哈~