文章目录

  • Ⅰ、Androidkiller
    • 一、配置环境
    • 二、反编译
    • 三、编译
    • 四、运行
    • 五、其他
  • Ⅱ、Apktool
  • Ⅲ、dex2jar(dex to jar)
  • Ⅳ、jd-gui
  • Ⅴ、jadx-gui
  • Ⅵ、JEB
  • Ⅶ、Ul Automator Viewer

Ⅰ、Androidkiller

Android Killer是一款可以对APK进行反编译的工具,它能够对反编译后的Smali文件进行修改,并将修改后的文件进行打包
apktool、dex2jar、jd-gui的集合体


(注意:androidKiller版本可能太旧,导致反编译失败,需要下载版本更新补丁包或及时更新工具版本

jdk1.8.0 + 已加补丁整合包下载路径
链接:https://pan.baidu.com/s/1oIigQ5QEUnJag-AB0EE4dg
提取码:59lw

一、配置环境

  1. “AndroidKiller”的文件夹目录结构,如图1.1所示,双击打开“AndroidKiller.exe”文件,此时,会弹出一个窗口,提示没有Java SDK环境,直接点击OK进入AndroidKiller工具界面。
  2. 选中“主页”菜单栏下的“配置”,选项点击“Java”图标配置JDK安装路径。点击编辑框右边的“文件夹”图标,找到之前安装的JDK目录,选择自己安装的jdk文件夹下的“bin”目录(找“bin”目录下的Java.exe文件),点击确定按钮

二、反编译

  1. 将需要反编译的 apk 拖进 AndroidKiller 里,进行反编译(通过apk-tool、dex2jar
    当出现 APK 所有反编译工作全部完成!!!时,说明反编译成功

    以一款计算机app为例

  2. 点开工程管理器,便会呈现apk的目录结构


    对比得出以下结论:

    无 META-INF 文件的原因:对apk的反编译过程中,对apk的整体性造成破坏,apk的签名没有存在意义,所以在反编译时被处理掉

    AndroidManifest.xml 文件转换为 values 文件:AndroidManifest.xml 的反编译结果存放在了values开头的文件夹中,(对字符操作时,如汉化,需要修改values文件)

    classses.dex 文件反编译为 smali 代码文件

  3. 当点开文件会出现smali代码,点击上方Javalogo,会呈现Java源码(通过 jd-gui

三、编译

当对反编译的文件做完操作后,重编译、签名打包成apk,点击上方”Android“后,点击左上角“编译“
当出现APK 所有编译工作全部完成!!!(包括编译与重签名) ,说明反编译成功

四、运行

  1. 打开Android虚拟机或外挂Android手机或模拟器,点击AndroidKiller上方的”Android“,点击上方”刷新“,选中你的设备,这样电脑就和手机设备连接了( 通过adb ,注意统一adb版本)
    (如果是真机,则需要打开开发者模式,打开USB调试功能)


    AndroidKiller通过 adb 与手机设备连接

    统一 adb 版本(版本不一样可能会造成冲突)

  2. 点击安装,就能将程序安装到手机设备中

  3. 点击卸载,就能卸载(doge)

    注意:重打包的软件不能和原来的在手机设备上共存(签名不一致,无法覆盖安装)
    AndroidKiller会显示Apk安装失败,需要先卸载原APP

五、其他

  1. 批量操作与调试
  2. 类方法索引
  3. 方法操作
  4. 类操作
  5. 自定义代码块一键插入
  6. 关键字语法显示
  7. Unicode转换

Ⅱ、Apktool

  1. 作用

    1. 用于反编译Android apk,可以将应用中的资源提取出来,也可以在修改资源文件后重新打包。
    2. smali 调试
    3. 主要查看res文件下xml文件、AndroidManifest.xml和图片。(注意:如果直接解压.apk文件,xml文件打开全部是乱码)
  2. 进行解包,获得smail码

    java -jar .\apktool的名字 d(反编译) .\要解包的apk -o(输出) 文件名
    


  3. 重新打包

     java -jar .\apktool的名字 b(打包) .\要打包的文件夹名字
    

    重新打包后的apk在要打包的文件夹里的dist目录下

Ⅲ、dex2jar(dex to jar)

Android 中的一个反编译工具,它可以将 Android 程序安装包 Apk 文件中的 .dex 文件反编译成一个 .jar 文件,也可以将反编译后的 .jar 文件重新编译成 .dex 文件。


  1. 安装
    将下载的 dex2jar-2.0.zip 压缩文件直接解压到任意文件夹下。
    将 dex2jar-2.0 文件夹的路径配置到 PATH 环境变量中去。
    在命令行窗口输入 d2j-dex2jar 命令按回车键
  2. dex2jar 反编译
    1. 将 Android Apk 文件后缀名 .apk 改成 .zip 文件并解压,获取到它的 .dex 文件(解压后有可能有多个 dex 文件),dex2jar 主要对 classes.dex 文件反编译。
    2. 输入dex2jar 反编译命令
      • 第一种方法

        d2j-dex2jar < dexFilePath > -o < outputJarFilePath >
        

        dexFilePath: 要反编译的 .dex 文件的文件路径。
        outputJarFilePath: 反编译后输出的 .jar 文件的文件路径。

      • 第二种方法
        将需要反编译的dex文件(这里是classes.dex)复制到 dex2jar 解压目录下。
        打开命令行进入 d2j-dex2jar.bat 文件所在目录,输入命令 .\d2j-dex2jar.bat classes.dex (.\当前目录 …\上一级目录)

  3. dex2jar 重编译
    dex2jar 重编译命令:d2j-jar2dex < jarFilePath > -o < outputDexFilePath >
    jarFilePath: 要重新编译的 .jar 文件的文件路径。
    outputDexFilePath: 重编译后输出的 .dex 文件的文件路径。

Ⅳ、jd-gui

将源代码转换成二进制执行代码的过程叫“编译”,那么反编译就是将二进制执行代码转换成源代码。
在java开发里,源代码是.java文件,然后经过编译后生成计算机识别的.class文件,但是.class文件是计算机识别的我们一般看不明白,因此需要反编译变成我们能读懂的源码

  1. JD-GUI 是一个用 C++ 开发的 Java 反编译工具
  2. 双击运行 jd-gui.exe 文件,将jar文件拖到工作区即可打开。

Ⅴ、jadx-gui

jadx是一款反编译器,同时支持命令行和图形界面,能以最简便的方式完成apk的反编译操作。

jadx 支持 Windows、Linux、 macOS,能够打开.apk, .dex, .jar,.zip等格式的文件


  1. 安装jadx
    链接:https://pan.baidu.com/s/1FXaqUEobcuunVeQA-aGJdw?pwd=1234
    提取码:1234
    然后将build/jadx/bin加入到环境变量。

  2. 使用jadx
    通用File - Open file选择文件或者直接将apk拖进窗口中,就可以查看某个 apk 的Java源码(自动分类源代码和资源文件)

    用途:更直接地帮助分析代码

Ⅵ、JEB

JEB是一款为安全专业人士设计的功能强大的Android应用程序反编译工具。用于逆向工程或审计APK文件,可以提高效率,减少工程师的分析时间。JEB支持Windows, Linux和Mac OS


  1. 安装jeb

    链接:https://pan.baidu.com/s/1842GhhbKsk8WNaSiJMRVxw?pwd=1234
    提取码:1234

    下载完成后进行解压,解压完成后打开文件夹,运行安装目录下的.bat后缀的文件,等待一会就会出现jeb面板,这就说明我们的jeb工具能成功打开了。

    如果cmd窗口显示一个检查更新出错,直接无视就可以了。

    如果没有出现JEB面板,检查一下JDK环境是否配置了“JAVA_HOME”。如果已经配置,就要检查配置的路径是否正确以及检查jdk版本是否过高。

  2. 菜单栏使用

    文件:文件的打开、导入、保存、另存为等操作。

    编辑栏:文件的复制粘贴、搜索、语言设置、style设置字体、选项设置等操作。

    行为栏:包含了快捷键操作:①Q:转换成伪代码 ② /:添加注释 ③ N:重命名 ④ Delete:删除

    窗口:窗口显示的相关设置,使用默认即可。

    帮助:官方的相关信息。

  3. 使用JEB反编译
    将APK安装包拖进主界面即自动反编译,结构如下图,如果有外部引用还会有Libraries文件夹。

Ⅶ、Ul Automator Viewer

链接:https://pan.baidu.com/s/1nkZ32sK3IlanhTEAz21qjA?pwd=1234
提取码:1234
点击uiautomaatorviewer.bat,点击后会出现一个console黑窗口,使用时不要关掉。

打开APP,在 Ul Automator Viewer 点击 Device Screenshot

Android——Android逆向工具相关推荐

  1. Android常用逆向工具总结(未完待续)

    写在前面的话 突然觉得我好无聊,写这个有种浪费生命的感觉有没有,不过项目结束的时候这个还是要写的,以后写还不如现在趁现在,趁着现在链接就在身边直接写了. 1.apktool的安装和使用 1.1 apk ...

  2. 【Android 逆向】Android 逆向通用工具开发 ( Windows 平台静态库程序类型 | 编译逆向工具依赖的 Windows 平台静态库程序 )

    文章目录 一.Windows 平台静态库程序类型 二.编译逆向工具依赖的 Windows 平台静态库程序 一.Windows 平台静态库程序类型 在 Android 逆向通用工具 MobileGame ...

  3. 【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★

    文章目录 一.Android 进程注入工具开发系列博客 二.Android 进程注入工具 源码下载编译 三.逆向环境搭建 四.使用注入工具进行逆向操作 1.获取远程进程号 2.注入工具准备 3.注入动 ...

  4. 【Android 逆向】Android 进程注入工具开发 ( 远程调用 | x86 架构的返回值获取 | arm 架构远程调用 )

    文章目录 前言 一.x86 架构的返回值获取 二.ARM 架构远程调用 前言 在之前的博客 [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 ...

  5. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具收尾操作 | 关闭注入的动态库 | 恢复寄存器 | 脱离远程调试附着 )

    文章目录 一.dlclose 函数简介 二.关闭注入的 libbridge.so 动态库 三.恢复寄存器 四.脱离远程调试附着 一.dlclose 函数简介 dlclose 函数的作用是 卸载一个 指 ...

  6. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取注入的 libbridge.so 动态库中的 load 函数地址 并 通过 远程调用 执行该函数 )

    文章目录 一.dlsym 函数简介 二.获取 目标进程 linker 中的 dlsym 函数地址 三.远程调用 目标进程 linker 中的 dlsym 函数 获取 注入的 libbridge.so ...

  7. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取 linker 中的 dlopen 函数地址 并 通过 远程调用 执行该函数 )

    文章目录 一.dlopen 函数简介 二.获取 目标进程 linker 中的 dlopen 函数地址 三.远程调用 目标进程 linker 中的 dlopen 函数 一.dlopen 函数简介 dlo ...

  8. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )

    文章目录 前言 一.等待远程进程 mmap 函数执行完毕 二.从寄存器中获取进程返回值 三.博客资源 前言 前置博客 : [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | ...

  9. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 二 | 准备参数 | 远程调用 mmap 函数 )

    文章目录 一.准备 mmap 函数的参数 二.mmap 函数远程调用 一.准备 mmap 函数的参数 上一篇博客 [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | 远程调 ...

  10. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 调试进程 ATTACH 附着目标进程 | 读取目标函数寄存器值并存档 )

    文章目录 一.调试进程 ATTACH 附着目标进程 二.读取目标函数寄存器值并存档 1.主要操作流程 2.ptrace 函数 PTRACE_GETREGS 读取寄存器值 一.调试进程 ATTACH 附 ...

