首页
论坛
课程
招聘
[原创]安卓真机免root动态调试so
2020-10-10 01:19 2291

[原创]安卓真机免root动态调试so

2020-10-10 01:19
2291

前言

我看了一下,网上动态调试so的文章很多,但是都是在说需要root,我也特意在看雪论坛搜了一下,没有见到免root动调so的文章,因此特写一篇弥补空白

本地环境

Win10系统
本人手机OPPO R9
IDA PRO 7.0
APK Editor Studio V1.4.0
android sdk
adb.exe

操作过程

打开安卓手机USB调试功能
手机数据线连接电脑,打开手机usb调试模式,我的OPPO R9开USB调试功能需要先打开开发者模式,进入开发者选项,方可开启USB调试模式,其它品牌手机请根据实际情况操作
adb连接手机
图片描述
adb进入手机
图片描述
查看手机ro.debuggable的值
ro.debuggable是rom级别的调试,如果ro.debuggable的值是1说明你的手机已经打开了调试功能,如果为0的话需要安装的安卓app已经打开了android:debuggable属性方可调试,通常正式发布出来的apk默认android:debuggable属性都是关闭的
图片描述
我这里ro.debuggable的值是0,那么手机rom是没有打开调试功能的,就需要去让安装的app开启android:debuggable属性了
开启被调试APK的debuggable属性
我这里在某商场挑了一款游戏app,"放屁超人"
使用APK Editor Studio打开看看android:debuggable属性
图片描述
上图,未见到android:debuggable属性,表示未开启,接下来开启android:debuggable属性,直接在APK Editor Studio编辑即可,该工具非常方便,在AndroidManifest.xml文件中的Application标签中添加android:debuggable=”true”属性。
图片描述
如图箭头所指的就是我添加的,现在保存AndroidManifest.xml,然后重打包apk包括重签名,同样APK Editor Studio一键搞定,按ctrl+alt+s即可
图片描述

 

安装apk到手机
APK Editor Studio打开重打包后的apk开始安装
安装前查看当前的可用设备
图片描述
如图已经列出我的OPPO R9了,现在开始一键安装
按ctrl+i弹出下图,点击Install即可安装
图片描述

 

我手机弹窗安装需要我本人授权
图片描述
输入我手机的账号密码后开始了安装,开杯一口茶便安装完成了,APK Editor Studio也提示安装完成
图片描述
上传ida的远程调试工具
android_server或者android_server64,在ida的dbgsrv目录里,我这里就懒得敲命令行上传了,直接使用APK Editor Studio上传,我上传到了/data/local/tmp目录下了,如下图:
图片描述
提升权限
这一步是关键,使用的指令是run-as,指令格式:run-as 包名,解释:以某个包的身份来运行或操作。这里的包名是:com.xstargame.boommanwar,从APK Editor Studio反编译的结果里就可以找到
图片描述
启动android_server
启动前需要将它从/data/local/tmp目录下拷贝过来,并授予权限,同时改个名称(以防有些app将android_server拉入了黑名单进行反调试)
图片描述
启动它,如下图
图片描述
启动adb端口转发
再开一个cmd窗口,进行端口转发,指令:

1
adb forward tcp:23946 tcp:23946

图片描述
以调试模式启动app

1
adb shell am start -D -n 包名路径/.Activity

启动前我们先获取MainActivity
图片描述
再调试模式启动app
图片描述
此时真机已经进入Waiting For Debugger界面了
ida进行动态调试
打开ida,附加调试该app
图片描述
图片描述
如下图已经出现了待调试的app了
图片描述
点击ok进入ida调试界面
图片描述
F9一下,运行了,注意下图中已经是运行状态了
图片描述
设置调试选项,让加载模块,例如so文件这类模块的时候断下来,如下图:
图片描述
启动monitor,旧版的安卓SDK里是叫做ddms,如下图:
图片描述
端口是8600,现在需要使用jdb进行连接这个端口正式开始调试,操作指令如下:

1
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8600

图片描述
此时真机手机界面中的原本Waitting For Debugger之类的窗口就会关闭,可以正式对so文件进行动态调试了。
切换到ida,发现libmain.so已经加载进来了
图片描述
加载进来之后我们可以去调试选项取消之前勾选的3个选项了,如下图:
图片描述
到Modules窗口找到我们想要调试的SO,如下图:
图片描述
双击so,可以看到这个它的函数列表,我们选择需要的函数进行下断即可调试了,如下图:
图片描述

后语

有前言就有后事,不,后事靠你们了,剩下就是逆向和调试分析功底了,该过反调试的过去吧,该修补的补去吧。


[公告]《CTF高级解混淆》训练营,国际顶尖CTF战队大牛亲自授课,助你快速成长!

最后于 2020-10-10 10:14 被我来自南方编辑 ,原因: 修改了一个字
收藏
点赞1
打赏
分享
最新回复 (6)
雪    币: 182
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_foyotena 活跃值 2020-10-10 08:26
2
0
as本来就支持lldb调试so啊
雪    币: 852
活跃值: 活跃值 (64)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
只是来打酱油 活跃值 2020-10-10 09:39
3
0
你这种要过签名验证才行
雪    币: 103
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
我来自南方 活跃值 2020-10-10 09:41
4
0
mb_foyotena as本来就支持lldb调试so啊
也是调真机并且不需要root权限是吗,我查一下资料看看
雪    币: 103
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
我来自南方 活跃值 2020-10-10 09:45
5
0
只是来打酱油 你这种要过签名验证才行
嗯,我分析的apk没有做校验所以没有提
雪    币: 2101
活跃值: 活跃值 (74)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JaySe 活跃值 2020-10-10 11:30
6
0
现在很多app都会做签名校验,重打包检测呢 
雪    币: 306
活跃值: 活跃值 (134)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lipengzhu 活跃值 2020-10-10 14:24
7
0
方法不错,但现实是过签名校验比root手机难得多
游客
登录 | 注册 方可回帖
返回