ida动态调试安卓SO(免root)

注意:无需root手机

第1步,反编译apk,我这里用的是APK Editor Studio。在AndroidManifest.xml文件中的Application标签中添加android:debuggable=”true”属性。

第2步,重新回编译apk,并签名打包好。

第3步,把apk在一部没有root的手机上安装好,先不用启动app,只是安装好即可,至于怎么把这个apk安装到手机上的姿势有很多种,这里就不教了。

我这里通过电脑qq传到手机qq上安装好了apk

第4步,手机数据线连接电脑同时打开手机usb调试模式,不同的手机打开usb调试模式的方法各不相同,这里也不教。

第5步,打开cmd窗口,输入:adb devices。adb指令是安卓SDK中自带的工具,如果没有该指令请安装安卓sdk,并配置系统环境变量,即可使用adb指令。

%title插图%num

第6步,上传ida的远程调试工具:android_server或者android_server64到手机上。

由于没有root权限,所以这一步会比较巧妙。

首先,敲:adb shell指令,进入手机

%title插图%num

接着,启动Android Studio,启动后Android Studio会自动识别手机,右下角有个DeviceFileExporler

%title插图%num

然后,找到安装包目录,通常是包名称做目录,一般在/data/data/目录下

%title插图%num

最后,在对应的包名目录鼠标右键上传android_server文件到该目录下,如下图:

%title插图%num

这样就成功的把android_server传到该app的安装包目录下了。

第7步,提权。这里的提权是把权限提升为我们安装的具有debugger属性的app的权限,这样即可顺利调试该app的so文件。

首先,执行:adb shell,进入手机

%title插图%num

接着,执行:run-as app的包名,包名在上面的Android Studio里已经看到了,也可以在反编译时看到完整包名,通常是com.xxx.xxx,我这里如下图:

%title插图%num

会直接进入该app安装后的目录,进入后,我们将android_server改个名称,以免被反调试手段检测到,同时授予执行权限,如下图:

%title插图%num

然后,我们启动它,我改完后的名称是pig,那么执行./pig即可启动,如下图:

%title插图%num

最后我们就可以着手下面的步骤用以准备启动app并打开ida进行附加调试了。

第8步,打开另一个cmd窗口,进行端口转发,转发操作:adb forward tcp:23946 tcp:23946,如下图:

%title插图%num

第9步,使用adb以调试模式启动app,指令:adb shell am start -D -n 包名路径/.MainActivity,如下图:

%title插图%num

第10步,打开ida,附加调试该app,如下图:

%title插图%num
%title插图%num
%title插图%num
%title插图%num

第11步,F9运行一下,仅1下,如下图:

%title插图%num

第12步,设置调试选项,让加载模块,例如so文件这类模块的时候断下来,如下图:

%title插图%num
%title插图%num

第13步,启动monitor,旧版的安卓SDK里是叫做ddms,都一样,如下图:

%title插图%num

可以看到端口是8600,下面的步骤要用到

第14步,使用jdb进行链接到这个端口,指令:jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8600 如下图:

%title插图%num

此时手机界面中的原本Waitting For Debugger之类的窗口就会关闭,表明已附加到这个VM上了,可以对so文件进行动态调试了。

第15步,切换到ida,保持刚才的状况不要再去做额外的操作,仅仅执行F9运行一下,一次没有加载到我们的so的话,再执行F9,可以多次执行,直到想要调试的so文件加载进来,如下图我的已经加载进来了:

%title插图%num

第16步,加载进来之后我们可以去调试选项取消之前勾选的3个选项了,如下图:

%title插图%num

第17步,到Modules窗口找到我们想要调试的SO,如下图:

%title插图%num

双击,可以看到这个so的函数列表,我们选择需要的函数进行下断即可调试了,如下图:

%title插图%num

第18步,执行F9运行,程序就会断在如图的地方,如下图:

%title插图%num

剩下就是F7/F8的事情了。

发表回复