app逆向攻防-基于stalker的bug检测

admin 2025年4月7日01:10:03评论1 views字数 918阅读3分3秒阅读模式

作者:yueji0j1anke

首发于公号:剑客古月的安全屋

字数:635

阅读时间:    5min

声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。本文章内容纯属虚构,如遇巧合,纯属意外

目录

  • 前言

  • Stalker

  • 验证

  • 总结

0x00 前言

今天在看雪上面看到一篇蛮有意思的文章

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

更多来说还是基于stalker bug的检测,笔者之前逆向还是遇到过多家厂商相关stalker检测,却没有从这个角度进行分析的,加上最近也在收集一些指针,特来复现一下

0x01 Stalker

前面一些文章发现基础原理并没有讲的太过深入浅出,有些基于特殊原因存在留白,这里就好好恶补一下啊。。

stalker是frida一个模块,本质上是基于动态重新编译的指令追踪器。会把内存中的指令复制到新开辟的一个内存进行执行。

但目前来说 stalker会对相同内存地址进行判断看是否需要进行重编译,其应该对比当前内存的指令与原始编译中的指令,而不是当前内存与缓存中的指令,从而导致bug产生

0x02 验证

敲代码就完事儿了

可以尝试两个字节码函数,比如说

uint64_tBlock_Bug_Check_one(uint64_tcount) {
returncount+100;
}

uint64_tBlock_Bug_Check_two(uint64_tcount){
returncount;
}

这里会用到相同的地址

那为了造成stalker产生bug,我们需要把相同的地址映射到内存进行字节码操作,这样才不会导致内存随机化问题从而不产生相同地址

可以参考地址

https://github.com/jiankeguyue/StalkerCheck

主动调用可以看到验证正常

app逆向攻防-基于stalker的bug检测

加入trace之后,发现其确实只会验证缓存地址而不是原始指令地址

app逆向攻防-基于stalker的bug检测

0x03 总结

目前这个检测还是蛮新颖的,不过各大厂商对stalker的检测都不同,有兴趣的小伙伴可以去参考一下

原文始发于微信公众号(剑客古月的安全屋):app逆向攻防-基于stalker的bug检测

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

发表评论

匿名网友 填写信息