Home avatar

di da di! di da di!

Ollvm混淆与反混淆: Goron编译使用

很多App实现的定制ollvm框架中都有goron框架的影子,或多或少的借鉴了它的功能,包括

  • 间接跳转,并加密跳转目标(-mllvm -irobf-indbr)
  • 间接函数调用,并加密目标函数地址(-mllvm -irobf-icall)
  • 间接全局变量引用,并加密变量地址(-mllvm -irobf-indgv)
  • 字符串(c string)加密功能(-mllvm -irobf-cse)
  • 过程相关控制流平坦混淆(-mllvm -irobf-cff)

想要了解怎么针对这些混淆功能完成去混淆,势必要先对其混淆过程有所了解,那么第一步就是对goron框架的编译使用

Frida调试环境搭建

从上手难度上来说frida可以说是开箱即用,几乎没有学习成本,对于大多数使用者来说,任何一个App都可以直接使用一个js脚本搞定。但是当面对繁多的App,如何将这种分析工具进行模块化拆分是需要好好思考思考的,直接使用js来做不太现实,而解决方案是ts+npm,优势在于

  • 静态类型系统:提供静态类型检查,编译时即可发现类型错误,提升代码健壮性和可维护性
  • 模块化管理:通过类型系统实现模块间的契约式开发,适用于大型项目管理

frida接入ts开发可以参考frida-agent-example,使用方式也很简单,参考