目录

前言 1.1

Android逆向开发概览 1.2

Android逆向典型流程 1.3

安卓root 1.3.1

安装apk 1.3.2

搞懂逻辑 1.3.3

静态分析 1.3.3.1

动态调试 1.3.3.2

输出结果 1.3.4

重新打包apk 1.3.4.1

相关工具 1.4

adb 1.4.1

相关心得 1.5

文件管理 1.5.1

文件管理器 1.5.1.1

相关资料 1.6

Android API Level 1.6.1

子教程 1.7

附录 1.8

参考资料 1.8.1

前言

Android逆向开发

最新版本：v1.1.0

更新时间：20231004

简介

介绍Android逆向开发相关的内容。包括安卓逆向开发的典型流程图和脑图、安卓逆向的核心思路；以及Hook插件与开发，包括Xposed、Cydia Substrace，以及其插件Android-OpenDebug、Introspy-Android；以及其他心得，包括adb、文件管理、文件管理器、相关资料；以及其他相关子教程。

源码+浏览+下载

本书的各种源码、在线浏览地址、多种格式文件下载如下：

HonKit源码

crifan/android_reverse_dev: Android逆向开发

如何使用此HonKit源码去生成发布为电子书

详见：crifan/honkit_template: demo how to use crifan honkit template and demo

在线浏览

Android逆向开发 book.crifan.org

Android逆向开发 crifan.github.io

离线下载阅读

Android逆向开发 PDF

Android逆向开发 ePub

Android逆向开发 Mobi

版权和用途说明

此电子书教程的全部内容，如无特别说明，均为本人原创。其中部分内容参考自网络，均已备注了出处。如发现有侵权，请通过邮箱联系我 admin 艾特 crifan.com，我会尽快删除。谢谢合作。

各种技术类教程，仅作为学习和研究使用。请勿用于任何非法用途。如有非法用途，均与本人无关。

鸣谢

感谢我的老婆陈雪的包容理解和悉心照料，才使得我crifan有更多精力去专注技术专研和整理归纳出这些电子书和技术教程，特此鸣谢。

其他

作者的其他电子书

本人crifan还写了其他150+本电子书教程，感兴趣可移步至：

crifan/crifan_ebook_readme: Crifan的电子书的使用说明

关于作者

关于作者更多介绍，详见：

关于CrifanLi李茂 – 在路上

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-04 16:30:28

Android逆向开发概览

Android逆向开发概览

此处介绍安卓的安全和逆向中的安卓逆向中关于安卓逆向开发相关的内容：

背景

安卓应用的存在形式

静态的

安装文件：apk

动态的

运行中的程序叫：app

安卓逆向开发 = 安卓破解

安卓破解=android crack

破解

=crack=cracking

也叫安卓逆向工程=安卓反向工程

而逆向工程，就像对一个人去解剖

概述

核心流程

安卓root

安装apk

搞懂逻辑

静态分析

动态调试

输出结果

重新打包apk

详见

Android逆向典型流程

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-08-30 21:10:34

Android逆向典型流程

Android逆向典型流程

此处整理出，安卓逆向的典型流程图和脑图：

Android逆向典型流程图

Android逆向典型流程图

在线浏览

Android逆向典型流程图 20230822| ProcessOn免费在线作图

离线查看

Android逆向典型流程脑图

Android逆向典型流程脑图

在线浏览

Android逆向典型流程脑图 20230821| ProcessOn免费在线作图

离线查看

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-09-13 21:29:03

安卓root

安卓root

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-08-25 21:09:23

安装apk

安装apk

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-08-25 21:09:54

搞懂逻辑

搞懂逻辑

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-08-25 21:10:50

静态分析

静态分析

此处主要介绍安卓的逆向破解中的静态分析：

安卓的逆向破解 静态分析

按文件格式类型分

针对apk

查看apk信息

aapt

解包工具：输出dex、so、smali

apktool

反编译工具

直接apk转java

jadx

JEB

GDA

针对dex

各种导出dex的工具=砸壳工具=脱壳工具

FDex2

