Android RePlugin插件的安全与签名校验

作为一家安全公司旗下的开源项目,其“安全性”是作为其重点之一来考虑的。曾经有几个App在使用动态加载Dex方案(非RePlugin)时,被爆出有可能携带“病毒”,经追查发现是由于没有对外来的Dex和Apk做“校验”导致。所以说,一旦不做校验,则不排除恶意人会劫持DNS或网络,并通过网络来下发恶意插件,对您的应用造成很不好的影响。

更多精彩内容请看 web前端中文站
www.lisa33xiaoq.net 可按Ctrl + D 进行收藏

Android RePlugin插件的安全与签名校验

若开启此开关,则一旦签名校验失败,则会在Logcat中提示“verifySignature: invalid cert”,且install方法返回null。

此外,出于性能考虑,内置插件无需做“签名校验”,仅“外置插件”会做。

要打开签名校验也是非常简单的。只需两步:

第一步:打开开关

例如,若您继承RePluginApplication,则请在创建 RePluginConfig 时调用其 setVerifySign(true) 即可。

当然,更推荐的做法是传递 !BuildConfig.DEBUG 参数。这表示:若为Debug环境下则无需校验签名,只有Release才会校验。以下是具体用法:

 @Override protected RePluginConfig createConfig() {  RePluginConfig c = new RePluginConfig();  c.setVerifySign(!BuildConfig.DEBUG);  ...  return c; }

如果您是“非继承式”,则需要在调用 RePlugin.App.attachBaseContext() 的地方,传递RePluginConfig,并设置setVerifySign即可。以下是具体用法:

 RePluginConfig c = new RePluginConfig(); c.setVerifySign(!BuildConfig.DEBUG); ... RePlugin.App.attachBaseContext(context, c);

自 RePlugin 2.1.4 版本开始,默认将“关闭”签名校验,之前默认为“开启”。

第二步:加入合法签名

光是打开其开关还是不够的,还应该将“合法的签名”加入到RePlugin的“白名单”中,可调用 RePlugin.addCertSignature() 来完成。例如:

 // Add signature to "White List" RePlugin.addCertSignature("379C790B7B726B51AC58E8FCBCFEB586");

其中,其参数传递的是签名证书的MD5,且去掉“:”’。
请务必去掉“:”,且不要传递SHA1或其它非签名MD5内容
获取签名的做法有很多,比较推荐的是使用keytool工具,可参见此文档的介绍。
出于性能考虑,RePlugin不会自动将“主程序签名”加入进来。如有需要,建议您自行加入。

最佳实践

以下为360手机卫士或其它合作App采用的设计,可供您参考:

【注:本文源自网络文章资源,由站长整理发布】

  • 强烈建议开启安全和签名校验
  • 若在调用 install 方法前就已对APK做了校验(例如,手机卫士是 云控加密MD5 + V5签名校验),则可关闭,以避免重复校验
  • 请尽量不要使用和“主程序”一样的签名,而是单独创建一个
0
如无特殊说明,文章均为原作者原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论

Hi,请填写昵称和邮箱!

取消评论
代码 贴图 加粗 链接 删除线 签到