校验数字签名防止apkP二次打包
2014-04-26 15:56
106 查看
点评:实现这些程序后,最好用C语言写成.so库,.smali的明码实在太容易看了。。。
Android系统的开放性和免费性等特征让开发者和用户趋之若鹜,用户也渐渐习惯了Android应用的这种免费午餐,但在免费的背后却有着巨大的安全阴影。
“Android APP二次打包”则是盗版正规Android APP,破解后植入恶意代码重新打包。不管从性能、用户体验、外观它都跟正规APP一模一样但是背后它确悄悄运行着可怕的程序,它会在不知不觉中浪费手机电量、流量,恶意扣费、偷窥隐私等等行为。
面对二次打包不少公司都有自己的防范措施,知名公司的APP几乎都是自己在程序内部做过处理防止其APP被二次打包,一旦打包后重新运行则程序自动退出。接下来,我就来详解一下如何防止APP被二次打包。
要实现代码内部防止APP被二次打包首先得了解APK的机器识别原理,APK的唯一识别是依靠包名和签名来做鉴定的,类似豌豆夹的洗白白、360手机卫士等安全软件对APK的山寨识别,他们就是依赖包名来确定APK然后通过签名来确定其是否山寨。所以说自己的程序内部在启动的时候可以通过获取APK本身的签名然后和正确的签名做对比来识别自己是否被二次打包。
通过PackageManag对象可以获取APK自身的签名。
通过对签名的码的分解得到一串20左右的字符串,此字符串则是APK的签名的MD5值,通过获取的签名MD5值与正确的MD5值进行对比,就可以识别其APK是否被盗版。
下图是一些已做过保护的APP的代码块分析:
上图是“XX省电王“的防止二次打包的关键代码
上图是”XX电池管家”的防止二次打包的关键代码
以上两处都是smali层的代码,以上2处代码的截图都是下载量非常高的APP所做的防止二次打包的处理,其处理的代码肯定会使用到的关键代码是
Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature。
此方法能够起到一定的安全作用,一般的打包党面对它是无可奈何的,如果你了解一些smali语法它的作用就等于0了。
针对目前安卓应用市场中山寨APP泛滥的现状,广大APP开发者如何保护自身开发正果的唯一性与安全性呢?国内首家权威APP安全服务平台—爱加密 推出免费APP加密保护服务,通过apk加密加固杜绝反编译,二次打包的出现,有效防止了山寨APP的出现与传播。
Android系统的开放性和免费性等特征让开发者和用户趋之若鹜,用户也渐渐习惯了Android应用的这种免费午餐,但在免费的背后却有着巨大的安全阴影。
“Android APP二次打包”则是盗版正规Android APP,破解后植入恶意代码重新打包。不管从性能、用户体验、外观它都跟正规APP一模一样但是背后它确悄悄运行着可怕的程序,它会在不知不觉中浪费手机电量、流量,恶意扣费、偷窥隐私等等行为。
面对二次打包不少公司都有自己的防范措施,知名公司的APP几乎都是自己在程序内部做过处理防止其APP被二次打包,一旦打包后重新运行则程序自动退出。接下来,我就来详解一下如何防止APP被二次打包。
要实现代码内部防止APP被二次打包首先得了解APK的机器识别原理,APK的唯一识别是依靠包名和签名来做鉴定的,类似豌豆夹的洗白白、360手机卫士等安全软件对APK的山寨识别,他们就是依赖包名来确定APK然后通过签名来确定其是否山寨。所以说自己的程序内部在启动的时候可以通过获取APK本身的签名然后和正确的签名做对比来识别自己是否被二次打包。
通过PackageManag对象可以获取APK自身的签名。
通过对签名的码的分解得到一串20左右的字符串,此字符串则是APK的签名的MD5值,通过获取的签名MD5值与正确的MD5值进行对比,就可以识别其APK是否被盗版。
下图是一些已做过保护的APP的代码块分析:
上图是“XX省电王“的防止二次打包的关键代码
上图是”XX电池管家”的防止二次打包的关键代码
以上两处都是smali层的代码,以上2处代码的截图都是下载量非常高的APP所做的防止二次打包的处理,其处理的代码肯定会使用到的关键代码是
Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature。
此方法能够起到一定的安全作用,一般的打包党面对它是无可奈何的,如果你了解一些smali语法它的作用就等于0了。
针对目前安卓应用市场中山寨APP泛滥的现状,广大APP开发者如何保护自身开发正果的唯一性与安全性呢?国内首家权威APP安全服务平台—爱加密 推出免费APP加密保护服务,通过apk加密加固杜绝反编译,二次打包的出现,有效防止了山寨APP的出现与传播。
相关文章推荐
- 校验数字签名防止 apk 被二次打包 - Java层校验(大众点评为例)
- Android防止APK被反编译和二次打包
- Unity中针对Android Apk的签名验证(C#实现),防止二次打包
- Android 判断签名MD5——防止二次打包
- Android APP如何防止二次打包
- Android APP如何防止二次打包------对比签名
- 如何防止 Android 应用被二次打包?(转自知乎)
- android加固apk包,并防止apk被二次打包
- 获取应用程序的签名,防止二次打包
- 【分享】Android APP如何防止二次打包
- 总结防止APK被工具反编译、二次打包等
- 如何防止二次打包
- NDK进阶 应用签名校验 防止so库被二次打包
- APP如何防止二次打包
- Android 应用防止被二次打包指南
- Android通过签名验证防止二次打包
- 如何防止APP被二次打包
- Android 应用防止被二次打包指南
- Android APP如何防止二次打包
- Android 应用程序反逆向、反篡改、防止二次打包以及目前各大主流安全平台加固方案对比相关博客汇总