DumpDex

DexExtractor

各种反编译dex的工具

dex转jar

dex2jar

dex转smali

baksmali

dex直接转java

jadx

GDA

针对jar

jar转java=各种反编译工具

Procyon

CFR

JD-GUI

针对so库文件=（往往是ARM64架构）的ELF文件

导出静态资源

readelf

objdump

razbin2

反编译代码逻辑

IDA

Hopper

Radare2

Ghidra

涉及子领域

反代码混淆

详见独立子教程：

Android逆向：静态分析

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-09-13 21:24:34

动态调试

动态调试

此处主要介绍安卓逆向破解中的动态调试：

安卓的逆向破解 动态调试

（绕过限制去）抓包

绕过证书绑定的Exposed插件或Frida的脚本

反root检测

反反调试

各种动态调试手段

调试smali：AS+smalidea插件

app进程可调试

Magisk插件：MagiskHide Props Config

调试Frida：Frida

Frida环境搭建

Magisk插件：MagiskFrida

调试lldb：LLDB

调试Xposed插件

XPosed

EdXposed

LSPosed

模拟代码执行

Unidbg

Unicorn

辅助调试工具

adb

DDMS

详见独立子教程：

Android逆向：动态调试

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-09-14 20:48:38

输出结果

输出结果

此处介绍安卓的逆向破解的最终输出结果：

安卓的逆向破解 输出

重新打包apk

apktool

keytool

jarsigner或apksigner

zipalign

用代码重写逻辑

Python代码

C/C++代码

改机定制ROM

AOSP源码编译

JNI开发

NDK开发

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-08-25 21:13:24

重新打包apk

重新打包apk

此处介绍安卓逆向中输出结果中的：

重新打包apk

概述

apktool

keytool

jarsigner或apksigner

zipalign

详解

Android逆向：重新打包apk

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-08-25 21:17:18

相关工具

相关工具

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-08-25 22:08:35

adb

adb

TODO：

【整理】adb命令语法帮助信息

【已解决】Mac中运行adb shell无需su超级用户即可正常运行输出结果

【未解决】尝试解决adb只有su超级用户权限才能工作：adb版本

【已解决】Android Studio和安卓设备Google Pixel3重启后adb shell再次异常：只有su超级用户权限才能正常运行命令

【已解决】尝试解决adb没有su超级用户权限无法运行子命令：ps进程相关

【已解决】Android Studio中对于ADB：Use existing manually managed server且指定adb端口

【已解决】Mac中给adb start-server指定端口

【已解决】Mac中adb shell子命令运行卡死无响应

【已解决】安卓手机adb shell报错：Can't find service

【已解决】安卓手机Google Pixel3中adb命令pm运行报错：cmd Can't find service: package

【已解决】安卓手机adb shell service list报错：Found 0 services

【已解决】安卓手机adb shell无法直接运行命令但是进入shell后su后却可以

【已解决】adb shell带su超级用户权限去运行子命令

【未解决】pm安装重签名的apk报错：Failure INSTALL_FAILED_UPDATE_INCOMPATIBLE

【已解决】pm安装apktool重新打包的apk报错：Failure INSTALL_PARSE_FAILED_NO_CERTIFICATES

【无需解决】安卓手机pm卸载app报错：Failure DELETE_FAILED_INTERNAL_ERROR

【已解决】安卓手机中用adb shel中的pm去安装YouTube的apk

【已解决】安卓手机Google Pixel3中用pm安装YouTube的apk报错：Failure INSTALL_FAILED_VERSION_DOWNGRADE

用adb安装apk

adb install xxx.apk = adb push xxx.apk somePath + pm install /somePath/xxx.apk

举例：

crifan@licrifandeMacBook-Pro  ~/dev/dev_tool/android/EdXposed  pwd
/Users/crifan/dev/dev_tool/android/EdXposed
 crifan@licrifandeMacBook-Pro  ~/dev/dev_tool/android/EdXposed  ll
total 8224
 crifan@licrifandeMacBook-Pro  ~/dev/dev_tool/android/EdXposed  adb install EdXposedManager-4.6.2-46200-org.meowcat.edxposed.manager-release.apk
