查看: 372|回复: 0

[转载图文] 安卓真机免root动态调试so-Android安全

[复制链接]
发表于 2020-10-12 22:27:23 | 显示全部楼层 |阅读模式
前言  我看了一下,网上动态调试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安全

安卓真机免root动态调试so-Android安全
  adb进入手机

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  查看手机ro.debuggable的值
  ro.debuggable是rom级别的调试,如果ro.debuggable的值是1说明你的手机已经打开了调试功能,如果为0的话需要安装的安卓app已经打开了android:debuggable属性方可调试,通常正式发布出来的apk默认android:debuggable属性都是关闭的

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  我这里ro.debuggable的值是0,那么手机rom是没有打开调试功能的,就需要去让安装的app开启android:debuggable属性了
  开启被调试APK的debuggable属性
  我这里在某商场挑了一款游戏app,"放屁超人"
  使用APK Editor Studio打开看看android:debuggable属性

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  上图,未见到android:debuggable属性,表示未开启,接下来开启android:debuggable属性,直接在APK Editor Studio编辑即可,该工具非常方便,在AndroidManifest.xml文件中的Application标签中添加android:debuggable=”true”属性。

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  如图箭头所指的就是我添加的,现在保存AndroidManifest.xml,然后重打包apk包括重签名,同样APK Editor Studio一键搞定,按ctrl+alt+s即可

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  安装apk到手机
  APK Editor Studio打开重打包后的apk开始安装
  安装前查看当前的可用设备

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  如图已经列出我的OPPO R9了,现在开始一键安装
  按ctrl+i弹出下图,点击Install即可安装

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  我手机弹窗安装需要我本人授权

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  输入我手机的账号密码后开始了安装,开杯一口茶便安装完成了,APK Editor Studio也提示安装完成

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  上传ida的远程调试工具
  android_server或者android_server64,在ida的dbgsrv目录里,我这里就懒得敲命令行上传了,直接使用APK Editor Studio上传,我上传到了/data/local/tmp目录下了,如下图:

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  提升权限
  这一步是关键,使用的指令是run-as,指令格式:run-as 包名,解释:以某个包的身份来运行或操作。这里的包名是:com.xstargame.boommanwar,从APK Editor Studio反编译的结果里就可以找到

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  启动android_server
  启动前需要将它从/data/local/tmp目录下拷贝过来,并授予权限,同时改个名称(以防有些app将android_server拉入了黑名单进行反调试)

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  启动它,如下图

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  启动adb端口转发
  再开一个cmd窗口,进行端口转发,指令:
1adb forward tcp:23946 tcp:23946

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  以调试模式启动app
1adb shell am start -D -n 包名路径/.Activity  启动前我们先获取MainActivity

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  再调试模式启动app

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  此时真机已经进入Waiting For Debugger界面了
  ida进行动态调试
  打开ida,附加调试该app

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  如下图已经出现了待调试的app了

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  点击ok进入ida调试界面

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  F9一下,运行了,注意下图中已经是运行状态了

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  设置调试选项,让加载模块,例如so文件这类模块的时候断下来,如下图:

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  启动monitor,旧版的安卓SDK里是叫做ddms,如下图:

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  端口是8600,现在需要使用jdb进行连接这个端口正式开始调试,操作指令如下:
1jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8600

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  此时真机手机界面中的原本Waitting For Debugger之类的窗口就会关闭,可以正式对so文件进行动态调试了。
  切换到ida,发现libmain.so已经加载进来了

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  加载进来之后我们可以去调试选项取消之前勾选的3个选项了,如下图:

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  到Modules窗口找到我们想要调试的SO,如下图:

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
  双击so,可以看到这个它的函数列表,我们选择需要的函数进行下断即可调试了,如下图:

安卓真机免root动态调试so-Android安全

安卓真机免root动态调试so-Android安全
后语  有前言就有后事,不,后事靠你们了,剩下就是逆向和调试分析功底了,该过反调试的过去吧,该修补的补去吧。


温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046
微信公众号
快速回复 返回顶部 返回列表