本公众号分享的所有技术仅用于学习交流,请勿用于其他非法活动,如果错漏,欢迎留言指正
《Android软件安全与逆向分析》丰生强
《 Android应用安全防护和逆向分析》姜维
Sign
的加密。这时候app逆向逆的是协议
(让爬虫爬到app的数据)so
类似win下的dll
):C/C++
语言:数据类型,语法糖,指针,实现过程。ARM汇编(寄存器,指令码,立即值,常量)下载地址: https://www.oracle.com/java/technologies/downloads/#jdk18-windows
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
(注意前面是有一个点的)%JAVA_HOME%\bin
java --version
,javac
下载地址: https://www.jetbrains.com/idea/download/#section=windows
下载地址: https://developer.android.google.cn/studio/
minSdkVersion
的字段HAXM
的插件只支持Intel
的cpu,只有安装这个插件才可以运行Android Studio 自带的模拟器。该插件不支持AMD
的cpu(AMD的cpu只能使用Genymotion模拟器,首先需要安装virtualBox虚拟机,然后再安装Genymotion模拟器,有需要请自行百度)。QtScrcpy : https://gitee.com/Barryda/QtScrcpy
.downloadlntermediates
:看名字,像是下载文件时的临时目录.temp
:下载文件时的临时目录build tools
:aidl.exe
:把.aidl 接口转换成java接口dexdump.exe
(逆向调试工具) : dump devlik中间代码aapt.exe
(Android Asset Packaging Tool):编译应用程序的资源文件(包括AndroidManifest.xml和你的Activities的xml文件),生成R.java文件,这样你就可以从你的java代码中引用资源。dx.bat
(编译脚本):将.class中间代码转化为dvlik中间代码,所有经过java编译的生成.class文件都需要此工具进行转换,最后打包进apk文件中。cmake
:Android SDK 的 CMake 的默认版本是3.10.2。Cmake是用来makefile的一个工具,读入所有源文件之后,自动生成makefile。emulator
:这里存放的是一些安卓模拟器extras
:该文件下存放了Google提供的USB驱动,Intel提供的硬件加速附件工具包。(后期存放了Android Support兼容包,使用兼容包版本时最好与SDK版本保持一致)fonts
:存放一些字体文件licenses
:market_licensing作为AndroidMarket版权保护组件,一般发布付费应用到电子市场可以用它来反盗版。ndk
:ndk(Native Development Kit)跟sdk差不多的,是它也是一个开发工具包。可以让开发者在 Android 应用中使用 C 和 C++ 代码。patcher
:增量更新,用于更新记录。platforms
platform-tools
:adb.exe
、sqlite3.exe
等。skins
:Android模拟器的皮肤source
:这个文件夹下面存放的是Android的源代码。system-images
:存放的是创建Android虚拟机时的镜像文件(已经编译好的镜像文件,模拟器可以直接加载)。从android-14开始将模拟器镜像文件整理在这里(原来放在platforms下)tools
:ddms
:用于启动Android调试工具,logcat
:屏幕截图和文件管理器,draw9patch
:绘制android平台的可缩放png图片的工具,monkeyrunner
:是一个不错的压力测试应用,模拟用户随机按键,mksdcard
:模拟器SD映像的创建工具,emulator
:Android SDK模拟器主程序,不过从android 1.5开始,需要输入合适的参数才能启动模拟器,traceview
:作为android平台上重要的调试工具。.knownPackages
:未知SDK Manager
管理。Android SDK Manager
,可以去下面网站下载SDK Tools
: https://www.androiddevtools.cn/
tools
文件夹替换自己的SDK的tools
文件夹 (作者亲测这一步不可省略,不然后面解决了环境变量,SDK Manager.exe也还是会闪退。),再尝试打开一下SDK Manager.exe
,发现还是闪退!
android-sdk-windows\tools\lib\find_java.bat
确认 java.exe 的路径。
SDK Manager.exe
可以运行成功了,ddms
也没问题
Adb(android debug bridge):android调试桥是一个用于管理 android 终端(或者模拟器)状态的工具。
platform-tools
目录下包含通用工具,比如adb
、和aapt、aidl、dx等文件VID
和PID
.android
,在该文件夹下找到文件adb_usb.ini
,如果找不到可以新建一个,在adb_usb.ini
文件里添加设备的VID
和PID
adb kill-server|adb start-server|adb devices
重启adb1.0.31
或者1.0.32
的版本,当连接android6.0版本之后的手机经常会出现adb命令不通情况。1.0.36
及其以后的版本。adb.exe
、AdbWinApi.dll
、AdbWinUsbApi.dll
三个文件,执行adb start-server
C:\Users\cisco>adb devices
List of devices attached
KBVO8******S8TYT device
0bb39******9dcc8 device
# 注意: 如果有多个手机连接在电脑上,需要用 -s "serial_number" 参数指定目标手机
# 设置手机侦听端口 5555 上的 TCP/IP 连接:
C:\Users\cisco>adb -s 0bb39******9dcc8 tcpip 5555
restarting in TCP mode port: 5555 # 在命令行中看到 TCP mode port: 5555 就表示监听成功:
# 进入手机设置-wifi,查看手机所连接的网络的ip地址
# 通过 connect 命令和 IP 地址以及端口号连接到目标手机
C:\Users\cisco>adb connect 172.20.10.13:5555
connected to 172.20.10.13:5555 # 当看到 connected to xxx:5555 的提示语就表示连接成功
# 拔掉USB线,验证一下,看到如下提示语,说明已成功打开了adb WiFi
C:\Users\cisco>adb devices
List of devices attached
KBVO8******S8TYT device
172.20.10.13:5555 device
# 输入adb命令操作设备,当有多个设备连接了电脑,导致adb无法识别操作具体哪台设备
C:\Users\cisco>adb shell
adb.exe: more than one device/emulator
# 执行命令adb -s 172.20.10.13:5555 shell,进入指定设备操作
C:\Users\cisco>adb shell
hammerhead:/ $ exit
# adb connect断开
C:\Users\cisco>adb disconnect
disconnected everything
C:\Users\cisco>adb devices
List of devices attached
# 结束adb服务
C:\Users\cisco>adb kill-server
C:\Users\cisco>adb devices
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached
KBVO854LKBWS8TYT device
# 通过 connect 命令和 IP 地址以及端口号重新连接到目标手机
C:\Users\cisco>adb connect 172.20.10.13:5555
connected to 172.20.10.13:5555
b. 方式2:通过 as的ADB WiFi Connect插件打开
- adb 无线连接每次都得经历那些步骤,有点繁琐,安装这个插件直接在 Android Studio 中直接鼠标点点的快速方式来完成
-
c. 方式3:通过ADB WiFi(app)打开
https://www.python.org/downloads/
python
https://www.jetbrains.com/pycharm/download/#section=windows
破解激活请百度
https://www.google.cn/chrome/
nodejs: https://nodejs.org/zh-cn/download/
小米手机服务支持-小米商城 (mi.com):https://www.mi.com/c/service/download/index.html
bootloader
的简称 就是开机引导程序 ,Bootloader锁,主要是在引导过程中对系统签名,内核签名及Recovery签名进行检验,如果签名不一致,即终止引导。解锁工具:https://www.miui.com/unlock/index.html)
自定义
和稳定性
长久以来似乎都是鱼与熊掌不可兼得
,直到Magisk的横空出世。
topjohnwu
打造的开源框架软件,可以在修改系统功能的同时不会对系统本身造成破坏,但是Magisk更普遍的用途是作为获取和管理Root权限的工具。(在SuperSU
销声匿迹之后,Magisk
自然而然就成为了当前Android社区用来获取root
权限的主流方式)Magisk
与另一款名 Xposed
的神器有着高度的相似性,部分群体当中甚至还存在着Magisk 框架
这样的说法。
拦截
。Xposed
通过劫持 Android 系统的 zygote
进程来加载自定义功能,这就像是半路截杀,在应用运行之前就已经将我们需要的自定义内容强加在了系统进程当中。Magisk 分区
)里发生,在必要的时候却又可以被认为是(从系统分区的角度而言)没有发生过。被隐藏
甚至被取消挂载
时,原有系统分区的完整性丝毫未损,玩需要root
验证的游戏、运行对设备认证状态有要求的应用甚至进行需要验证系统完整性的OTA
更新都没有任何问题。面具模块
。也可以和Xposed框架
结合起来使用,发掘更多的功能。理论上两者功能可以相互替代,但由于两者侧重点不同以及模块开发难度等原因,Magisk更多用于对系统的修改,而Xposed更多用于对用户软件的修改
。Redmi 9系列稳定版官方ROM下载帖(1月24日更新): https://web.vip.miui.com/page/info/mio/mio/detail?postId=20980945&app_version=dev.20051
2. **下载安装Magisk Manager **
#坑/逆向/app逆向/Magisk : 用v23版本(Magisk Manager 的团队被谷歌收编了,23以后的版本去掉模块在线安装
和MagiskHide
(隐藏Magisk避免被检测))
#坑/逆向/app逆向/root/小米 : Redmi9a手机是联发科芯片,用v23的magisk修不出来的img有问题。需要用更新的版本(v23之后的版本)的magisk(修补boot.img的时候,不要勾选选项-修补boot 镜像中的vbmeta
)。
topjohnwu/Magisk: https://github.com/topjohnwu/Magisk/releases/tag/v23.0
F:\backup\1.windows\4.development_tools\2.IDE\Magisk>adb install F:\backup\1.windows\4.development_tools\2.IDE\Magisk\Magisk-v25.2.apk
Performing Streamed Install
Success
fastboot.exe
工具把这个修后的.img
文件刷入手机音量-键
和电源键,进入fastboot
模式,连接usb数据线.img
文件,重启手机D:\Android\Sdk\platform-tools>adb reboot fastboot
D:\Android\Sdk\platform-tools>fastboot flash boot F:\backup\1.windows\4.development_tools\2.IDE\Magisk\Redmi9a\magisk_patched-23000_25aFB.img
Sending 'boot' (65536 KB) OKAY [ 1.528s]
Writing 'boot' OKAY [ 0.837s]
Finished. Total time: 2.387s
#坑/逆向/app逆向/root/小米 : fastboot之后开不了机,可以刷回原本的boot.img
恢复。
5. (高通的cpu才需要)进入 Magisk Manager,选择安装-直接安装,才能将临时 root 转换为永久 root。
D:\Android\Sdk\platform-tools>adb shell
dandelion:/ $ su
dandelion:/ # # 成功切换到root用户下,就说明已经root成功了
开源以及知名作者
的模块)救砖模块下载地址:Magisk模块-神仙自动救砖.zip - 『精品软件区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
Rikka
开发的一套
模块系列。Riru 神奇的地方在于,它部分地达成 Xposed
那样的功能,能够自定义到一部分的应用。
一套
模块呢?
Riru Core
是必须安装的,然后需要用户按照自己的需求安装 Riru 系列的其他模块。RiruXposed
和EdXposed
,要安装Riru v25.4.4
Riru Core : https://github.com/RikkaApps/Riru/releases
协议抓包
文章,再详细安装)EdXposed
必须先装Magisk模块:Riru
LSPosed
和EdXposed类似
LSPosed
是Edxposed的一个分支,相比于 EdXposed,它精简了许多, 也要比后者流畅的多、省电的多。Magisk模块
刷入设备运行,安装风险也比传统Xposed管理器小很多。v21
以上版本的Magisk Manager23+
LSPosed模块(Zygisk版)下载地址 : https://github.com/LSPosed/LSPosed/releases
GitHub - shatyuka/Zhiliao: 知乎去广告Xposed模块
C:\Users\cisco>adb install F:\backup\1.windows\4.development_tools\2.IDE\LSPosed\Zhiliao_22.10.02.apk
Performing Streamed Install
Success
下载地址:https://github.com/liaojack8/AndroidKiller
下载地址: https://ibotpeaches.github.io/Apktool/
dex,apk→>smali→java
下载地址: https://github.com/skylot/jadx/releases
dex,apk→>smali→java
查找用例
即可添加注释
即可apk->smali->java
dex,apk→>smali→java
下载地址: https://www.hex-rays.com/
so->arm->c
Natvie
反编译工具so
库 ,DLL
同样可以反编译下载地址: https://github.com/java-decompiler/jd-gui
dex->jar→>java
下载地址: https://sourceforge.net/projects/dex2jar/files/
dex->jar→>java
下载地址: https://github.com/google/enjarify
dex->jar→>java
下载地址:https://bitbucket.org/JesusFreke/smali/downloads/
dex->smali
编辑器
#坑/逆向/app逆向/AndroidStudio/工程项目 : 有时需要修改工程名字、移动工程目录,导入已有的工程 ,会出现各种问题