移动安全(2) - 配置逆向环境r0env,从问题中配置与真机调试


配置r0env

相关的r0env的配置可以看b站的视频,肉师傅自己录的(他这迷死人的声线):点我,图文性质的配置:点我

r0env下载地址在他的公众号里

 

你r0env配置好了,那么逆向环境也基本配置好了。

mac下真机调试

由于之前都是用的windows平台+linux做逆向的:

  • windows
  • vmware workstation
  • kali linux(肉丝大佬封装好的r0env)
  • android studio
  • 安卓手机 google nexus n5

 windows平台下就不介绍了,因为太简单了,usb插上直接就有了,唯一的就是vmware workstation软件有的配置桥接模式时没网的时候,需要手动指定一个ip

 

由于我这就两台电脑,一台写代码用的mac,一台2014年买的联想笔记本,由于14年的,年代久远,所以,一开始就选用了mac来做逆向

然后mac端也有vmware fusion的虚拟机软件,所以,直接就可以:

    • mac
    • vmware fusion
    • kali linux(肉丝大佬封装好的r0env)
    • android studio
    • 安卓手机 google nexus n5

接下来目的就是想通过usb接口,与手机互联,不想连手机?那还玩啥逆向?你在开什么玩笑?

wif adb真机调试

当然可以用wifi adb软件建立连接的,这个方法是最省事的

 

 

android studio直接就有了

 

但是fusion里是没有的:

 

而是直接在fusion里用地址连接:

首先确定你已经改为了桥接模式,并与手机在用一个局域网

 

直接连接

 

scrcpy测试:

 

虚拟机里的android studio,直接就有了

 

usb真机调试

有很多情况,可能wifi adb的模式不太好操作,所以可能需要usb接口形式的连接

当我手机插上mac电脑的时候,由于mac只有雷雳接口,用了绿联的扩展坞作转接usb,插上电脑就如下:

 

 

 

 

 反正上面这个图片,我跟着操作了半天,没效果,应该是识别成了外界键盘去了,所以不用管

问题

但是,问题来了,我mac是可以识别的手机的,adb里有

而且还能直接进shell,那说明没问题的

但是,在vmware fusion里的usb设备里就是没有:

 

很奇怪

网上查阅了一下,看到这篇文章:https://kb.vmware.com/s/article/1021853

然后下面这句话,意思就是说vmware是不支持FireWire和Thunderbolt接口的

 其中Thunderbolt就是前面说的雷雳接口

我当时就信了,看到发布日期2018年,我觉得应该过了几年了,应该有解决吧,所以不管了,我开始拿起我的联想笔记本,准备一通操作,由于年代久远,响应速度着实慢,我操作了2个多小时,把r0env配置好,然后进入的时候,提示inter vt的模式未开启,又去bios里开启,这些都是大学的时候封装windows系统学到的基本功,操作了半天,反正插上usb后,真机的usb驱动安装失败,我猜应该是国外手机的关系,反正一直装不上,真机都连不上,虚拟机也更连不上了,反正就是浪费了两个多小时(我拿这些时间来学习,都能学到好多知识了,唉)

 

结果又转回mac,在某技术群里问了下有么有用mac来操作的,他们说可以的,没什么问题,顿时就觉得果然不能信上面给的那个帖子啊,说不支持雷雳接口的

既然群友说可以,那就是可以

排查问题并解决

开始我换了个fusion的最新版,12.2.1,然后我mac是12.0.1系统,问了群友,他们也有跟我用一样系统的

 

那说明就是更可以了

接着就是排查问题

扩展坞-mac雷雳接口-fusion-r0env

首先能确定扩展坞-mac雷雳接口是没问题的,因为我都能进adb shell,但是安卓手机插上,mac里的文件管理访达里确实是没有的,不像windows会有个媒体标之类的,为此我还查了下,mac连接安卓手机,然后找到下面的帖子:

https://www.zhihu.com/question/19766565

还装了个HandShaker,锤子科技出的,发现没有什么用,还是用的局域网连接的,我需要的是用usb连接

为了确定mac与手机的连接,我还特地在mac上装了android studio看能否读取手机

 

发现是可以的,然后随便建了个安卓项目,调试,这个app能真的装在手机上的

那就还是fusion这个软件的问题,然后看到这个问题,稍微的有点接近:点我

但是看到评论区,还是说没有解决,不过至少给了个思路,应该是fusion没有获取到usb权限,所以就读取不了

先试下,通用部分是这样的,我都允许了任何来源了

 

允许任何来源:

终端输入:sudo spctl --master-disable

关闭sip:(这里不用管一样可以)

https://www.macapp.so/tips/mac-disable-sip/

防火墙也是关的:

 

隐私里,我把能usb相关的我都选了:

 

把fusion加上:

 

退出fusion,打开,还是如此,usb里还是没有

然后又看到个贴,说要运行下fusion里的脚本,帖子地址找不到了,查了太多东西,一时想不起在哪里看到的了,如下操作:

 

再打开如下路径:

 

把跟usb相关的都执行一遍:

 

然后再回到安全与隐私里,就多个这个,勾上

 

此时打开还是不行的,找到那个虚拟机系统的vmx文件,找到你存放虚拟机的地方,如下操作:

 

找到这个vmx,用文本编辑器打开:

 

加上这一句:usb.generic.allowHID = "TRUE",保存退出,此时这个操作一定要在fusion关闭的情况下进行

 

此时你奇迹的发现,fusion终于可以读取usb了(这个图片画质不一样是因为截屏键跟fusion的按键冲突,截取不到,我用手机拍的,小问题,不纠结)

 

当点击连接时,报错如下:

 

太骚了

查看了半天,哪里看到的我也忘了,还要加如下的:usb.generic.allowLastHID = "TRUE",保存退出

 

重新打开fusion,点连接时,来了,等啥呢,直接点【好】

 

再看adb:

 

终于他妈的连上了,然后用scrcpy看下,完美

 

总结

1.应用程序,fusion,显示包内容,contents,LIbary,Services, 相关的usb服务跑一遍
2.安全性和隐私里,通用,允许,或者任何来源
3.安全性和隐私里,隐私,安全访问磁盘和文件夹,辅助工具,添加fusion
4.找到虚拟机vmx文件,在最后添加两个TRUE,并且这个操作要在fusion未启动情况下

  • usb.generic.allowHID = "TRUE"
  • usb.generic.allowLastHID = "TRUE"

over

总算搞定了,花了好几个小时解决这个问题。