一种基于Dex加载器的Android应用软件加固保护方法与流程

文档序号:11156078阅读:来源:国知局

技术特征:

1.一种基于Dex加载器的Android应用软件加固保护方法,其特征在于,包括以下步骤:

S1:解包原应用Apk文件,得到AndroidManifest.xml,classes.dex文件以及assets,META_INF,libs文件夹;

S2:生成随机密钥KEY,使用随机密钥KEY对Apk中的Dex文件使用128bit的AES算法加密,生成密文文件Reinforce.dex;

S3:将Reinforce.dex移动到在assets文件夹中保存,图示删除classes.dex明文文件;

S4:替换加密核心库libcorn.so中Key密钥区域,并将库文件libcorn.so并保存在libs文件夹中;

S5:将壳源码编译成classes.dex文件,并将壳文件dex放在根目录下替代原程序的classes.dex;

S6:将Manifest中程序入口修改为壳程序具体修改方法为:

a)<application>标签下的android:name属性值改为壳程序名称;

b)建立标签<meta-data>,在<meta-data>标签下添加属性android:name和android:value;

c)将android:name的值设置为APPLICATION_CLASS_NAME;后者的值设置为原<application>标签下android:name属性的值,若该原始值不存在,则取系统的缺省程序入口android.app.Application;若该原始值以“.”开头,则在其前加上包名取完成路径;

S7:删除原apk签名信息META-INF;

S8:用apktool打包文件夹,用自己的密钥对新打包的apk进行签名;

经过以上的步骤,加固完毕,生成了一个全新的apk文件,加固后的应用和加固前的应用相比,asssts文件家中多了加密Dex文件,classes.dex是替换的壳文件,并且在lib库中多了用于加载解密的核心so库。

2.如权利要求1所述的基于Dex加载器的Android应用软件加固保护方法,其特征在于,还包括以下步骤:

S9:加固壳应用启动,壳程序中加载核心so库文件libcorn.so;

S10:从libcorn.so的密钥区域恢复出密钥KEY。

S11:调用libcorn.so的解密函数解密assets文件夹中的Dex文件到内存,得到一个字节数组byte[];

S12:使用自定义的Native层的DexClassLoader调用libdvm.so中接口Dalvik_dalvik_system_DexFile_openDexFile_bytearray()装载上一步得到的byte数组并得到一个标记dex的cookie值;

S13:调用libdvm.so中接口

Dalvik_dalvik_system_DexFile_defineClassNative,根据上一步得到的cookie值加载原程序;

S14:将系统中运行的应用信息状态信息替换为原应用,将程序的控制全交还给原应用,实现原应用程序的正常启动。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1