Tencent / Shadow

零反射全动态Android插件框架
BSD 3-Clause "New" or "Revised" License
7.43k stars 1.3k forks source link

About ZERO Reflection #1230

Closed xuuhaoo closed 9 months ago

xuuhaoo commented 1 year ago
image
shifujun commented 1 year ago

“零反射”的噱头主要针对的是实现插件技术的关键hook方式是如何实现的。在shadow之前的实现方式大多数大量依赖反射修改系统私有域,即便是最少hook的实现也不可避免的反射修改了私有域。

shadow设计的主要目标就是规避私有API调用。因此去掉shadow中的所有反射代码也是可以正常工作的。而之前的其他技术是完全不能去掉的。

shadow中有个DynamicRuntime是真的在反射修改私有域,其目的是减少合入宿主的方法数增量。去掉它并不影响其他能力。

而你截图中的白名单注入功能,这个属于面向未来编程,应该是反射的正常使用场景。不过也可以用其他序列化技术代替,比如json应该就行。但这段逻辑引入json等文件读取显然是不必要的。所以我没有选择为了“零反射”的噱头而那样写。

igottime commented 1 year ago

Gangjing is everywhere