Android防二次打包
1.伪加密
参考:http://www.52pojie.cn/forum.php?mod=viewthread&tid=322701
第一个办法: 伪加密
这个方法是在网上看到的
原地址第一个办法: 伪加密
这个方法是在网上看到的
源地址是:http://bbs.pediy.com/showthread.php?p=1195662&mode=threaded
APK在PC上面就被看作一个压缩格式文件,在手机上面它就算一个可执行格式文件。。。两种格式对它的读取要求也有区别,所以说利用这个区别来实现伪加密。。。对PC端来讲伪加密的APK没法被解包无法被反编译 但是对android系统来说 它完全不会影响正常的安装运行(对4.2以前的系统)。。。所以说伪加密能够100%防止PC端解包、查看而又不影响软件在手机上面的正常运行。。。
伪加密的原理: 读取APK的字节,找到连续4位字节标记为”P K 01 02”的后第5位字节,如果是0表示不加密,如果是1就表示加密(伪加密就强行改成1 反伪加密就是把1改成0就可以了)。。
APK在PC上面就被看作一个压缩格式文件,在手机上面它就算一个可执行格式文件。。。两种格式对它的读取要求也有区别,所以说利用这个区别来实现伪加密。。。对PC端来讲伪加密的APK没法被解包无法被反编译 但是对android系统来说 它完全不会影响正常的安装运行(对4.2以前的系统)。。。所以说伪加密能够100%防止PC端解包、查看而又不影响软件在手机上面的正常运行。。。
伪加密的原理: 读取APK的字节,找到连续4位字节标记为”P K 01 02”的后第5位字节,如果是0表示不加密,如果是1就表示加密(伪加密就强行改成1 反伪加密就是把1改成0就可以了)。。
代码就不留了,发的链接也有java代码,思路也给了。。
自己按照那个思路写的代码, 随便对一个APK进行 伪加密前和伪加密后的对比图如下:
伪加密前:
伪加密后:
伪加密在android 4.2系统发布之前是比较出名的,看到不少开发者使用他, 这种方法兼容不到4.2系统了。
这种加密方法可能也会影响上传市场,因为市场需要拆包检验权限 加密后无法被拆包 估计市场会提示无效APK文件什么的吧。。。
2.根据打完包得到签名指纹,然后上传服务器,启动时获取自身的签名指纹和服务器上正确的指纹的进行对比,确定是否修改过。