|
发表于 2020-10-12 22:27:23
|
查看: 6964 |
回复: 0
前言 我看了一下,网上动态调试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连接手机
安卓真机免root动态调试so-Android安全
adb进入手机
安卓真机免root动态调试so-Android安全
查看手机ro.debuggable的值
ro.debuggable是rom级别的调试,如果ro.debuggable的值是1说明你的手机已经打开了调试功能,如果为0的话需要安装的安卓app已经打开了android:debuggable属性方可调试,通常正式发布出来的apk默认android:debuggable属性都是关闭的
安卓真机免root动态调试so-Android安全
我这里ro.debuggable的值是0,那么手机rom是没有打开调试功能的,就需要去让安装的app开启android:debuggable属性了
开启被调试APK的debuggable属性
我这里在某商场挑了一款游戏app,"放屁超人"
使用APK Editor Studio打开看看android:debuggable属性
安卓真机免root动态调试so-Android安全
上图,未见到android:debuggable属性,表示未开启,接下来开启android:debuggable属性,直接在APK Editor Studio编辑即可,该工具非常方便,在AndroidManifest.xml文件中的Application标签中添加android:debuggable=”true”属性。
安卓真机免root动态调试so-Android安全
如图箭头所指的就是我添加的,现在保存AndroidManifest.xml,然后重打包apk包括重签名,同样APK Editor Studio一键搞定,按ctrl+alt+s即可
安卓真机免root动态调试so-Android安全
安装apk到手机
APK Editor Studio打开重打包后的apk开始安装
安装前查看当前的可用设备
安卓真机免root动态调试so-Android安全
如图已经列出我的OPPO R9了,现在开始一键安装
按ctrl+i弹出下图,点击Install即可安装
安卓真机免root动态调试so-Android安全
我手机弹窗安装需要我本人授权
安卓真机免root动态调试so-Android安全
输入我手机的账号密码后开始了安装,开杯一口茶便安装完成了,APK Editor Studio也提示安装完成
安卓真机免root动态调试so-Android安全
上传ida的远程调试工具
android_server或者android_server64,在ida的dbgsrv目录里,我这里就懒得敲命令行上传了,直接使用APK Editor Studio上传,我上传到了/data/local/tmp目录下了,如下图:
安卓真机免root动态调试so-Android安全
提升权限
这一步是关键,使用的指令是run-as,指令格式:run-as 包名,解释:以某个包的身份来运行或操作。这里的包名是:com.xstargame.boommanwar,从APK Editor Studio反编译的结果里就可以找到
安卓真机免root动态调试so-Android安全
启动android_server
启动前需要将它从/data/local/tmp目录下拷贝过来,并授予权限,同时改个名称(以防有些app将android_server拉入了黑名单进行反调试)
安卓真机免root动态调试so-Android安全
启动它,如下图
安卓真机免root动态调试so-Android安全
启动adb端口转发
再开一个cmd窗口,进行端口转发,指令:
1adb forward tcp:23946 tcp:23946
安卓真机免root动态调试so-Android安全
以调试模式启动app
1adb shell am start -D -n 包名路径/.Activity 启动前我们先获取MainActivity
安卓真机免root动态调试so-Android安全
再调试模式启动app
安卓真机免root动态调试so-Android安全
此时真机已经进入Waiting For Debugger界面了
ida进行动态调试
打开ida,附加调试该app
安卓真机免root动态调试so-Android安全
安卓真机免root动态调试so-Android安全
如下图已经出现了待调试的app了
安卓真机免root动态调试so-Android安全
点击ok进入ida调试界面
安卓真机免root动态调试so-Android安全
F9一下,运行了,注意下图中已经是运行状态了
安卓真机免root动态调试so-Android安全
设置调试选项,让加载模块,例如so文件这类模块的时候断下来,如下图:
安卓真机免root动态调试so-Android安全
启动monitor,旧版的安卓SDK里是叫做ddms,如下图:
安卓真机免root动态调试so-Android安全
端口是8600,现在需要使用jdb进行连接这个端口正式开始调试,操作指令如下:
1jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8600
安卓真机免root动态调试so-Android安全
此时真机手机界面中的原本Waitting For Debugger之类的窗口就会关闭,可以正式对so文件进行动态调试了。
切换到ida,发现libmain.so已经加载进来了
安卓真机免root动态调试so-Android安全
加载进来之后我们可以去调试选项取消之前勾选的3个选项了,如下图:
安卓真机免root动态调试so-Android安全
到Modules窗口找到我们想要调试的SO,如下图:
安卓真机免root动态调试so-Android安全
双击so,可以看到这个它的函数列表,我们选择需要的函数进行下断即可调试了,如下图:
安卓真机免root动态调试so-Android安全
后语 有前言就有后事,不,后事靠你们了,剩下就是逆向和调试分析功底了,该过反调试的过去吧,该修补的补去吧。
|
温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【 投诉建议】板块发帖举报。
|