Android开发之混淆高级教程:压缩阶段

上一篇文章介绍了混淆的基础知识,包括保留指定的包名、类名、方法名以及字段名。本篇文章将重点介绍混淆的广义概念,包括压缩、优化和混淆几个阶段。

Android开发之混淆高级教程:压缩阶段

1. 压缩阶段

在Java编译时,源代码(.java)会被转换成字节码(.class),相比源代码,字节码更加简洁。然而,生成的字节码中可能包含一些没有用到的代码,特别是当项目中使用了第三方类库时,未引用的代码会更多。

压缩阶段会分析生成的字节码,在确保项目正常运行的同时移除一些未引用的类、字段和方法。为了验证移除未引用代码的效果,我们创建一个module,包含AdvancedCourseActivity和Subject两个类,其中Subject没有被引用。

对混淆后的项目进行签名打包,并反编译生成的apk文件,检查是否仍然存在Subject的字节码文件。

2. 反编译结果

反编译后的项目结构如下:

由以上结果可见,Subject的字节码文件已被成功移除。

3. 引用代码

接下来我们修改Subject类中的代码如下:

然后在AdvancedCourseActivity中引用Subject提供的构造方法和get方法。我们想知道未被引用的set方法是否会被移除。

4. 反编译结果再次分析

反编译后的项目结构如下:

从以上结果可见,混淆后仅保留了被引用的字段(courseName、creditHour)和方法(getCourseName()、getCreditHour()),以及构造方法。我们将在后续的混淆中巧妙地使用压缩规则,类似于Android Studio的App Link Assistant功能。

那么,如果我们不想执行代码的压缩,该怎么做呢?这时候,我们需要学习一些压缩阶段的规则(除此之外,还有优化规则和混淆规则)。

压缩规则的可选项包括以下几种:

1. -dontshrink:开启混淆,默认压缩所有类。通过添加该关键字,可关闭压缩过程。在文件中添加以下规则:

5. 反编译结果再次分析

反编译后的项目结构如下:

由上图可见,压缩阶段已被关闭,Subject的字节码文件仍然存在。

2. -printusage [filename]:将压缩阶段未引用的所有类信息打印到指定文件中。如果未在中指定该选项,则默认输出到路径:

在上述示例中,Subject的set方法未被引用,在usage.txt文件中可以找到相关信息。这一功能可用于检查签名打包后,在压缩阶段移除了哪些代码,并验证是否符合要求。

3. -whyareyoukeeping class_specification:打印保留类和内部成员的详细说明。class_specification指定需要了解的类名。详细说明将在Gradle控制台查看。例如,我们想了解为什么保留Subject类信息,可在文件中添加以下规则:

运行当前项目后,Gradle控制台将显示如下信息:

以上信息表明Subject类被引用了setCourseName()和setCreditHour()方法,以及get方法和构造方法。在AdvancedCourseActivity的void onCreate()方法中进行了调用。

至此,我们完成了压缩阶段的学习。

标签:

最新文章

  1. 杭州未来之光是精装修吗(未来之光有用吗?)2025-03-23
  2. vesta软件安装教程 office与windows的区别?2025-03-09
  3. 域名被别人注册了如何破 公司名称的域名被注册了怎么办?2025-03-25
  4. 支付宝怎么会自动变成单次开卡呢2025-03-12
  5. word样式库批量删除 如何在Word中新建样式:快速新建样式?2025-04-01
  6. 苹果x手机重启的方法 苹果X手机重启教程2025-03-13
  7. 怎么在word上打开文件2025-03-16
  8. 远程教学利器:通过QQ远程分享屏幕快速学习电脑技术2025-03-08
  9. Photoshop技巧:快速选择图像2025-03-11
  10. 柳州到金华汽车要多久 柳州到金城江座气车要几个小时?2025-03-24
  11. 哪家的虚拟主机哪个好 虚拟主机是什么概念?2025-03-29
  12. 微信如何直接发语音文件 微信语音文件发送2025-03-13
  13. qq游戏宠物(《QQ炫舞》手游宠物获得方法?)2025-03-25
  14. 浙江丽水遂昌邮编号码是多少 丽水有多少人口?2025-03-25
  15. 如何将手机摄像头用作电脑摄像头2025-03-14
  16. catia打开stp格式文件不能编辑 UG保存的stp文件怎么用CATIA打开?2025-03-23
  17. 如何设置uTorrent带宽交互停止传输2025-03-06
  18. 怎么才能让小米手机一直震动 小米手机震动问题解决方法2025-03-13
  19. 手机怎么设置新路由器 手机怎么设置猫和路由器?2025-03-14
  20. 吉安大桥会抓拍吗 吉安大桥右转有礼让行人拍照吗?2025-03-25
  21. 芜湖箱包哪家便宜 芜湖哪里东西卖的便宜啊?2025-03-23
  22. 用3dmax做台灯具体步骤 3Dmax如何制作台灯?2025-03-30
  23. 石家庄舞蹈艺校有哪些(石家庄专业的舞蹈学校有哪些?)2025-03-23
  24. 柳州旅游景点 柳州景区?2025-03-18
  25. 微信手机验证码收不到原因 注册微信收不到验证码怎么办?2025-03-18
  26. linux必学的60个命令 Windows10X放弃NT内核预示着什么?2025-04-01
  27. 武汉四维梦工场学费 游戏设计专业要学哪些课程?2025-03-17
  28. 如何给WPS文档设置页码2025-03-10
  29. windows xp正版盗版 正版软件xp和盗版xp有什么区别呀?2025-03-18
  30. 买了域名之后怎么用 为什么有人说建设网站必须去购买域名呢?2025-03-31
