无需 Root 使用 IDA 调试 Android Native

Posted Byaidu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无需 Root 使用 IDA 调试 Android Native相关的知识,希望对你有一定的参考价值。

工具准备

Apktool: https://ibotpeaches.github.io/Apktool/install/

android SDK: https://developer.android.com/studio/releases/platform-tools

修改源程序

首先使用 apktool 解包

apktool StandOnTheGiants.apk

在 AndroidManifest.xml 的 <application> 标签中添加 android:debuggable="true"

根据真机架构将 android_server 或 android_server64 拷贝到 lib 中对应的文件夹下

然后使用 apktool 重新打包

apktool b StandOnTheGiants

在 dist 目录下找到生成的 apk,使用 keytool 和 jarsigner 对重新打包的 apk 进行签名

keytool -genkey -alias abc.keystore -keyalg RSA -validity 20000 -keystore abc.keystore
jarsigner -verbose -keystore abc.keystore -signedjar StandOnTheGiantsx.apk StandOnTheGiants.apk abc.keystore

使用 adb 将重新打包的 apk 远程安装到真机

adb install StandOnTheGiantsx.apk

启动调试器

执行 start_server.bat 启动真机上的调试服务

@echo off

rem 下面一行需要自行修改
set apkname=com.a.standonthegiants

(echo run-as %apkname%
echo ./lib/android_server)|adb shell
pause

执行 start_apk.bat 启动真机上的目标程序

@echo off

rem 下面一行需要自行修改
set apkname=com.a.standonthegiants

adb devices
adb shell am start -D -n %apkname%/.MainActivity
ping localhost -n 2 >nul
start /b "" adb jdwp > pid.txt
ping localhost -n 2 >nul
set /p pid=<pid.txt
echo pid:%pid%
adb forward tcp:23946 tcp:23946
adb forward tcp:5005 jdwp:%pid%
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=5005
pause

程序启动后使用 IDA 的 Remote Android 调试器附加到 localhost:23946 即可

参考文章

https://bbs.pediy.com/thread-256848.htm

https://ctf-wiki.github.io/ctf-wiki/android/basic_reverse/dynamic/ida_native_debug/

以上是关于无需 Root 使用 IDA 调试 Android Native的主要内容,如果未能解决你的问题,请参考以下文章

IDA 调试 Android

Android 无线调试设备,无需Root方式

adb无线连接android手机进行调试 无需获得root权限

安卓IDA动态调试总结

ida 调试 android fork

Android 逆向IDA 工具使用 ( 交叉引用数量设置 | 调试设置 )