1、基于逆向Hook的终端质量能力建设陈立平阿里巴巴测试开发专家陈立平阿里巴巴 测试开发专家l 1688终端质量负责人l 负责1688终端质量保障平台建设l 负责终端全链路质量能力建设 目录C O N T E N T S01.议题背景02.解决思路03.关键技术方案04.技术创新点05.价值和收益06.未来展望07.总结议题背景0101.议题背景一线测试工程师视角下的App状态01.议题背景主要的测试手段01.议题背景能不能做 可测性问题?UI层业务层基础层展示与交互业务API业务逻辑容器图片文件网络数据缓存 日志统计安全路由做得快不快 效率问题?01.议题背景统一导航库有个大升级!01.议题背景
2、做个埋点自动化验证的功能,客户端能不能配合改造一下?我很想帮你,但是这样会影响原有埋点上报基础功能,风险太大了!01.议题背景客户端API怎么做异常测试?数据如何注入?解决思路0202.解决思路统一导航升级(基础库)可以调用客户端内部API埋点自动验证可以拦截客户端内部API的调用,获取入参和结果异常测试可以修改客户端内部API的调用高效使用成本低无侵入性客户端逆向Hook工具02.解决思路1、可以监控API函数调用过程,入参、出参、堆栈 运行时监控(埋点验证)2、修改入参,调用函数,观察结果 API测试3、修改函数调用返回值 异常mock 测试一个强大的逆向动态(运行时)分析工具,无代码入侵
3、、使用外部动态注入方式、同时支持Android 和 iOS02.解决思路 Hook 函数 修改函数参数 调用函数02.解决思路关键技术方案0303.关键技术方案 测试工程方案设计03.关键技术方案 注入式(Injected)-设备需要Root或越狱,直接注入脚本 集成式(Embedded)-无需越狱,但需要在App集成 frida-gadget 共享库 预加载式(Preloaded)-在集成式的基础上,App预加载注入的脚本,成本更高测试包构建方案选型03.关键技术方案 集成式构建方案03.关键技术方案 构建流程AndroidiOS03.关键技术方案 测试工程方案设计03.关键技术方案 Pyt
4、hon API,but JavaScript debugging测试工程方案设计 语言Frida 的核心是用 C 编写的,并将QuickJS注入目标进程 JS 可以完全访问内存、挂接函数甚至调用进程内的函数Python和目标进程内运行的 JS 之间的可以通过消息(双向)通信运用 Python 和 JS 可以调用无风险的 API 进行快速开发目标进程Frida-coreQuickJSJS HOOK Pythonmsg03.关键技术方案 测试工程方案设计 Hook 函数 修改函数参数 调用函数session.create_script()函数的入参可以是一个文件路径,可以将JS脚本分离出来frid
5、a-compile src/index.ios.ts-o./agent_ios.js-c03.关键技术方案 Android 调用函数举例https:/frida.re/docs/javascript-api/#java03.关键技术方案 iOS 调用函数举例https:/frida.re/docs/javascript-api/#objc03.关键技术方案 多设备连接03.关键技术方案 测试工程方案设计03.关键技术方案 统一导航库有个大升级!Hook 导航修改的底层方法API,使其可被测试脚本调用 使用自动化流程,快速验证03.关键技术方案 做个埋点自动化验证的功能,客户端能不能配合改造一下
6、?无需客户端改造 拿到埋点信息进行自动化校验03.关键技术方案 客户端API怎么做异常测试?数据如何注入?录制请求 数据变异 注入回放03.关键技术方案 平台化方案设计技术创新点04l采用逆向hook的思路解决质量问题l解决了终端底层基础库能力校验的可测性和效率问题l无代码侵入,复用性强 l操作细节上兼容UI操作、系统API、App API操作,整体操作性更加灵活多变,支持更加深入的场景模拟和校验能力04.技术创新点价值和收益0505.价值和收益1)接口异常自动注入稳定性回归