安卓那档事05

Objection

好像是基于frida的一个整合

https://github.com/sensepost/objection

安装配置

没啥主动配置的印象,像是装frida的同时会安装的

简单使用

首先要启动frida-server,这个还是通过frida-server来进行内存通信访问的。

Frida真顶啊

注入命令

objection -g 包名 explore

使用这个命令之后会以spawn模式启动(就是由这个东西启动)

  • help:不知道当前命令的效果是什么,在当前命令前加help比如:help env,回车之后会出现当前命令的解释信息
  • 按空格:不知道输入什么就按空格,会有提示出来 - jobs:可以进行多项hook
  • 日志:objection的日志文件生成在 C:.objection

启动前就hook

objection -g 进程名 explore --startup-command "android hooking watch class 路径.类名"

一些api

  1. memory list modules

    查看内存中加载的库

  2. memory list exports so名称

    查看库的导出函数

  3. android hooking list activities

    查看内存中加载的activity

    android hooking list services

    查看内存中加载的services

  4. android intent launch_activity 类名

    启动activityservice(可以用于一些没有验证的activity,在一些简单的ctf中有时候可以出奇效)

  5. 关闭ssl校验 android sslpinning disable

  6. 关闭root检测android root disable

内存漫游

  1. 内存搜刮类实例

    android heap search instances 类名

  2. 调用实例的方法

    1. 直接调用方法

      android heap execute <handle> <function Name>

      handle 就是上面那条指令搜刮出来的Hashcode

      function name 就是方法名

    2. 对于带参数的方法

      android heap evaluate <handle>

      然后进入到写js界面。。

      clazz这个变量名就是指的调用的类

      剩下的看提示

  3. android hooking list classes

    列出内存中所有的类(结果比静态分析的更准确)

  4. android hooking search classes 关键类名

    在内存中所有已加载的类中搜索包含特定关键词的类

  5. android hooking search methods 关键方法名

    在内存中所有已加载的类的方法中搜索包含特定关键词的方法(一般不建议使用,特别耗时,还可能崩溃)

  6. android hooking list class_methods 类名

    内存漫游类中的所有方法

objectionHook

hook类的所有方法

1
android hooking watch class 类名 [--dump-args --dump-return --dump-backtrace]

args : 参数

return : 返回值

backtrace : 堆栈

hook方法

1
android hooking watch class_method 类名.方法名 [--dump-args --dump-return --dump-backtrace]

hook 类的构造方法

1
android hooking watch class_method 类名.$init

hook 方法的所有重载

1
android hooking watch class_method 类名.方法名

控制流混淆

混淆

一个控制流混淆工具:BlackObfuscator

项目地址: BlackObfuscator

有空分析一下

应对

分析控制流混淆一般来说是追踪控制流,反正混淆了,咱也读不懂(

52这篇文章是介绍了个工具:r0tracer

项目地址

其实就是一个frida脚本,大体上分析了一遍,在另一篇文章里面。

就是一个记录和hook所有的方法,调用的时候就先把一些东西打印出来,倒是学会了怎么打印出堆栈,方法还是蛮出人意料的,楽。

对于这个的对抗倒是有些想法,首先这个完完全全是直接hook的,加个反hook的都得似,感觉能在这个基础上改进,去针对一些anti-frida。

第二个不知道能不能实现?做个异常处理,就能把堆栈打印顶掉?不过它这个是基于安卓的一些异常的基类,从而获取的堆栈。不如一开始就打断frida的使用。