zoukankan      html  css  js  c++  java
  • 反编译 APKTool jadx [MD]

    博文地址

    我的GitHub我的博客我的微信我的邮箱
    baiqiantao baiqiantao bqt20094 baiqiantao@sina.com

    补充一个利器:jadx

    GitHub 首页 
    下载 jadx-1.1.0.zip

    核心功能:Dex to Java decompiler (将Dex转为Java的反编译器)

    最佳实践

    官方 readme 写的比较啰嗦,如果只想用其核心的功能,只需按如下步骤使用即可。

    1、去 GitHub 下载:所有 releases 版本,例如 jadx-1.1.0.zip

     2、解压之后,进入jadx-***/bin目录,双击jadx-gui.bat打开 GUI 版本

    • 其中 jadx.bat 为命令行版本,启动命令行版本时可以带大量的参数,详细使用方式请看官方文档。
    • 也可以进入jadx-***/lib目录,双击jadx-gui打开 GUI 版本。
    • lib 目录里面全是各种依赖的第三方jar包(比如常见的gson、rxjava、asm、guava),以及本工具自己的第一方jar包(jadx-cli、jadx-core、jadx-gui)。

    3、选择apk文件,等个一两分钟即反编译完成了,然后点击菜单导航->搜索文本,再等个三五分钟,就可以全文搜索了。

    以前在AS中,我们只能全文搜索源码,依赖的jar包、aar等是搜不到的,通过这种方式,我们可以搜到包含jar包、aar中的任何内容。

    经过混淆的APP,反编译出来的代码肯定也是混淆的。

    官方文档的一些介绍

    jadx - Dex to Java decompiler

    Command line and GUI tools for produce Java source code from Android Dex and Apk files

    Main features:

    • decompile Dalvik bytecode to java classes from APK, dex, aar and zip files
    • decode AndroidManifest.xml and other resources from resources.arsc
    • deobfuscator(去混淆) included

    jadx-gui features:

    • view decompiled code with highlighted syntax(语法高亮)
    • jump to declaration(点击跳转到方法、类声明的地方)
    • find usage
    • full text search(全文搜索)

    See these features in action here: jadx-gui features overview

    打开

    After download unpack zip file go to bin directory and run:

    • jadx - command line version
    • jadx-gui - UI version
    • On Windows run .bat files with double-click

    Note: ensure you have installed Java 8 or later 64-bit version.

    常用反编译工具简介

    最佳实践

    主要使用Android逆向助手来操作:

    • 点击反编译apk,完成后res下的所有资源就都可以正常使用了,相当于apktool的功能------目前已失效,但是直接用rar解压是可以的
    • 点击提取dex,可以提取出apk文件中的.dex文件,如果有多个.dex文件,则只会提取第一个;建议手动把.apk更改后缀后解压并拷出.dex文件
    • 点击dex转jar,相当于dex2jar的功能
    • 点击jd打开jar,可以自动使用jd-gui打开jar文件,现在已经可以查看源码了
    • jd-gui中不能修改源码,可点击把所有源码保存起来后就能修改了
    • 可使用 AXMLPrinter2 提取、转化XML文件

    常用工具介绍

    常用工具:

    • apktool:提取res目录下的【资源】文件(drawable、layout、anim、color等)
    • dex2jar:将【.dex】文件(可执行文件)转化为【.jar】文件
    • jd-gui:将编译后的【.jar】或【.class】文件以【.java】源码格式查看
    • AXMLPrinter2,作用:在apktool搞不定的情况下获取xml布局文件--目前apktool已失效,但本工具还能用
    • XJad:和jd-gui作用类似,是一款Java源程序反编译软件
    • Android逆向助手:整合以上工具的而成的一个图形化工具集

    官网及下载地址:

    apktool

    apktool的使用:apk反编译生成程序的源代码和图片、XML配置、语言资源等文件

    • 解压得到3个文件:aapt.exe,apktool.bat,apktool.jar
    • 将需要反编译的APK文件放到该目录下
    • 打开命令行界面 ,定位到apktool文件夹,输入以下命令:【apktool.bat d -f】【test.apk bqt】(test.apk是要反编译的APK文件全名,可以直接拖拽过来,bqt为反编译后存放的目录)
    • 成功后发现在文件夹下多了个bqt文件夹,点击便可以查看该应用的所有资源文件了。
    • 如果你想将反编译完的文件重新打包成apk,输入apktool.bat b test,完成后在test文件下便多了2个文件夹:build和dist(存放着打包出来的APK文件)

    官方的apktool工具只包含以下三个文件,只能使用CMD命令执行 

    不过目前有很多重新打包后的版本,如下 

    dex2jar、jd-gui、XJad

    dex2jar,jd-gui,XJad的使用

    • 首先将apk文件后缀改为zip或rar并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的
    • 然后将classes.dex复制到d2j-dex2jar.bat(名称可能不太一样)所在目录文件夹中
    • 在命令行下定位到d2j-dex2jar.bat所在目录,运行ded2j-dex2jar.bat classes.dex
    • 最后,进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码了
    • 不过,被混淆过的类文件名称以及里面的方法名称都会以a,b,c....之类的样式命名

    XJad简介

    • XJad是基于Jad核心的Java源程序反编译软件,内置Jad1.5.8e2
    • 可处理多个*.class文件,可以处理文件夹内的所有文件,甚至可以处理*.jar文件;
    • 带有多页面文本编辑器,也可集成在资源管理器中,随时点击右键都可进行操作;
    • 支持java语法的高亮显示;

    XJad使用说明

    • 打开一个或者多个*.class文件,XJad反编译后,重命名为*.java文件,保存至当前文件夹,并在编辑器中打开查看;
    • 打开一个文件夹,XJad将该文件夹下所有*.class文件进行反编译,并保存至该文件夹下,依据包路径信息生成文件夹路径,如com.spring.framework.*,将建立comspringframework的文件夹结构;
    • 打开一个*.jar文件,XJad将该Jar文件中的所有*.class文件解压缩到临时目录并进行反编译,并将源文件带包路径信息保存至当前文件夹下名称为“~” + *.jar的文件夹中;

    AXMLPrinter2

    作用:目前很多APP已经混淆,使用APKTOOL已经提取不出资源文件,使用这个工具可以将二进制的xml布局文件转化为正常的形式

    弊端:需要一个一个的转换,且转换出来后有大量需要修改的地方

    下载地址 网上流传的部分版本可能不能使用

    使用步骤:

    • 更改apk后缀名为.rar并解压
    • 找到解压后res目录下的要参考的布局文件,并将此文件复制到和AXMLPrinter2同目录下
    • 打开cmd并定位到此目录下
    • 执行命令java -jar AXMLPrinter2.jar bqt.xml > bqt2.xml 便可把二进制的 bqt.xm文件反编译成可以阅读的bqt2.xml文件

    eclipse 安装 jd-gui 插件

    eclipse安装使用JD插件:

    • Download and unzip the JD-Eclipse Update Site,
    • Launch Eclipse,
    • Click on "Help > Install New Software...",
    • Click on button "Add..." to add an new repository,
    • Enter "JD-Eclipse Update Site" and select the local site directory,
    • Check "Java Decompiler Eclipse Plug-in",
    • Next, next, next... and restart Eclipse.Installation

    注意,因为众所周知的原因,不要选择联网更新之类的操作 

    2016-04-07

  • 相关阅读:
    Selenium 3 + BrowserMobProxy 2.1.4 模拟浏览器访问 (含趟坑)
    macOS Sierra WiFi connecting problem
    Accumulator<Long> implements of JavaSparkContext in Spark1.x
    写了一个Android动画的启动界面
    用C#简单实现了数据的封装
    关于JAVA数据结构中的栈操作
    写了一个关于将XML文件导入数据库的程序(C#,sql server)
    经典电影里的数学应用
    初步学习多线程操作,代码不是完美的,欢迎大牛指点(运行通过)
    写了一份统计网站(ASP.NET)日访问量的源码(保存至数据库,部分性能待优化),运行通过。
  • 原文地址:https://www.cnblogs.com/baiqiantao/p/5363120.html
Copyright © 2011-2022 走看看