【Android 安装包优化】资源混淆 ( 资源混淆效果 | APK 构建流程简介 | 资源 ID 组成 )

举报
韩曙亮 发表于 2022/01/11 00:54:37 2022/01/11
【摘要】 文章目录 一、资源混淆效果二、APK 构建流程简介三、资源 ID 组成四、参考资料 一、资源混淆效果 资源混淆 , 将资源名称与目录进行混淆 , 提高了反编译的难度...





一、资源混淆效果



资源混淆 , 将资源名称与目录进行混淆 , 提高了反编译的难度 , 同时也减小了 APK 文件的大小 ;


下面的 APK 安装文件就是进行资源混淆 , 其中的 r 文件 , 就是混淆后的资源文件 ;

在这里插入图片描述


进入 r 文件内部 , 可以看到很多无意义无规则的目录 , 这是混淆后的资源文件 ;

在这里插入图片描述





二、APK 构建流程简介



APK 构建流程 官方文档参考 : https://developer.android.google.cn/studio/build


在这里插入图片描述

应用模块 ( Application Module ) 中包含 :

  • 源码文件 ( Source Code )
  • 资源文件 ( Resource Files )
  • AIDL 文件 ( AIDL Files )

等 , 还有各种引入的依赖库 ( Dependencies ) , 包括 :

  • Android 依赖库模块 ( Library Modules )
  • Android 依赖库包 ( AAR Libraries )
  • Java 依赖库 ( JAR Libraries ) ;

应用模块 和 依赖库 放在一起进行编译 , 先编译成 class 字节码文件 , 然后使用 dex 工具 , 编译成 DEX 文件 , 同时也会对 资源文件 ( Resources ) 进行编译 , 最后打包成 APK 文件 ;


资源文件在打包时会进行编译 , 将资源文件编译成二进制文件 , 直接打开资源文件都是二进制乱码 ;

在这里插入图片描述





三、资源 ID 组成



Android 应用编译时会生成 R 文件 , 在代码中 , 也使用 R 文件 , 引用相关的资源 ;

每个资源的值 , 存在子 app\build\intermediates\runtime_symbol_list\debug\R.txt 中 , 现在在 build 目录中不生成 R.java 了 ;

int anim abc_fade_in 0x7f010000
int anim abc_fade_out 0x7f010001
int anim abc_grow_fade_in_from_bottom 0x7f010002
int anim abc_popup_enter 0x7f010003
int anim abc_popup_exit 0x7f010004
int anim abc_shrink_fade_out_from_bottom 0x7f010005
int anim abc_slide_in_bottom 0x7f010006
int anim abc_slide_in_top 0x7f010007
int anim abc_slide_out_bottom 0x7f010008
int anim abc_slide_out_top 0x7f010009
int anim abc_tooltip_enter 0x7f01000a
int anim abc_tooltip_exit 0x7f01000b

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

每个资源都对应着 R 文件中的一个 ID , 以 0 x 7 f 010000 \rm 0x7f010000 0x7f010000 为例 , ID 的格式分为三部分 , 7f | 01 | 0000 ,

  • 7 f \rm 7f 7f 表示包 , 一般的程序的包都会被编译成 7 f \rm 7f 7f 开头 ;
  • 01 01 01 对应资源类型 , 动画类型以 7f01 开头 ;
  • 最后 2 2 2 字节 , 按照序号从 0 0 0 开始排序即可 ;




四、参考资料



参考官方文档 :

参考之前的博客资源 :


博客资源 :

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/116716857

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。