Performing Streamed Install
Success

adb shell

命令提示符

adb shell进入shell后：

命令行提示符

#=井号：root用户

$=美元符号：普通用户

另外，也可以通过：

whoami

查看当前用户是什么

举例：

root用户

blueline:/ # whoami
root

普通用户：shell

13|blueline:/ $ whoami
shell

adb shell命令行前面的数字

正常情况，shell前面是没有数字的：

 adb shell
blueline:/ # pwd
/

但是，如果前面出现一个数字加上竖杠，则表示：前一次命令执行的返回值，前一个命令运行出错了的出错码

比如：

blueline:/ # pm --help
cmd: Can't find service: package
20|blueline:/ #

此处的 20| 就是前一个命令运行出错的返回值=出错码

而继续运行，如果后续命令正常运行，则出错码就消失了：

20|blueline:/ # which pm
/system/bin/pm
blueline:/ #

其实表示的是：

上一个命令运行结果=返回值

0：表示没有出错

所以就不显示出错码

非0：就显示，提示你出错了

adb常见命令

相关

常用 Fastboot 命令

adb语法

> adb --help
Android Debug Bridge version 1.0.41
Version 33.0.2-8557947
Installed as /Users/crifan/dev/dev_tool/android/AndroidSDK/platform-tools/adb

global options:
 -a                       listen on all network interfaces, not just localhost
 -d                       use USB device (error if multiple devices connected)
 -e                       use TCP/IP device (error if multiple TCP/IP devices available)
 -s SERIAL                use device with given serial (overrides $ANDROID_SERIAL)
 -t ID                    use device with given transport id
 -H                       name of adb server host [default=localhost]
 -P                       port of adb server [default=5037]
 -L SOCKET                listen on given socket for adb server [default=tcp:localhost:5037]
 --one-device SERIAL|USB  only allowed with 'start-server' or 'server nodaemon', server will only connect to one USB device, specified by a serial number or USB device address.
 --exit-on-write-error    exit if stdout is closed

general commands:
 devices [-l]             list connected devices (-l for long output)
 help                     show this help message
 version                  show version num

networking:
 connect HOST[:PORT]      connect to a device via TCP/IP [default port=5555]
 disconnect [HOST[:PORT]]
     disconnect from given TCP/IP device [default port=5555], or all
 pair HOST[:PORT] [PAIRING CODE]
     pair with a device for secure TCP/IP communication
 forward --list           list all forward socket connections
 forward [--no-rebind] LOCAL REMOTE
     forward socket connection using:
       tcp:<port> (<local> may be "tcp:0" to pick any open port)
       localabstract:<unix domain socket name>
       localreserved:<unix domain socket name>
       localfilesystem:<unix domain socket name>
       jdwp:<process pid> (remote only)
       vsock:<CID>:<port> (remote only)
       acceptfd:<fd> (listen only)
 forward --remove LOCAL   remove specific forward socket connection
 forward --remove-all     remove all forward socket connections
 ppp TTY [PARAMETER...]   run PPP over USB
 reverse --list           list all reverse socket connections from device
 reverse [--no-rebind] REMOTE LOCAL
     reverse socket connection using:
       tcp:<port> (<remote> may be "tcp:0" to pick any open port)
       localabstract:<unix domain socket name>
       localreserved:<unix domain socket name>
       localfilesystem:<unix domain socket name>
 reverse --remove REMOTE  remove specific reverse socket connection
 reverse --remove-all     remove all reverse socket connections from device
 mdns check               check if mdns discovery is available
 mdns services            list all discovered services

file transfer:
 push [--sync] [-z ALGORITHM] [-Z] LOCAL... REMOTE
     copy local files/directories to device
     --sync: only push files that are newer on the host than the device
     -n: dry run: push files to device without storing to the filesystem
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
     -Z: disable compression
 pull [-a] [-z ALGORITHM] [-Z] REMOTE... LOCAL
     copy files/dirs from device
     -a: preserve file timestamp and mode
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
     -Z: disable compression
 sync [-l] [-z ALGORITHM] [-Z] [all|data|odm|oem|product|system|system_ext|vendor]
     sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)
     -n: dry run: push files to device without storing to the filesystem
     -l: list files that would be copied, but don't copy them
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
     -Z: disable compression

