九玖云网络logo

17729095965
您的当前位置:主页 > 新闻动态

App如何通过代码混淆和程序加固加壳来实行完整性保护?

时间: 2018-05-10

西安app制作

App完整性保护可以通过代码混淆和程序加固加壳处理两种方式来防止App被篡改和盗版。


(1)代码混淆

从代码混淆工作上,尽可能混淆更多的核心代码,保护好客户端的源代码;添加 Android安装包APK的完整性校验,防止恶意客户端替换、篡改客户端程序。

对于重打包攻击,目前可以采用签名检查、文件校验、代码混淆以及源码加壳的方式来进行保护。众所周知,Java字节码反编译较为容易。因此,常使用软件开发工具集SDK里面的 Proguard工具对 Class文件进行混淆处理,使得代码中的类名、方法名与变量名置换混淆的同时,对字节码进行优化处理,缩减体积。目前,国内外的混淆工具非常多,按其技术原理可具体分为数据混淆、控制混淆、符号混淆、预防性混淆等。上述 Proguard便属于符号混淆然而,混淆处理过的代码虽说晦涩难懂,但资深攻击者仍然可分析出其逻辑结构,并进行代码逆向。因此,对程序进行加固加壳处理就显得很有必要。


(2)加固加壳处理

前,国际上较为有名的加壳工具有Dex- Guard等,而国内安全厂商提供的加壳加固服务也较为优秀。此类方案大多利用加密、NDK、封装类多项技术,通过自定义 Class-- oader来动态加载已被加密的JAR文件。经过加固方案处理过的App文件结构清晰,但整体逻辑被很好地保护,有效地实现了App的加固与加密。此外,加固对App的性能与稳定性影响很小,能够保证移动App的用户体验为支付客户端增加代码完整性验证。如果代码完整性无法保证,虽然不会直接泄露敏感信息,但可能会导致客户端被植入恶意软件,带来间接风险。为了防范恶意病毒对客户端代码的修改和破坏,需要在客户端中加入代码完整性验证机制。在客户端代码发布前用特定的密钥对其进行签名,同时在客户端的启动代码段中增加验证签名的逻辑代码。这样,客户端每次启动时,都会执行客户端代码的完整性验证,如果验证失败,则会提醒用户重新下载或者更新客户端。同时,完整性验证相关的公钥等敏感数据可以在编译过程中利用混淆机制进行妥善保护。

本文章由西安APP制作公司-九玖云网络为你提供,转载请声明。


陕ICP备18017335号-1版权所有