House框架介绍: 运行时移动应用程序分析工具包,带有 Web GUI,由 Frida 提供支持,用 Python 编写。 它旨在通过实现动态函数挂钩和拦截来帮助评估移动应用程序,旨在使 Frida 脚本编写尽可能简单。 安装地址:https://github.com/nccgroup/house 测试示例文件:com.ha0k3.overloads【test_apk目录 里面】 House工作环境: 一台运行有 frida-server 的 root 安卓设备插入您的计算机,建议仅使用一个 USB 设备。 本地 frida-python 版本与 frida-server 版本匹配。 注意:确保将您的 Frida 版本更新为 >= 12.8.3 以用于 /dex/jar 函数挂钩第一步:启动框架会用到的命令
启动框架: python app.py http://127.0.0.1:8000 # 1、安装frida模块 -------------------------------------------------------------------------- pip3 install frida pip install frida-tools # 2、查看本地电脑全部frida版本 pip list |findstr /i frida > frida 14.2.18 > frida-dexdump 1.0.3 > frida-tools 9.2.5 # 3、查看手机型号,下载系统对应版本的 frida-server adb shell getprop ro.product.cpu.abi > arm64-v8a # 4、则下载【https://github.com/frida/frida/releases】 xz -d frida-server-14.2.18-android-arm64.xz # 5、重命名为 frida-server mv frida-server-14.2.18-android-arm64 frida-server # 6、push到设备中 adb push frida-server /data/local/tmp/ # 7、测试运行【bat启动:https://blog.csdn.net/suyancc/article/details/109846433】 adb shell su cd /data/local/tmp chmod 755 frida-server ./frida-server # 8、输出手机进程列表 frida-ps -U # 9、端口转发列表 adb forward --list # 10、进行端口转发监听 adb forward tcp:27042 tcp:27042 adb forward tcp:27043 tcp:27043 # 11、将端口转发移除掉 adb forward --remove tcp:27042 # 12、安装 apk adb install final.apk # 13、查看所有apk包名: adb shell pm list package -f # 14.运行错误的情况: 安卓真机关闭 frida-server - 【Unable to start: Error binding to address 127.0.0.1:27042: Address already in use】 > ps -e | grep frida > kill -9 pid号第二步:功能演示 Start面板
Preload & Monitor面板我还不熟哈连接真机时,点击 Refresh按钮或重启应用程序和Frida服务器【存在多个真机时,要选择对应多练习的环境】
跟以下示例图一样侧成功连接【首页:http://127.0.0.1:8000】
Enumeration面板省略…
1.加载app所有类 2.加载Dex所有类 3.加载Dex和jar所有文件 4.加载给定类中的所有方法枚举所有加载的类
输入:com.ha0k3.overloads.MainActivity【在加载app所有类可以找到】
5.历史脚本管理【在前四个加载面板中,可以保存添加为历史脚本的哦】 Hooks面板也可以加载app内置的类包【java.lang.String】
hook脚本渲染和函数跟踪【监听方法参数和返回值】
示例入参:
{“classname”:“com.ha0k3.overloads.MainActivity”,“methodname”:“isLit”,“overload_type”:""}
{“classname”:“com.ha0k3.overloads.MainActivity”,“methodname”:“isSimpleLit”,“overload_type”:""}
hook 动态加载的 dex/jar 文件中的函数的钩子
示例入参:
{“dyload_path”:"/data/local/tmp/dyhello.dex",“classname”:“com.hao.hello.DyHello”,“methodname”:“hello”,“dynamicHookOption”:“new”,“overload_type”:""}
Intercept面板【方法拦截】还是一样可以保存历史脚本的噢
静态参数拦截并修改数据
对象参数拦截并修改
House 提供了几个 REPL 函数来使测试更容易:
inspectObject(obj)用于java.lang.reflect检查对象内的字段信息。 setRetval(ret) 接受一个参数并尝试使用原始返回值的构造函数将其强制转换为正确的返回类型。 getStackTrace() 将打印堆栈跟踪。 未来将添加更多 REPL 功能。注意:对于构造方法挂钩/拦截,输入$init为方法名称【源码我还弄不清楚,所以无法讲解】
特别感谢以下开源项目对 House 的启发: 1、Frida,一个伟大的仪器工具包,使所有这些成为可能。 2、Objection,,构建 House 的 Frida 模板脚本部分的灵感和指南。 3、Inspeckage,灵感来自House的Monitor功能。 4、0xdea/frida-scripts - 一个很棒的 Frida 脚本库。init.bat 文件
cd /data/local/tmp su ps | grep frida-server if [ $? -ne 0 ]; then chmod 777 frida-server ./frida-server & echo "start successfully!" ps | grep frida-server else echo "runing!" firun_FridaServer.bat文件
adb shell < init.bat adb forward tcp:27042 tcp:27042 pause
这两个bat时快速启动安卓收集的frida-server命令
原作者文章:https://blog.csdn.net/suyancc/article/details/109846433
感谢感谢感谢



