插件热更新


#1

突然想实现插件热更新
不知道那个知道有没有这样功能


#2

安卓可以的


#3

我的IOS 尴尬了


#4

这不简单。。。


#5

Library/MobileSubstrate/DynamicLibraries/

有个思路更新这个目录下 插件.dylib 文件 但是要重新app才能使用 不知道有没有不重启 让app重新加载这个.dylib文件


#6

得有这个权限往Library/MobileSubstrate/DynamicLibraries/写文件?我看是root权限

之前腾讯管家有个通过locationd从沙箱内获取root权限的漏洞,从app往手机里安装插件。不过是iOS9的


#7

这个是我 一个思路
不知道可行性怎么样
之前没考虑到权限
我是通过 IFunBox 手动替换文件 发现app重启后就更新好了


#8

这哪用得到漏洞,服了


#9

眼光不要那么局限,真的很简单


#10

这个问题可以分成两种情况,第一种是直接加载插件,解决方案很简单,就是ctor里自己新建一个新的线程下载新的dylib,解压到沙盒的documents里然后自己dlopen。取决于设备的越狱版本可能会需要做一些额外的操作比如说给自己新增的dylib做点什么patch,这部分具体看相应阅读的文档就可以了


#11

第二种么就是自己的实际dylib已经加载好了,需要热取消原来的hook然后load新的hook。这也很简单。一共分成三种类型。

fishhook和oc方法hook都都属于替换指针类型hook,自己theos group一下,在init对应的group之前保存对应的原始指针,需要热更新的时候先还原回去再热加载即可

还剩下一个mshookfunction的inline hook,这部分hook之前保存原始的函数开头,热更新版插件前还原回去就可以了


#12

谢大佬思路 我会好好学习 研究的