shell:
 shell [-e ESCAPE] [-n] [-Tt] [-x] [COMMAND...]
     run remote shell command (interactive shell if no command given)
     -e: choose escape character, or "none"; default '~'
     -n: don't read from stdin
     -T: disable pty allocation
     -t: allocate a pty if on a tty (-tt: force pty allocation)
     -x: disable remote exit codes and stdout/stderr separation
 emu COMMAND              run emulator console command

app installation (see also `adb shell cmd package help`):
 install [-lrtsdg] [--instant] PACKAGE
     push a single package to the device and install it
 install-multiple [-lrtsdpg] [--instant] PACKAGE...
     push multiple APKs to the device for a single package and install them
 install-multi-package [-lrtsdpg] [--instant] PACKAGE...
     push one or more packages to the device and install them atomically
     -r: replace existing application
     -t: allow test packages
     -d: allow version code downgrade (debuggable packages only)
     -p: partial application install (install-multiple only)
     -g: grant all runtime permissions
     --abi ABI: override platform's default ABI
     --instant: cause the app to be installed as an ephemeral install app
     --no-streaming: always push APK to device and invoke Package Manager as separate steps
     --streaming: force streaming APK directly into Package Manager
     --fastdeploy: use fast deploy
     --no-fastdeploy: prevent use of fast deploy
     --force-agent: force update of deployment agent when using fast deploy
     --date-check-agent: update deployment agent when local version is newer and using fast deploy
     --version-check-agent: update deployment agent when local version has different version code and using fast deploy
     --local-agent: locate agent files from local source build (instead of SDK location)
     (See also `adb shell pm help` for more options.)
 uninstall [-k] PACKAGE
     remove this app package from the device
     '-k': keep the data and cache directories

debugging:
 bugreport [PATH]
     write bugreport to given PATH [default=bugreport.zip];
     if PATH is a directory, the bug report is saved in that directory.
     devices that don't support zipped bug reports output to stdout.
 jdwp                     list pids of processes hosting a JDWP transport
 logcat                   show device log (logcat --help for more)

security:
 disable-verity           disable dm-verity checking on userdebug builds
 enable-verity            re-enable dm-verity checking on userdebug builds
 keygen FILE
     generate adb public/private key; private key stored in FILE,

scripting:
 wait-for[-TRANSPORT]-STATE...
     wait for device to be in a given state
     STATE: device, recovery, rescue, sideload, bootloader, or disconnect
     TRANSPORT: usb, local, or any [default=any]
 get-state                print offline | bootloader | device
 get-serialno             print <serial-number>
 get-devpath              print <device-path>
 remount [-R]
      remount partitions read-write. if a reboot is required, -R will
      will automatically reboot the device.
 reboot [bootloader|recovery|sideload|sideload-auto-reboot]
     reboot the device; defaults to booting system image but
     supports bootloader and recovery too. sideload reboots
     into recovery and automatically starts sideload mode,
     sideload-auto-reboot is the same but reboots after sideloading.
 sideload OTAPACKAGE      sideload the given full OTA package
 root                     restart adbd with root permissions
 unroot                   restart adbd without root permissions
 usb                      restart adbd listening on USB
 tcpip PORT               restart adbd listening on TCP on PORT

internal debugging:
 start-server             ensure that there is a server running
 kill-server              kill the server if it is running
 reconnect                kick connection from host side to force reconnect
 reconnect device         kick connection from device side to force reconnect
 reconnect offline        reset offline/unauthorized devices to force reconnect

usb:
 attach                   attach a detached USB device
 detach                   detach from a USB device to allow use by other processes
