一种防止安卓应用程序被反编译的系统的制作方法

文档序号:25821726发布日期:2021-07-09 14:57阅读:来源:国知局

技术特征:
1.一种防止安卓应用程序被反编译系统,其特征在于,包括预设设置的dex解析及编辑程程序、资源文件解析及编辑程序,混淆文件名生成程序,处理器和存储有计算机程序的存储器,当所述计算机程序被处理器执行时,实现以下步骤:步骤d1、获取待处理的apk文件中的资源文件,所述资源文件为包括目标包名信息的文件,调用dex解析及编辑程序从所述资源文件中获取目标包名信息,调用资源文件解析及编辑程序从所述资源文件中获取资源清单列表;步骤d2、基于所述目标包名信息从所述待处理的apk文件中获取目标java文件,解析所述目标java文件,获取第一资源信息表,所述第一资源信息表的字段包括变量名称和int值,所述变量名称表示该字段在代码中的名称,所述int值表示资源id;步骤d3、调用所述资源文件解析及编辑程序解析所述资源文件,获取第二资源信息表,所述第二资源信息表的字段包括资源id以及与资源id对应的资源字符串或资源文件路径字符串;步骤d4、调用所述混淆文件名生成程序为所述第二资源信息表中每一资源文件路径字符串生成对应的目标混淆文件名;步骤d5、获取所述待处理的apk文件对应的资源目录,基于所述第二资源信息表中的每一资源文件路径字符串检索所述待处理的apk文件对应的资源目录,获取所述第二资源信息表中所有获取资源文件路径字符串对应的目标资源目录;步骤d6、遍历所述第二资源信息表、目标资源目录、待处理的apk文件和目标java文件,将其中所有的资源文件路径字符串修改为对应的目标路径字符串。2.根据权利要求1所述的系统,其特征在于,还包括预设字母表,所述预设字母包括将a

z26个字母随机打乱顺序后得到字母列表,所述字母列表中的字母从0

25依编号,所述混淆文件名生成程序中设置有两个整型数字int1和int2,所述int1和int2代表当前待混淆的资源文件路径字符串id,所述int1和int2配置为26进制数,所述int1和int2的初始值对应的十进制数为0,设置基础目录名称和预设分隔符,int1和int2最长位数设置为4,int1或int2对应的最大10进制数为26^4

1=456975。3.根据权利要求2所述的系统,其特征在于,所述步骤d4包括:步骤d41、调用所述混淆文件名生成程序,获取当前int1和int2对应的十进制数,根据所述预设字母表中字母编排的序号,得到当前int1对应的当前int1号字符和当前int2对应的当前int2号字符;步骤d42、将所述基础目录名称、预设分隔符、当前int1号字符、预设分隔符、当前int2号字符按顺序组合生成当前混淆字符串;步骤d43、将所述当前待混淆的资源文件路径字符串中的除后缀名之外的字符串修改为所述当前混淆字符串,并保留后缀名不变,得到当前待混淆的资源文件路径字符串对应的目标混淆文件名;步骤d44、判断当前int2是否小于456976,若小于,则将当前int2加1,返回步骤d41,否则,则将当前int1加1,并将当前int2重新归0,返回步骤d41,直至获取到所述第二资源信息
表中所有资源文件路径字符串的目标混淆文件名。4.根据权利要求3所述的系统,其特征在于,所述基础目录名称为“/r”,所述预设分隔符为“/”等。5.根据权利要求1

4中任意一项所述的系统,其特征在于,所述系统还预设的加密函数、加密密钥、解密密钥和解密函数,当所述计算机程序被处理器执行时,在步骤d1之前还实现以下步骤:步骤c1、监测编译器是否将待处理的java源代码全部编译成对应的第一java字节码,若编译完成,则执行步骤s102;步骤c2、扫描所述第一java字节码,若扫描到常量字符串,则调用所述加密函数和加密密钥将扫描到的常量字符串进行加密,得到对应的加密字符串;步骤c3、将扫描到的常量字符串替换为所述解密函数的调用,并将所述解密函数对应的调用参数设置为该常量字符串对应的加密字符串,得到处理后的第一java字节码;步骤c4、基于处理后的第一java字节码生成所述待处理的apk文件。6.根据权利要求5所述的系统,其特征在于,所述系统中还包括gradle插件,所述gradle插件中配置有预设回调函数以及所述预设的加密函数、加密密钥、解密密钥和解密函数,所述步骤c1基于gradle监测编译器是否将待处理的java源代码全部编译成对应的第一java字节码,若编译完成,则采用所述预设回调函数调取所述gradle插件执行步骤s102;所述步骤c2采用所述gradle插件扫描所述第一java字节码,若扫描到常量字符串,则调用所述加密函数和加密密钥将扫描到的常量字符串进行加密,得到对应的加密字符串;所述步骤c3采用所述gradle插件将扫描到的常量字符串替换为所述解密函数的调用,并将所述解密函数对应的调用参数设置为该常量字符串对应的加密字符串。7.根据权利要求5所述的系统,其特征在于,所述步骤c2中,所述调用所述加密函数和加密密钥将扫描到的常量字符串进行加密,得到对应的加密字符串,包括:步骤c21、将扫描到的常量字符串转换为btye数组,调用所述加密函数将所述btye数组进行加密,得到加密后的btye数组;步骤c22、将加密后的btye数组进行编码得到base64或base128的加密字符串。8.根据权利要求7所述的系统,其特征在于,所述加密函数为aes加密函数,所述解密函数为aes解密函数。9.根据权利要求5所述的系统,其特征在于,当所述计算机程序被处理器执行时,还实现以下步骤:步骤c41、将所述预设解密密钥切分为多段解密密钥段;步骤c42、将所述多段解密密钥段在所述第一java字节码对应的class文件中分散存储;步骤c43、为每一解密密钥段设置一密钥段id,基于每一解密密钥段的密钥段id和对应的存储地址建立密钥段存储表,所述密钥段存储表包括多条密钥段记录,每一密钥段记录的字段包括密钥段id和存储地址;步骤c44、将所述密钥段存储表的记录在所述第一java字节码对应的class文件中分散
存储。
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1