-
-
[原创]Zygisk注入器 - 动动手指轻松注入并隐藏你的SO文件
-
-
[原创]Zygisk注入器 - 动动手指轻松注入并隐藏你的SO文件
作者在去年发布了Zygisk注入模块的实现,成功实现了模块的自动注入和Riru隐藏功能。
然而,每次更换目标应用都需要重新编译,操作繁琐,导致用户采用率不高。为了解决这个问题,作者对项目进行了全面重构,带来了以下改进:
项目已完全开源,包含面具模块、管理APP以及所有打包脚本,并配置了GitHub CI自动构建。欢迎各位开发者贡献代码,提交PR。
项目地址:379K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6B7K9i4q4A6N6e0t1H3x3U0u0Q4x3V1k6K9P5h3N6A6M7$3E0Q4x3X3c8y4P5f1W2F1K9X3g2U0N6r3!0J5
特别感谢以下项目和开发者(按时间顺序):
如果对自定义linker感兴趣的大佬,推荐soLoader作者的文章6d8K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6&6N6i4g2C8K9g2)9J5k6h3y4G2L8$3I4Q4x3V1j5J5x3o6t1#2i4K6u0r3x3o6k6Q4x3V1j5I4y4g2)9J5c8V1y4#2M7%4c8G2L8f1I4A6L8X3E0W2M7W2)9J5c8R3`.`.
前往 GitHub Release 页面下载最新版本的面具模块
本教程以 v1.1.0 版本为例
下载模块文件(如下图所示):

安装到手机,支持所有面具模块相关的APP(如 KernelSU、APatch 等)
注意:如果您的APP不支持Zygisk注入,请额外安装 Zygisk-Next 模块,否则可能导致注入失败。
进入"SO文件管理",点击"增加SO文件":

选择要注入的SO文件:

本教程使用以下两个SO文件进行测试:
提示:后文将解释为什么自定义linker无法注入 libgadget.so
。
选择SO后,系统会询问是否删除原文件:

设计理念:此功能可防止某些APP扫描tmp目录中的SO文件进行风控检测。
添加成功后,SO管理界面会显示已添加的文件:

本教程以珍惜大佬的Hunter为例演示配置过程。
点击空白处,配置注入参数:

保存配置后,开启注入开关:

打开目标APP,查看日志输出:

成功打印"我已经成功加载",表明注入成功。
切换到gadget进行测试:

特性:本注入模块支持同时注入多个SO文件。

注入成功:

说明:由于使用的Hunter版本较旧,可能无法检测到注入。建议使用新版本进行测试。
测试Riru Hide功能:

提示:修改配置后,建议先关闭再开启注入开关,确保新配置生效。

Riru Hide成功生效。
测试自定义Linker加载:

加载成功:

参考项目中的 CI配置文件。
如果您fork了本项目,只需在本地修改代码并push,云端将自动编译。
使用项目提供的 build_all.sh
脚本进行编译。
环境要求:需要Java 17环境。
因为gadget的init_array里面其中有一个函数,尝试使用maps和soinfo获取到自己模块的信息,防止递归调用。
但是自定义linker的soinfo和内存段都是自己分配的,导致gadget找不到自己,发生了断言失败,我们可以简单的去掉断言,但是可能造成其他bug,后续作者会和小佳一起修复。
当然还有一种复杂的方法,就是用注入的so的soinfo,替换成要注入的so的,多见于360等壳子,等后续作者会实现。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2小时前
被棕熊编辑
,原因: