发布网友 发布时间:2022-04-22 18:25
共2个回答
热心网友 时间:2022-06-24 10:20
方法/步骤
1
“Android APP二次打包”则是盗版正规Android APP,破解后植入恶意代码重新打包。不管从性能、用户体验、外观它都跟正规APP一模一样但是背后它确悄悄运行着可怕的程序,它会在不知不觉中浪费手机电量、流量,恶意扣费、*隐私等等行为。Android APP如何加密防二次打包?
2
面对二次打包不少安卓开发都有自己的防范措施,知名公司的APP几乎都是自己在程序内部做过处理防止其APP被二次打包,一旦打包后重新运行则程序自动退出。接下来,详解一下Android APP如何加密防二次打包。
3
要实现代码内部防止Android APP被二次打包首先得了解APK的机器识别原理,APK的唯一识别是依靠包名和签名来做鉴定的,类似豌豆夹的洗白白、360手机卫士等安全软件对APK的山寨识别,他们就是依赖包名来确定APK然后通过签名来确定其是否山寨。所以说自己的程序内部在启动的时候可以通过获取APK本身的签名然后和正确的签名做对比来识别自己是否被二次打包。Android APP如何加密防二次打包?
4
通过PackageManag对象可以获取APK自身的签名。
5
通过对签名的码的分解得到一串20左右的字符串,此字符串则是APK的签名的MD5值,通过获取的签名MD5值与正确的MD5值进行对比,就可以识别其APK是否被盗版。Android APP如何加密防二次打包?
END
方法/步骤2
1
下图是一些已做过保护的APP的代码块分析:Android APP如何加密防二次打包?
(1)“XX省电王“的防止二次打包的关键代码
2
(2)“XX电池管家”的防止二次打包的关键代码
3
以上两处都是smali层的代码,以上2处代码的截图都是下载量非常高的APP所做的防止二次打包的处理,其处理的代码肯定会使用到的关键代码是Android APP如何加密防二次打包?
Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature。
此方法能够起到一定的安全作用,一般的打包党面对它是无可奈何的,如果你了解一些smali语法它的作用就等于零了。
热心网友 时间:2022-06-24 10:20
防止二次打包一般会用到如下几种手段:
1. Java 代码中加入签名校验(直接修改smali文件绕过)
2. NDK 中加入签名校验(ida查看直接hex修改就可以绕过)
3. 利用二次打包工具本身的缺陷阻止打包(manifest 欺骗,图片修改后缀等等)
以上方式其实都挺容易绕过去的,希望能和大家一起从技术层面上来探讨如何防止二次打包(使用梆梆等加固服务不在讨论范围,但讨论其原理还是非常欢迎的~~)