# House **Repository Path**: cattus/House ## Basic Information - **Project Name**: House - **Description**: Frida分析android应用测试框架,基于 https://github.com/nccgroup/house - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-07-28 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # House 新版本文档 在原有功能的基础上新增了`RPC模式`调用,主要用来过掉一些反调试检测,如果要参考旧文档可以查看`olddoc/README.md`,目前新增的功能包括 * 增加可选的反调试模式(RPC模式)调用 * 所有的动态生成脚本过程都是支持`RPC模式调用` 基于一些反调试应用的限制导致原有的`House`不能调试分析,因此在此基础上增加了**反调试模式 - RPC调用,这篇文档主要说明如何使用反调试模式 ,原来的House的使用不影响** ## 源码下载 为了更好的维护以及方便下载,我将这个项目放到了`gitee`上,首先需要下载回来,如下 ```bash git clone https://gitee.com/cattus/House ``` ## Frida环境 这个根据自己的电脑环境预先搭建好即可,不做赘述。 ## 指定端口模式 鉴于反调试程序大部分都会选择检测默认的`Frida-server`的默认端口`27042 27043`等,其他的反调试手段后续在继续更新到这篇文档,因此首选需要指定端口模式,在页面指定并确认,如下 * 在电脑端启动指定的服务 启动格式` /path/to/frida-server -l 0.0.0.0:port 这里l 是英文字母小写 l` ![image-20200729095933839](./imgs/image-20200729095933839.png) * 端口转发 启动命令`adb forward tcp:port tcp:port` ![image-20200729100025937](./imgs/image-20200729100025937.png) * 首先填写远程服务端口模式 **注意输入框内需要填写格式为"host:port,host:port"多个使用逗号隔开, 为后续添加多设备保留,目前只做一个设备的支持** ![image-20200729143926234](./imgs/image-20200729143926234.png) **填写完成后勾选 AntidbgBox 接着点击 Confirm按钮即可按照正常的House的调试分析模式** 正常获取到设备后提示如下 **目前只支持一个台设备调试分析** ![image-20200729161047293](./imgs/image-20200729161047293.png) 失败的情况 ![image-20200729161001664](./imgs/image-20200729161001664.png) 上述步骤是为了指定`frida-server`的启动模式,可以很方便的绕过了常规检测手段。 **如果不要反调试模式,如果勾选了AntiDbgBox,取消勾选然后点击Confirm按钮即可关闭该模式,模式不开启反调试模式** 取消后反调试模式不生效仍然可以继续使用原始的功能 ,**注意,取消了反调试模式,需要再次 点击一下Confirm按钮才能生效,这个是原始框架决定了,不打算做过多的修改,沿用原始功能** ![image-20200729161137888](./imgs/image-20200729161137888.png) ## 测试步骤 在执行hook前的很多功能都和`House`的保持一致,例如`Monitor Enumeration`,不过需要指出的是关于下面的两个功能 ### Hooks 由于我采用了`RPC`模式调用导致首次加载了代码后不能及时捕获到`hook`点,如下 日志显示了已经加载 ![image-20200729100857708](./imgs/image-20200729100857708.png) web上日志并没收到hook点信息 ![image-20200729100931349](./imgs/image-20200729100931349.png) **为了能正常的hook并捕获运行时信息,此时将程序返回到桌面,这里不是杀死程序 而是按下返回键先回到桌面接着再次打开程序就能看到添加的hook点信息,这个应该是rpc的模式有关一些副作用,目前我在测试的时候并没有好的方案解决这个,不过目前先这样用 后续在找找别的方案**,如下是重新打开应用后的日志 ,**再次说明,当加载脚本后,不要手动杀死进程,再打开,杀死后注入的hook新就不存在了,直接返回后再打开程序会立即生效hook点信息,只要能拿到hook信息即可** ![image-20200729101300411](./imgs/image-20200729101300411.png) ### Intercept 参数修改功能的使用参考`Hooks`的触发hook点,其他的功能和`House`原来一样,这里不做描述。如下是使用的反调试模式 ![image-20200729105757800](./imgs/image-20200729105757800.png) ## 问题 ### 手机会无响应 不知道是否是系统原因还是使用`Frida`注入原因,有时候再调试时候手机会出现黑屏,手机按钮无响应,最好测试完成后调用`Detach`按钮释放掉注入的程序代码,不然只能通过`adb reboot`的模式重启手机。 ![image-20200729102146532](./imgs/image-20200729102146532.png) ## 使用反调试模式需要注意事项 * 进程启动后如果要测试需要先利用脚本启动程序 * 接着手动返回主页面,注意不是杀死进程,是返回到桌面(按下返回键),这个问题是由于`RPC模式调用引起,暂时不知` * 脚本加载起来后手动触发相关函数即可。 * 可能手机会出现无响应状态后者每次通过反调试模式启动后都会重启一次目标进程,这是属于正常现象 * 其他后续更新