Frida&反调试&反反调试
zsk Lv4

操作Frida的两种模式:命令,rpc

Frida两种操作APP模式:spawn,attach

attach:应用运行中hook,有壳也是没问题的
spawn:创建进程时就hook,有壳的话就不行

反调试Frida

1.查看/data/local/usr是否firda文件
2.端口20742是否开启
3.进程中是否有frida
4.检测内存trate是否开启,因为frida调试会显示true,解决方法:使用spawn模式hook检测trate的方法,返回false

三板斧:

  1. 先hook、看参数和返回值:定位:命令行
  2. 再构造参数、主动调用:利用:命令行
  3. 最后配RPC导出结果:规模化利用:PYTHON

作弊检测

1.检测是否存在危险APP包名

主要检测hook框架,模拟点击工具,xposed,magisk,supersu等root工具

2.一些设备常规信息,比如电量状态,usb状态,屏幕亮度,地理位置,wifi或者sim卡信息,ip,mac等。

一般批量操作或者抹机操作的时候这些值更改难度和成本比较大,所以这些指标能伪造会大大降低被风控

3.APP加壳

4.手机系统usr/local/tmp下是否有frida,端口27042是否开着,TracerPid值是否在调试状态(京东9.22)

5.参数签名、参数加密,把加密参数放在native层,native层ollvm编译

6.异常上报sdk

异常上报sdk一般记录运行时所有的异常情况,并且会记录设备指纹,通过这些也能检测到作弊的一些设备。

7.私有网络协议、protobuf等协议、私有网络证书、反代理抓包

目前比较流行protobuf协议替代json,还有一些私有TCP/Socket协议,这些协议不可直接读,需要一个解析工具或者分析还原。私有网络证书需要证书密钥配合代理抓包工具才能抓包分析,这种其实难度在于找到证书密钥和判断是否用了私有证书,一般聊天APP的IM协议常用。还有反代理抓包,比如集成OkHttp框架等的时候用Proxy.NO_Proxy来防止抓包。

反反作弊方法及思路

1.搜集设备指纹

如数美易盾或者一些大的app都会内嵌搜集设备指纹的模块,通过设备指纹来确定设备的唯一性,如imei、android_id、mac、其他设备信息结合起来就能变成一个唯一的标志。

2.搜集IP、MAC地址、蓝牙MAC、WIFI等网络指纹

大量的搜集后跟其他搜集的信息结合并且不断地完善代理ip和黑ip、mac库,就能不断地能识别作弊源头。

3.地理位置、下载渠道、授权登录

地理位置和ip是否对应、基站信息是否对应、或者设备型号跟下载渠道对应、一般小米手机的软件大部分应该小米商城下载的,比如微信授权登录,QQ授权登录等、如果模拟授权登录需要破解其他给权的APP的一些协议。



反反作弊工具和策略

1.逆向工具

  • java:dex2jar,jadx,jeb,android-killer等等很多
  • so文件:IDA,jeb,Gidra
  • js:其实nodejs加谷歌或者火狐就能搞定
  • 其他:unicorn,unidibug等基于qemu虚拟机的工具

2.抓包工具

  • Charles、Fillder:这两个其实差不多,用于http、websocket等应用层抓包
  • WireShark:各种协议都能支持,需要更深入的网络协议技术基础
  • BurpSuite:可以开发一些插件,会开发就各种神操作把。

3.hook框架

  • xposed:用户比较多,尤其云控、群控、那些化妆品,教育类、保险等销售类的都在用,市场规模大。
  • frida:一般开发者使用的多,快,无需重启,会js就会玩吧。
  • cydia:hook Native层的时候多一点,老开发者用的多。
  • inlinehook,xhook:这两个类似,inlinehook多用于hook b跳转的,xhook多用于系统函数。
  • magisk:安卓8以上xposed或者其他一些证书安装等工具都基于这个,这个其实未来深入研究的东西。4.模拟点击
  • uiautomator :很多模拟点击软件基于这个,跟xposed结合开发比较合适,理解安卓开发的入门比较简单。

5.行业难度

  • ollvm混淆:逆向行业目前应该最头疼的就这个吧,主要原理时if-else改成while(true){switch() case:}了,但是逆向成本变高了,并且各种延申的东西越来越多,需要经验和技术积累才能100%还原或破解。

机器学习风控策略:这个没有多年经验或者没有相当长的时间去摸索或者没跟班一个APP的成长的话很难对应,并且大部分都是通过养号,养设备等方式去对应,还有的是破解协议,并且伪造大量的设备信息,通过IP代理池,卡商和打码平台等第三方服务来维持。不过随着法律的完善和APP自身的风控体系健全对应成本越来越高,现在很难实现大批量账号登录注册。

检测是否root

https://github.com/sensepost/objection/blob/e7eb1d9b769edf6a98870c75a6d2a6123b7346fd/agent/src/android/root.ts
通过命令行输入su看是否有返回

image

 评论