某APP检测绕过的实战

admin 2024年10月8日00:23:51评论87 views字数 1678阅读5分35秒阅读模式

01

基本问题

1、在bilibili 7.26.1版本的apk包用frida去分析功能,以spawn模式启动应用操作frida就被干掉。

2、分析工具和环境:bilibili 7.26.1、frida 15.2.2(去除特征版本)、pixel 6 android 12

某APP检测绕过的实战

02

分析准备

Frida 的两种操作模式: spwan/attach

spwan 模式就是将启动APP的权利交由Frida来控制,采用这个模式即使APP已经启动在使用Frida注入时还是会重新启动APP,通过加上 -f 参数指定包名以spwan模式操作APP。

attach 模式是建立在APP已经启动的的情况下,Frida通过ptrace注入程序从而执行HOOK的操作。

Spwan一启动就被杀死那么就需要具体分析出是APP中的那个so文件的具体哪个函数去执行的。

03

定位检测

排查定位是APP中具体那个so在检测frida,用hook方式去hook下 dlopen函数,观察一下so的加载流程

某APP检测绕过的实战

Hook的执行结果

某APP检测绕过的实战

由so的加载流程可知,当app执行到libmsaoaidsec.so加载之后,frida进程就被杀掉了,因此对frida检测的关键点在libmsaoaidsec.so中。

接下来可以把重点放在libmsaoaidsec.so中,可以结合ida分析处理。

04

检测处理

如果有了解过so的加载流程,那么就会知道linker会先对so进行加载与链接,然后调用so的.init_proc函数,接着调用.init_array中的函数,最后才是JNI_OnLoad函数,所以我需要先确定检测点大概在哪个函数中。

使用frida hook JNI_OnLoad函数,如果调用了该函数就输出一行日志,如果没有日志输出,那么就说明检测点在.init_xxx函数中,注入的时机可以选择dlopen加载libmsaoaidsec.so完成之后。

某APP检测绕过的实战

某APP检测绕过的实战

并没有输出日志,那么说明检测的位置在JNI_OnLoad函数之前,所以我需要hook .init_xxx的函数,但这里有一个问题,dlopen函数调用完成之后.init_xxx函数已经执行完成了,这个时候不容易使用frida进行hook

某APP检测绕过的实战

这个问题其实很麻烦的,因为想要hook linker的call_function并不容易,这里面涉及到linker的自举,这里有一个取巧的办法,请看接下来的操作。

首先在.init_proc函数中找一个调用了外部函数的位置,时机越早越好

某APP检测绕过的实战

选择_system_property_get函数,接下来使用frida hook dlopen函数,当加载libmsaoaidsec.so时,在onEnter回调方法中hook _system_property_get函数,以"ro.build.version.sdk"字符串作为过滤器。

如果_system_property_get函数被调用了,那么这个时候也就是.init_proc函数刚刚调用的时候,在这个时机点可以注入我想要的代码,具体实现如下:

某APP检测绕过的实战

在获取了一个非常早的注入时机之后,就可以定位具体的frida检测点了。网上对frida的检测通常会使用openat、open、strstr、pthread_create、snprintf、sprintf、readlinkat等一系列函数,从这里下手是一个不错的选择。

我对pthread_create函数进行hook,打印一下新线程要执行的函数地址

某APP检测绕过的实战

某APP检测绕过的实战

这里面有两个线程是libmsaoaidsec.so创建的,对应的函数偏移分别是0x11129和0x10975

这两个函数都检测了frida,想要了解具体检测方法的可以自己看看,这里不再深入。

05

检测绕过

绕过的方法很简单,直接nop掉pthread_create或者替换检测函数的代码逻辑都可以,我是直接把pthread_create函数nop掉了,下面是完整代码。

某APP检测绕过的实战

某APP检测绕过的实战

至此,frida检测也就成功绕过了

某APP检测绕过的实战

本文来源:

https://bbs.kanxue.com/thread-277034.htm

原文始发于微信公众号(编码安全):某APP检测绕过的实战

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月8日00:23:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某APP检测绕过的实战https://cn-sec.com/archives/1952062.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息