优质自媒体
优质自媒体 微信号:优质自媒体 扫描二维码关注公众号
优质自媒体

小编推荐

  1. 1 崩坏三手游怎么搞二维码 wegame崩坏三怎么上手机端的号?

    wegame崩坏三怎么上手机端的号?wegame崩坏三上手机端的号,电脑中先打开登二维码登用手机彻底崩坏三个人主页或就开始界面的扫码登,这样的话上手机端的号。《崩坏3》的官服和渠道服的区别是什么?当然这个区分我还是挺好的区分的,官方服务器的

  2. 2 解决Win10Xbox无法连接网络的方法

    使用进行配置对于Win10Xbox无法连接网络的问题,首先我们可以尝试使用工具进行配置。以下是具体步骤:1. 使用快捷键“Win R”打开“运行”窗口。2. 在输入框中键入“”,点击确定。3. 在左侧任务栏图标中选择“计算机配置”→“管理模

  3. 3 工作簿工作表单元格的基本操作

    在Excel中,工作簿(Workbook)是我们存储数据的文件,而工作表(Worksheet)则是工作簿中用于组织和管理数据的单个表格。单元格(Cell)是工作表中最小的数据单元。1. 创建工作簿和工作表在Excel中可以通过多种方式创建工

  4. 4 怎么清理手机垃圾苹果 苹果12mini手机怎么清理缓存垃圾?

    苹果12mini手机怎么清理缓存垃圾?苹果12迷你手机,想要清除缓存很垃圾的话,你可以直接到苹果的APP store里面选择清理垃圾删除手机垃圾最简单的方法?1.清理缓存可以称为 " "占据了手机的内存。清理内存是释放手机内存的必要手段。打

  5. 5 使用Excel中的分类汇总功能统计工资发放情况

    在日常的工作中,我们经常需要对数据进行分类汇总以便更好地分析和理解。如果我们需要按部门统计工资发放情况,Excel中的分类汇总功能就能派上用场。下面将介绍如何使用分类汇总功能来实现这一目标。步骤一:排序数据在使用分类汇总功能之前,我们需要先

  6. 6 小米miui12如何关闭通知振动

    在小米MIUI 12系统中,通知振动是一个很实用的功能,但有时候我们可能希望关闭它,以避免干扰或节省电量。本文将详细介绍如何在小米MIUI 12系统中关闭通知振动,并提供了操作步骤和演示例子。步骤一:进入设置首先,我们需要进入手机的设置界面

  7. 7 启动mysql服务的步骤 mysql怎么打开图形化界面?

    mysql怎么打开图形化界面?下载一个MysqlFront,填写用户名、密码等相关信息。-启动mysql服务:net启动mysql因为我的安装已经完成,就不贴安装命令图了。如何登录mysql?cmd怎么连接mysql数据库?1.按住wind

  8. 8 在剪映专业版中如何添加BGM

    剪映专业版是一款功能强大的视频编辑软件,它提供了多种类型的BGM供用户选择,包括搞笑、推理等。下面我们将介绍具体的操作步骤,帮助你在剪映专业版中添加BGM。打开剪映专业版首先,打开剪映专业版应用程序。你可以在电脑上找到它并点击运行,或者在手

  9. 9 键盘输入乱码如何解决

    键盘输入乱码是一个常见的问题,在使用电脑过程中经常会遇到。这个问题的出现可能是由于多种原因,比如操作系统设置不正确、键盘布局不匹配、驱动程序错误等。下面将详细介绍几种常见的键盘输入乱码问题及相应的解决方法。 第一种情况是操作系统设置不

  10. 10 小米手机怎么样拍照能变成全屏 小米钱q3相机比例怎么设置?

    小米钱q3相机比例怎么设置?可以,打开设置,相机和相框,设置为全屏16:9。小米11默认拍照是全屏这样好吗?小米11 的默认照片是全屏的,这张照片内容更丰富,很不错。小米手机玩王者荣耀界面怎么全屏?方法其实很简单,具体操作步骤如下1.在手

Copyright 2025 优质自媒体,让大家了解更多图文资讯!百度地图 360地图