Android三大框架对比

Frida,Xposed,SubstrateCydia这三个Hook神器的区别和优缺点:

Xposed的优缺点

优点:在编写Java层hook插件的时候非常好用,这一点完全优越于Frida和SubstrateCydia,因为他也是Android项目,可以直接编写Java代码调用各类api进行操作。而且可以安装到手机上直接使用。

缺点:配置安装环境繁琐,兼容性差,在Hook底层的时候就很无助了。

Frida的优缺点

优点:在上面我们可以看到他的优点在于配置环境很简单,操作也很便捷,对于破解者开发阶段非常好用。支持Java层和Native层hook操作,在Native层hook如果是非基本类型的话操作有点麻烦。

缺点:因为他只适用于破解者在开发阶段,也就是他没法像Xposed用于实践生产中,比如我写一个微信外挂用Frida写肯定不行的,因为他无法在手机端运行。也就是破解者用的比较多。

SubstrateCydia的优缺点

优点:可以运行在手机端,和Xposed类似可以用于实践生产中。支持Java层和Native层的hook操作,但是Java层hook不怎么常用,用的比较多的是Native层hook操作,因为他也是Android工程可以引用系统api,操作更为方便

缺点:和Xposed一样安装配置环境繁琐,兼容性差。

总结

以上这三个工具可以说是现在用的最多的hook工具了,总结一句话就是写Java层Hook还是Xposed方便,写Native层Hook还是Cydia了,而对于破解者开发那还是Frida最靠谱了。写外挂最难的也是最重要的不是
写代码而是寻找hook点,也就是逆向分析app找到那个地方,然后写hook代码实现插件功能。

frida install

pip install frida-tools
下载frida-server
https://github.com/frida/frida/releases

测试是否安装成功

在terminal中运行cat命令

upload successful

新开terminal,运行以下代码

import frida

def on_message(message, data):
    print("[on_message] message:", message, "data:", data)

session = frida.attach("cat")

script = session.create_script("""
rpc.exports.enumerateModules = function () {
  return Process.enumerateModules();
};
""")
script.on("message", on_message)
script.load()

print([m["name"] for m in script.exports.enumerate_modules()])

输出类似如下信息,即说明安装成功

[u'cat', u'libSystem.B.dylib', u'libcache.dylib', u'libcommonCrypto.dylib', u'libcompiler_rt.dylib', u'libcopyfile.dylib', u'libcorecrypto.dylib', u'libdispatch.dylib', u'libdyld.dylib', u'libkeymgr.dylib', u'liblaunch.dylib', u'libmacho.dylib', u'libquarantine.dylib', u'libremovefile.dylib', u'libsystem_asl.dylib', u'libsystem_blocks.dylib', u'libsystem_c.dylib', u'libsystem_configuration.dylib', u'libsystem_coreservices.dylib', u'libsystem_darwin.dylib', u'libsystem_dnssd.dylib', u'libsystem_info.dylib', u'libsystem_m.dylib', u'libsystem_malloc.dylib', u'libsystem_networkextension.dylib', u'libsystem_notify.dylib', u'libsystem_sandbox.dylib', u'libsystem_secinit.dylib', u'libsystem_kernel.dylib', u'libsystem_platform.dylib', u'libsystem_pthread.dylib', u'libsystem_symptoms.dylib', u'libsystem_trace.dylib', u'libunwind.dylib', u'libxpc.dylib', u'libobjc.A.dylib', u'libc++abi.dylib', u'libc++.1.dylib', u'dyld']

Refer

https://blog.csdn.net/jiangwei0910410003/article/details/80372118

https://www.frida.re/docs/home/



tools      android android hook android frida

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!