最新文章

  1. C++ 中 map 的用法
  2. Be a person
  3. 01-JDBC概念--JDBC(Java Database Connectivity:Java数据库连接):使用jdbc实现Java与数据库MySQL连接
  4. 微软 Mozilla高管评Safari Windows版
  5. z370支持pcie信号拆分吗_定了!AMD B550主板确认将支持PCIE4.0,多项能力接近X570
  6. java 二分查找 排序_java 冒泡排序 二分查找
  7. (洛谷)P2709 小B的询问
  8. jQuery弹出窗口完整代码
  9. WinRAR各版本许可注册码
  10. ST芯片涨价后,你是如何做的?
  11. pdf 转图片 php,php如何实现pdf转换成图片
  12. 常见随机变量的数学期望和方差
  13. c 语言文件加密程序,怎么用c语言编写程序给文件夹加密
  14. Bebras挑战样题之五——警察能抓住海盗吗?
  15. 易购考拉 The fourth day
  16. 函数/极限/导数的概念辨析
  17. pgpool-Ⅱ一主两从同步流读写分离高可用方案测试
  18. 五款堪称神奇的手机APP 一定不要错过了
  19. 【信息系统项目管理师】第八章 质量管理思维导图
  20. 区块链从入门到精通 - 区块链培训

热门文章

  1. 计算机的四代表格,8代酷睿+144Hz电竞屏 惠普光影精灵4代够惊艳
  2. 21秋北京中医药大学《中药鉴定学B》平时作业6
  3. 37岁公司做到40亿美金,卖给马云!创业造车3年,公司上市,市值160亿美元!...
  4. 渗透测试学习笔记之案例二
  5. 计算机打竖字体,告诉你Photoshop怎么输入竖排的文字
  6. vscode快捷键重置及快捷键恢复
  7. 生命诚可贵,爱情价更高。若为自由故,二者皆可抛!
  8. C++11 std::snprintf
  9. HTML——文本域标签(textarea)
  10. 虚拟魔方——使用python对普通三阶魔方进行建模