environment variables:
 $ADB_TRACE
     comma-separated list of debug info to log:
     all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp
 $ADB_VENDOR_KEYS         colon-separated list of keys (files or directories)
 $ANDROID_SERIAL          serial number to connect to (see -s)
 $ANDROID_LOG_TAGS        tags to be used by logcat (see logcat --help)
 $ADB_LOCAL_TRANSPORT_MAX_PORT max emulator scan port (default 5585, 16 emus)
 $ADB_MDNS_AUTO_CONNECT   comma-separated list of mdns services to allow auto-connect (default adb-tls-connect)

adb文档和资料

官网文档

Android 调试桥 (adb) | Android 开发者 | Android Developers

其他资料

Home | Android Debug Bridge (ADB) Commands Manual (adbcommand.com)

Listing of adb Commands

Android Debug Bridge | Android Developers (oschina.net)

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2022-11-10 14:49:22

相关心得

相关心得

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-08-25 22:10:51

文件管理

文件管理

TODO：

【记录】从Nox夜神模拟器中拷贝文件到Mac中

【已解决】安卓手机Google Pixel3用文件管理管理文件

【已解决】安卓手机中打开log日志文件查看内容

安卓逆向期间，常涉及到文件管理方面的内容。

文件上传和下载=导入导出文件

用文件管理器

用命令：adb

导出文件

adb pull /mnt/sdcard/Download/com.lanyou.bydwj.ikk/ .

导入文件

adb push boot.img /sdcard/Download/boot.img

adb push riru-v25.4.4-debug.zip /sdcard/Download

文件目录的关系

常见目录：

/sdcard：SD卡根目录，即普通用户保存文件的根目录

/sdcard/Download：下载目录

安卓手机中，通过浏览器等工具下载的文件，往往默认保存在到下载目录，就是这个：/sdcard/Download

对应的查看效果：

文件管理器

文件极客

命令行

adb shell

crifan@licrifandeMacBook-Pro  ~/dev/dev_tool/android/EdXposed  adb shell
blueline:/ $ whoami
shell
blueline:/ $ cd /sdcard/Download
blueline:/sdcard/Download $ ls -lh
total 120M
-rw-rw---- 1 root everybody 14M 2022-09-15 15:30 EdXposed-v0.5.2.2_4683-master-z-debug.zip
-rw-rw---- 1 root everybody 96K 2022-09-15 10:02 MagiskHidePropsConf-v6.1.2.zip
-rw-rw---- 1 root everybody 64M 2009-01-01 00:00 boot.img
-rw-rw---- 1 root everybody 97M 2022-08-31 11:16 com.google.android.youtube_16.29.36.apk
-rw-rw---- 1 root everybody 44K 2022-09-14 17:12 magisk_log_2022-09-14T17.12.35.log
-rw-rw---- 1 root everybody 64M 2022-09-14 17:18 magisk_patched-25200_lOhGo.img

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2022-11-10 14:49:53

文件管理器

文件管理器

TODO：

【已解决】安卓手机Google Pixel3用文件管理管理文件

【已解决】安卓手机中打开log日志文件查看内容

【部分解决】安卓手机Google Pixel3中用RE文件管理器拷贝和移动文件夹

【已解决】导出安卓手机Google Pixel3中的文件

【未解决】安卓手机Google Pixel3中用ES文件管理器拷贝和移动文件夹

apk安装

【已解决】安卓手机中安装YouTube的apk报错：应用未安装

【已解决】安卓中把微信传输收到的apk.1改名为apk去掉.1的后缀

【无需解决】Android 9的Google Pixel3中安装apk报错应用未安装：可能和sdkVersion有关

【已解决】安卓手机Google Pixel3中用ES文件管理器安装youtube的apk

【已解决】Google Pixel3中如何彻底卸载提示未针对此用户安装的YouTube应用

【已解决】安卓手机Google Pixel3中安装apk应用

【未解决】用腾讯手机管家的APK安装器安装安卓apk应用

Android的文件管理器

推荐：文件管理

应用宝中搜文件管理，而找到的

其他可选

ES文件管理器

RE

MT管理器

安卓模拟器中的文件管理器

夜神模拟器中自带文件浏览器

