上一章我们介绍了adb shell的一些较为常见的用法,有读者朋友问我,如果是真实手机,应该如何使用adb shell命令,如何使用pc主机和手机adb 联动呢?

adb电脑端与真实手机互联

想要实现pc主机和手机端的adb联动其实不难,只需要pc主机安装 adb,手机安装adb即可,只是现在网络上的东西错综复杂良莠不齐,导致其实很多东西是假的,不能用的。

关注公证号 say_ohno 回复 “adb工具”,即可得到下载链接及密码,pc端解压即可直接在命令行模式下使用,无需安装,手机adb安装后可单独使用

adb工具解压后应包含如下图四个文件

adb shell 看 手机 架构 手机运行adb shell_html


手机安装成功后可单独使用,大家自行研究即可,使用方式这里不做过多介绍

这里介绍一种简单的方式,使电脑端adb控制手机,只需将手机数据线连接至电脑,并开启调试模式即可

而后进入电脑adb所在文件夹,打开命令行窗口
adb devices 查看当前连接状态

adb shell 看 手机 架构 手机运行adb shell_adb shell 看 手机 架构_02


使用adb shell命令可直接进入到手机adb模式

adb shell 看 手机 架构 手机运行adb shell_jar_03


使用su命令可切换至管理员模式

adb shell 看 手机 架构 手机运行adb shell_html_04


至此,使用电脑控制手机adb到此结束

so文件的简单读取

读取so文件信息我推荐大家使用kali进行读取,因为不需要自己去配环境,实际上linux系统都可以去读取。

readelf -h xxx.so 查看so文件的头部信息

adb shell 看 手机 架构 手机运行adb shell_github_05


readelf -S xxx.so 查看so文件的Section头信息

adb shell 看 手机 架构 手机运行adb shell_adb shell 看 手机 架构_06


readelf -l xxx.so 查看so文件程序段头信息(Program)


adb shell 看 手机 架构 手机运行adb shell_jar_07


readelf -a xxx.so 查看so文件全部内容

adb shell 看 手机 架构 手机运行adb shell_github_08


由于此内容太多,所以直接将之输出到txt文件内了

这里开始步入正题,既然是逆向,那第一步还是回归到解包脱壳

脱壳先不讲,在这里先介绍解包的两种简单的方法

反编译apk

apktool工具

apktool工具大家可以自行下载,也可以在公众号 say_ohno 回复 apktool即可获取下载链接

基础命令:

java -jar apktool_2.6.0.jar d -f xxx.apk -o 输出文件夹名字

adb shell 看 手机 架构 手机运行adb shell_github_09


这里反编译出来的是smail源码,eclipse是不能直接看的,本来是有一条命令可以将反编译出来的源码后缀直接成为.java的,但是似乎人家早在上一个版本就移除了这个功能,大家可以自己试一下,推荐大家使用ide工具查看

adb shell 看 手机 架构 手机运行adb shell_jar_10

java -jar apktool_2.6.0.jar d -d xxx.apk -o 输出文件夹名字

adb shell 看 手机 架构 手机运行adb shell_github_11


这一步是为了反编译得到源码,而后方便后续在AndroidManifest.xml文件中添加debuggable信息,以便开启动态调试功能,或阅读源码。使用apktool反编译的好处在于,AndroidManifest.xml 在未做代码混淆的情况下是可以直接阅读并修改的

adb shell 看 手机 架构 手机运行adb shell_jar_12

解压

第二种方式,直接将apk安装包当做压缩包进行解压,这种处理方式虽然也能获取到AndroidManifest.xml文件,但是这里的AndroidManifest.xml文件却是乱码,不能直接使用的,而且解压出来的classes.dex文件需要配合其他工具进行二次编译才能获取源码

adb shell 看 手机 架构 手机运行adb shell_github_13

打开AndroidManifest.xml,里面是乱的

adb shell 看 手机 架构 手机运行adb shell_cve_14


借助dex2.jar 进行二次编译 dex源码,使其变为 .jar格式代码,而后使用 jd-gui工具或ide工具进行阅读

dex2jar.bat classes.dex classes.dex文件路径

adb shell 看 手机 架构 手机运行adb shell_html_15


adb shell 看 手机 架构 手机运行adb shell_html_16


此时可以查看代码

dex2jar 工具可自行下载,或前往公众号,回复 "dex2jar"即可获取工具下载地址

此时修改结束之后,进行回编译,使其重新生成apk

java -jar apktool_2.6.0.jar b -d jst -o xxxdebug.apk 回编译成apk,注意要有apktool.yam文件

adb shell 看 手机 架构 手机运行adb shell_adb shell 看 手机 架构_17


adb shell 看 手机 架构 手机运行adb shell_cve_18


此时生成的调试版本apk不能直接安装,因为没有证书没有签名,在apk中,未签名的apk是不允许直接安装的

java -jar signapk.jar testkey.x509.pem testkey.pk8 xxxdebug.apk xxx.sign.apk

adb shell 看 手机 架构 手机运行adb shell_github_19


此时生成的apk可以安装,若是安装后依然可以正常使用,那么就属于有高风险,因为未做证书、签名校验,没有去抵抗反编译是一件很危险的事儿。