android APP 二次打包防护的原理是什么?

瘦瘦吉祥 2015-04-01 05:35:31
android APP 二次打包防护的原理是什么?,请教技术大咖
...全文
354 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
瘦瘦吉祥 2015-04-07
  • 打赏
  • 举报
回复 1
大多数apk为了防止被破解后二次打包都做了防二次打包保护,他的原理是:通过获取apk签名信息的MD5码,和正版apk签名信息的MD5码对比的方式,对比步骤可以放在java层、so库中、或服务端。其中,正版MD5码都是写死的。但只需要找到java层对比的地方,修改写死的MD5的地方就可以,可以修改MD5码,也可以使对比直接返回true即可。

因为apk可以被很容易的反编译看到java层源码(so库源码也可以看到,需要用到收费软件),而签名校验必须获取签名信息,而获取签名信息必须有context对象。这就造成了无论我们把对比放在任何地方,在java层都可以通过伪造PackageManger对象。或者重写activity的getPackageManager的方式,修改获取签名信息的值。使获取到的签名信息和正版签名信息相同。这样就破解了我们的签名验证。所以说,因为源码暴露,二次打包也必不可免了。

可以介绍一种防破解和二次打包的方式,就是对apk进行加固保护,下图是对一个apk进行加固保护前后的代码结构对比,能看到右侧截图中加固后的代码文件都已经被隐藏起来,只保留了加固后的保护程序,使破解者在反编译时无法找到源程序真正的代码,也就没法进行破解和二次打包的工作

791

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