常见的用途

给文件改名

xxx.apk.1 -> xxx.apk

查找文件

再去安装apk文件

查看文件内容

查看log日志内容

MT管理器

MT=MT管理器=MT Manager=MT Manager for Android

是什么：安卓中的一个文件管理器

常被简称为：MT2

因为最新版本是v2

比如：

MT浏览器_V2.5.4.apk 文件管理器

文件管理神器 MT Manager v2.6.1 for Android

MT管理器2.0

特点

支持在VirtualXposed中使用MT

除了普通文件管理功能外，还支持APK反编译相关功能

应用简介

MT管理器是一款强大的文件管理工具和APK逆向修改神器。

如果你喜欢它的双窗口操作风格，可以单纯地把它当成文件管理器使用。

如果你对修改APK有深厚的兴趣，那么你可以用它做许许多多的事

例如汉化应用、替换资源、修改布局、修改逻辑代码、资源混淆、去除签名校验等，主要取决于你如何使用。

主要功能

文件复制、移动、创建软链接、重命名、删除、创建文件(夹)，文件批量操作。获取 Root 权限后可访问系统目录，挂载文件系统为读写，修改文件权限和所有者。

像 WinRAR 那样打开 ZIP 格式文件，可以对 ZIP 内的文件进行删除、重命名、移动，添加/替换外部文件到 ZIP 中，无需解压后再重新打包，同时支持单独解压 ZIP 内的部分文件。

自带强大的文本编辑器，可以流畅编辑大文本文件，支持设置是否显示行号、开关自动换行、双指缩放字体大小、自动识别编码、代码语法高亮、自动缩进、正则搜索替换。

拥有图片查看、音乐播放、字体预览、执行脚本、文本对比等功能，在侧拉栏中可方便地查看存储设备、FTP连接、书签、后台、工具等。

APK 编辑功能，主要有 DEX 编辑，ARSC 编辑，XML 编辑，APK 签名、APK 优化、APK 共存、去除签名校验、RES 资源混淆、RES 反资源混淆、翻译模式等。

截图举例

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2022-11-10 14:51:08

相关资料

相关资料

DDMS

Using Dalvik Debug Monitor Service (DDMS) | Android Developers (sourceforge.net)

Using DDMS | Android Developers (android-doc.github.io)

常见安卓模拟器的调试端口

https://developer.android.com

安卓 调试 debug

调试应用 | Android 开发者 | Android Developers

Android Device Monitor

Android Device Monitor | Android 开发者 | Android Developers

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-09-13 21:30:01

Android API Level

Android API Level

Android的API Level、sdkVersion

API Levels | Android versions, SDK/API levels, version codes, codenames, and cumulative usage

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-08-25 22:11:44

子教程

子教程

父教程

安卓应用的安全和破解

子教程

逆向

Android逆向开发

Android逆向：开启root

Android逆向：静态分析

安卓逆向利器：JEB

安卓反编译利器：jadx

Android逆向：动态调试

Android逆向：重新打包apk

相关

安卓模拟器

好用的安卓模拟器：夜神Nox

框架

安卓逆向调试：XPosed框架

代码

crifan/AndroidYouTubeDynamicDebug: 安卓逆向动态调试YouTube

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-10-04 16:28:30

附录

附录

下面列出相关参考资料。

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2022-10-27 16:42:54

参考资料

参考资料

YouTube 安卓逆向 逆向思路

【整理】安卓逆向：相关资料

【整理】安卓逆向：开发心得

【整理】adb命令语法帮助信息

Android逆向：重新打包apk

Android逆向：静态分析

Creating a URL (The Java™ Tutorials > Custom Networking > Working with URLs) (oracle.com)

Java URL class- javatpoint

A Simple Guide to the Java URL | Baeldung

java - Create URL from a String - Stack Overflow

Android逆向破解：使用Android Studio调试反编译后的smali代码 - 简书 (jianshu.com)

什么刷机软件最好用(oppo手机用什么刷机软件好用) - 52FMZ资讯网

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2023-08-30 20:57:07