聊聊Xposed检测
转:http://www.360doc.com/content/19/0601/18/29401987_839659591.shtml
| 这两天看到有部分人称微信大规模封号,主要被封的是Xposed和各类微信插件的使用者,部分人说自己只是安装了Xposed,但并未使用微信相关的任何插件也被封了。由此有人开始说微信侵犯用户隐私,随意扫描用户的手机等等。 本人一直是Xposed的使用者,主要是用来使用自己写的扒Android8.1上“吉字节”等单位改回“GB”的插件。另外也有使用修改微信UI以及防撤回的与微信相关的插件,但并未受到此次封号的影响。普通用户不太清楚开发方面的事,以为检测Xposed框架是件很复杂的事,今天就来聊聊Xposed的简单检测方法。 检测Xposed重写了zygote,zygote启动时会加载Xposed相关组件,因此由zygote孵化出来的每个进程都会有Xposed的相关代码。根据这一原理,我们可以通过以下几种方式检测。 Xposed InstallerXposed利用Xposed Installer这一App安装Xposed和管理模块,其包名为 堆栈信息抛出一个异常并捕获,将堆栈信息打印出来。
可以看到每个App是先执行的XposedBridge.jar的main方法,之后再调用的Zygote的main方法。通过检测堆栈中是否包含 mapsXposed的组件需要被加载,必然在内存空间留下痕迹。通过遍历
更精准的检测以上方法只能检测用户是否安装使用了Xposed,这是一个风险点,但我们并不能因为用户使用了Xposed就将其封禁。通过Xposed的实现方式,我们可以采取更精准的方式去检测。 在
另一个更为精准的方式见这篇文章,Xposed将需要hook的字段、方法、构造函数等缓存在了几个HashMap中,通过遍历这几个看是否有与自己相关的内容就可知道自己是否有被hook了,具体的原理和方法可以看一下这篇文章。 反检测与反反检测上面提到的那些检测方法实际上都可以被绕过的,hook掉调用的那些检测方法并返回虚假的信息就可以轻松绕过。例如上文提到检测maps文件,那么我们可以需要类似下面这样的伪代码遍历maps文件的每一行并判断是否包含Xposed的相关组件。
那么可以hook 面对这些反检测的手段,第一我们可以增加检测的维度,加大绕过检测的难度,从Java层和C层进行多方面的检测。第二我们可以设置一些蜜罐,例如面对上面这种反检测的手段,如果我们调用 结语攻防真的很无聊。 |
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
