Rad*_*scu 8 api proxy android android-security
当您在Android项目中导入第三方API(数据包依赖注入,生成的库,源代码等)时,您会认为它们的行为与广告一样.大多数时候代码不是开源的,它是混淆的或只是编译.
有没有办法控制此API对重要系统资源(如网络,联系人,视频和音频,位置)的访问?
最好的方法是为proxy他们提供系统资源.这将带来以下好处:
我未能找到如何实现这样的解决方案,因为用户定义的活动和服务无法控制第三方API的服务,甚至无法阻止它们直接调用任何Android公共接口.
该解决方案不应要求root访问权限,因为您不希望将此控件置于您自己的应用程序的边界之外.
这个问题的内容与几个问题相关联,这些问题解决了这个广泛问题的特殊性(内容提供者的日志数据,网络请求 - 让我在研究答案的同时考虑这个问题)
注意:简短的答案是否定的,但是一个人可以有足够的创造性(可能会针对本机级别的黑客可能会解决此问题 - idk)
在名为 com.myproxies 的包中为您想要保护的所需 Android 资源构建代理类(例如 MediaRecorder、SensorManager、Camera、java.net.HTTPURLConnection)。在代理中,您需要实现该类的所有公共方法正在嘲笑,您需要实现逻辑以允许访问(转发到适当的方法)或拒绝。一个有用的步骤是检查该方法的调用者。
如果您计划导入源代码,请重构代码以将包更改为您的代理(proguard 可以帮助您完成此操作)。
如果您使用的是库,请获取Jar Jar Links,这是一个实用程序,可以轻松地重新打包 Java 库并将它们嵌入到您自己的发行版中,并将包名称在内部更改为包中将充当代理的类的名称。
如果你使用的是Maven或Gradle包依赖注入,你也可以尝试导入Jar Jar Links并在编译时进行包重构(不太确定可以做到)
不幸的是,正如我自己所经历的那样,破坏 API 是非常容易的,并且涉及大量的体力劳动。