1.一种基于smali代码混淆的Android应用保护方法,其特征在于,包括以下步骤: 步骤I,反编译待保护的应用UnProtect.apk,得到smal i文件,针对smal i文件中的指令进行混淆,得到混淆后的smali文件,对混淆后的smali文件重新编译形成可执行文件classesl.dex; 步骤2,在可执行文件classesl.dex中,提取被混淆的指令所在方法中的所有字节码,并将所有字节码存储在存储结构newcode中,将可执行文件classes 1.dex中被混淆的指令所在方法中的所有字节码用O填充,形成一个新的可执行文件classes2.dex ; 步骤3,利用动态加载技术加载可执行文件classes2.dex,从Android系统中的DexFi Ie系统类中获取可执行文件classes2.dex的加载地址,根据加载地址,解析可执行文件classes2.dex获取被混淆的指令所在方法的内存地址,然后将存储在存储结构newcode中的字节码填充到内存地址的空间中;形成一个保护后的应用Protected.apk。
2.如权利要求1所述的基于smali代码混淆的Android应用保护方法,其特征在于,所述步骤I中的smali文件中的指令,指的是smali文件中,将两个数值型变量存储在两个相邻的寄存器中的两条指令,以及关键函数调用指令。