解包重签名

Apktool - How to Install (ibotpeaches.github.io)

apktool.bat d xxx
#  解包完后修改完对应文件
apktool.bat b xxx
# 对齐
zipalign -f -v 4 .\\xxx\\dist\\xxx.apk xxx_a.apk
apksigner sign -ks $home/apk.keystore --ks-key-alias apk --ks-pass pass:19260817 --key-pass pass:19260817 --out xxx_signed.apk .\\xxx_a.apk
adb install .\\xxx_signed.apk

so无法断下

查看AndroidManifest.xml,检查是否存在字段android:extractNativeLibs="false"

该字段是控制libs是否要压缩打包,且高版本下,若为false,不仅表示不压缩,还表示运行时直接通过offset从apk中加载so,而不把so释放到文件系统中(参考Android 开发者  |  Android Developers

这导致IDA找不到文件,所以没法调试

解决方案就是apktool解包,修改该字段为true,再重新打包

IDA 调试

adb push .\\android_server /data/local/tmp
adb push .\\android_server64 /data/local/tmp
adb forward tcp:23946 tcp:23946
adb shell
	cd /data/local/tmp

如果需要开头断下,可以参考:

[原创]深入理解Android逆向调试原理-Android安全-看雪论坛-安全社区|安全招聘|bbs.pediy.com

首先在开发者模式里把对应app设为调试应用,并且开启Wait for debugger

adb shell
	su
	ps -A | grep xxx.xx.xx # 拿到pid
adb forward tcp:8700 jdwp:PID # PID替换成真正的pid
# connect 前记得先将IDA attach上对应进程,jdb连上之后程序就会开始跑,后面这里放着别管就行
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700