1.一种Android App应用资源的隐藏加固方法,其特征在于,是对代码文件中的对资源id和明文字符串分别进行加密保护的方法,资源id使用异或运算对每个id进行加密且保证每个id不会相同,字符串加密则是使用Base64加密算法对明文字符串进行加密;
资源id加密是针对代码中通过资源id查找资源文件的过程改变,代码中明文字符串针对未将字符串添加到资源文件,直接在代码中引用的字符串;
3.1首先获取到所有的.smali文件,然后对每个文件进行遍历;
3.2对于一个.smali文件,进行逐行读取,然后使用正则表达式进行匹配是否是资源id;
3.3如果匹配成功,则使用加密方法生成随机密钥对资源id进行加密,并将密钥和加密后的数字当作参数在此调用解密方法,用解密方法将该行覆盖之后,进入3.2,如果不匹配则直接进入3.4;
3.4使用正则表达式进行匹配字符串,如果匹配成功则修改,此处不使用随机密钥而直接将该字符串传递给加密字符串方法返回加密之后的字符串,然后使用以加密字符串为参数的解密字符串方法代替此行,修改完毕之后返回3.3,如果不匹配直接返回3.2;
3.5重复修改下一个.smali文件;
按照以下步骤实施:
步骤1、将加密分为资源id加密和代码中的明文字符串加密;
步骤2、反编译App文件,获取到其.smali文件夹;
步骤3、使用正则表达式来判别步骤2中.smali文件夹中的语句,并将匹配的代码使用解密方法语句进行替换;
步骤4、插入解密代码文件;
步骤5、重新编译App文件并签名;
步骤6、安装加固之后的App,然后进行正常运行。
2.根据权利要求1所述的Android App应用资源的隐藏加固方法,其特征在于:所述的步骤6中,具体包括:
6.1)对于资源id只需要在应用启动后调用解密方法返回正确的id值,然后加载对应的资源文件;
6.2)对于明文字符串,则直接调用解密方法返回正确的字符串进行显示;资源id使用异或运算对每个id进行加密且保证每个id不会相同,而字符串加密则主要是使用Base64加密算法对明文字符串进行加密。