Android防作弊-2020.04.04

1.so 防调试总结:

第一、自己附加进程,先占坑,ptrace (PTRACE_TRACEME, 0, 0, 0)!
第二、签名校验不可或缺的一个选择,本地校验和服务端校验双管齐下!
第三、借助系统 api 判断应用调试状态和调试属性,最基础的防护!
第四、轮训检查 android_server 调试端口信息和进程信息,防护IDA的一种有效方式!
第五、轮训检查自身 status 中的 TracerPid 字段值,防止被其他进程附加调试的一种有效方式!

注意:一般反调试在 JNI_OnLoad 中执行,也有的是在 INIT_ARRAY 段和 INIT 段中早于 JNI_OnLoad 执行。可通过 readelf 工具查看 INIT_ARRAY 段和 INIT 段的信息,定位到对应代码进行分析。检测时间差来检测是否中间有被单步调试

2.Cydia Substrate 其原理:

框架注入 zygote 进程,采用 inline hook( 修改目标函数前N字节,跳转到自定义函数入口,
备份目标函数前N个字节,跳转回目标函数)

Xposed 原理:

替换 app_process,将需要 hook 的 java 函数替换成 JNI 函数,所有需要 HOOK 的函数
首先由 XposedCallHandler 处理,xposedCallHandler负责调用注册的 
beforeHookMethod 和 afterHookedMethod

adbi原理:

利用 ptrace 函数 attach 到一个进程上,然后在其调用序列中插入一个调用 dlopen 函数的步骤,
将一个实现预先备好的 .so 文件加载到要 hook 的进程中,最终由这个加载的 .so 文件在初始化化函数
中 hook 指定的函数。

3.xhook plt hook 原理:

读 maps,确认当前 hook 地址的内存访问权限。
如果权限不是可读也可写,则用 mprotect 修改访问权限为可读也可写。
如果调用方需要,就保留 hook 地址当前的值,用于返回。
将 hook 地址的值替换为新的值。(执行 hook)
如果之前用 mprotect 修改过内存访问权限,现在还原到之前的权限。
清除 hook 地址所在内存页的处理器指令缓存。

4.frida 检测:

 Java 遍历运行的进程列表从而检查 fridaserver 是否在运
 fridaserver 默认的 TCP 端口是 27047,可以检查这个端口是否开放。
 在内存中扫描 frida 的库特征 “gadgets”。我选择字符串 “LIBFRIDA”,它在所有 
 frida-gadget 和 frida-agent 的版本中都有出现。
(注意有些函数是自定义实现的,但是功能和 libc 中的一样,设置了系统调用的参数,执行了软中断。)

5.xposed 检测:

(1).通过 ClassLoader 的 loadClass 加载XposedHelper 来修改一些局部变量值,阻止hook.
   处理方式,通过Hook 类加载修改 加载的类名

(2).通过 代码抛出一个异常,在堆栈中,查找Xposed相关的内容,

(3).通过读取 shell 命令 /proc/pid(应用进程id)/maps 可以拿到当前上下文的 so 和 jar 列表,
     查找Xposed相关

(4). 由于Xposed的hook,是通过so修改被hook的方法为native来实现的,所以检测方也
     可以通过检测方法是否变成了native来达到检测的目的

6.Root检测:

是否含有su程序和ro.secure是否为1
ro.secure = 0,表示adb shell将以root用户身份运行,而不是shell用户。
ro.debuggable = 1或service.adb.root = 1,然后adb也将以root身份运行。

检查目录权限:
Root使某些根文件夹可读,如/ data或可写,如/ etc,/ system / xbin,/ system,
/ proc,/ vendor / bin等。运行mount命令并检查是否有任何设备使用“rw”挂载标记,
或尝试在“/ system”或“/ data”文件夹下创建文件。
尝试使用命令“ mount -o remount,rw / system ” 挂载“/ system”分区,并检查返回码。

7.双开检测:

满足同一uid下的两个进程对应的包名,在"/data/data"下有两个私有目录,则该应用被多开了
检测files目录路径
maps检测

8.模拟器检测:

模拟器的IMSI、IDS、默认文件等几个方面进行检测。
      如:  //310260000000000, /system/bin/qemu-props
基于模拟器cpu信息的检测。cpu信息看看是否包含intel、amd等字段 x86,vbox86p
可以从电池的温度和电量等信息入手,检测温度在使用过程中是否一直保持不变、
或者是电量一直是固定值并且不是百分之百等等。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值