当前位置: 首页 > news >正文

庆阳网站设计与建设企帮手logo设计官网

庆阳网站设计与建设,企帮手logo设计官网,杭州如何做百度的网站推广,网站上添加图片的原则Android 高级面试:插件化和热修复相关 1、dex 和 class 文件结构 class 是 JVM 可以执行的文件类型,由 javac 编译生成;dex 是 DVM 执行的文件类型,由 dx 编译生成。 class 文件结构的特点: 是一种 8 位二进制字节…

Android 高级面试:插件化和热修复相关

1、dex 和 class 文件结构

class 是 JVM 可以执行的文件类型,由 javac 编译生成;dex 是 DVM 执行的文件类型,由 dx 编译生成。

class 文件结构的特点:

  1. 是一种 8 位二进制字节流文件;
  2. 各个数据按顺序紧密的排列,无间隙;
  3. 每个类或者借口都单独占据一个 class 文件;

class 文件的文件结构:

1. magic                           加密字段
2. minor_version                   支持最低版本的jdk
3. major_version                   编译使用的jdk版本
4. constant_pool_count             常量池的数量
5. cp_info constant_pool           常量池的结构体,数量不定
6. access_flags                    访问级别
7. this_class                      当前类
8. super_class                     父类
9. interfaces_count                类实现接口的数量
10. fields_count                   类成员变量的数量
11. methods_count                  类方法的数量
12. method_info methods            类方法的结构体
13. attributes_count               类属性的数量
14. attribute_info attributes      类属性的结构体

dex 文件的结构的特点:

1. 是一种 8 位二进制字节流文件;
2. 各个数据按顺序紧密的排列,无间隙;
3. 一般情况下,整个应用所有 java 源文件都放在一个 dex 文件中。

dex 的文件结构分成 3 个区:

1. 第一个区是 header,包括:1. header_item dex_header 这个结构体,
2. 第二个区是索引区,包括:1. string_id_list dex_string_ids(字符串索引2. type_id_list dex_type_ids(类型索引)3. proto_id_list dex_proto_ids(方法原型索引)4. field_id_list dex_field_ids(域索引)5. method_id_list dex_method_ids(方法索引)
3. 第三个区是数据区,包括:1. class_def_item_list dex_class_defs(类的定义)2. data3. link_data(so)

两者的主要区别:

  1. class 中只包含了一个 java 文件的信息,dex 中包含了多个 java 文件的的信息;
  2. dex 中包含了很多类的信息,它会把类的信息进行拆分,然后把拆分后的信息分配到指定的索引区域中。比如方法索引区域就包含了所有类的方法的索引。

2、加固的原理

加固的过程分成几个步骤:

  1. 要加固的 APK + 壳程序 dex 合成新的 dex;
  2. 然后用新合成的 dex 替换克 apk 中的 dex 得到新的 APK.

第一步的时候可以对 APK 进行加密,然后在运行时对 APK 进行解密。合成新 APK 的本质过程是对 dex 进行拼接,将 APK 文件附加到 dex 文件后面。因为此时 dex 的信息已经发生了变化,所以需要对 dex 的文件头进行修改,包括魔数、检验码和 SHA-1 签名的修改。本质上拼接的过程可以通过读取二进制数组,然后通过数组拷贝将 APK 附加到 dex 末尾。

第二部就是一个打包的过程。不过这个过程会修改 Manifest 文件,将程序中的 Application 替换掉。替换后的 Application 会在程序启动的时候将我们的 APK 加载进来。下面是 360 加固之后的 Manifest 文件:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

加固的过程有些类似于插件化的流程,也是将 APK 解压到磁盘之后,通过反射替换掉 AssertsManager,并将其指向我们解压之后的资源的路径。

360 加固的核心算法在 native 层实现,里面针对不同的平台提供了各种 so 库,运行时在 java 层判断平台版本,调用 so 库。

3、热修复的原理

根据修复的类型分成几种:类的修复,资源修复和 so 修复。

类的修复:

4、插件化的原理

另外
有什么技术问题欢迎加我交流 qilebeaf
本人10多年大厂软件开发经验,精通Android,Java,Python,前端等开发,空余时间承接软件开发设计、课程设计指导、解决疑难bug、AI大模型搭建,AI绘图应用等。
欢迎砸单

http://www.yayakq.cn/news/610894/

相关文章:

  • 西直门网站建设公司设计app的软件
  • 网站服务搭建代做效果图网站好
  • 外包网站建设多少钱厦门正规的网站建设公司
  • 如何用自己电脑做网站服务器吗虚拟商城wordpress
  • wordpress新用户站点微信公众平台是什么
  • 建立一个虚拟公司的网站湖南企业网站建设
  • 用源码怎么做网站专做水果的社区网站
  • 网站建设开题报告设计私募网站建设服务
  • 宝安龙华积分商城网站建设专业网络推广方法
  • 爱站网seo工具长春做网站建设的公司
  • ssp网站怎么做wordpress 提示插件
  • 网站建设归工商局管还是工信局管室内设计网站论坛
  • 网站安全建设网站优化网站建站教程
  • 论坛做网站好吗wordpress高级
  • 在线快速建站网站开发合肥
  • 个人网站如何搭建做全国性的app网站推广多少
  • jsp网站开发四酷全书网页美工设计师工资
  • 淄博做网站建设有ip怎么用自己的主机做网站
  • 做淘宝客的网站需要备案吗百度推广投诉人工电话
  • 学网站开发网页制作甘肃省网站建设咨询
  • 网络建站工作室官网源码网站开发有什么点子
  • 网站框架是怎么做的活动策划工作内容
  • 网站dns错误免费做简历的软件网站
  • 上海单位建设报建网站logo标志设计网
  • seo站长工具下载东莞市外贸网站建设平台
  • 做网站PV网站建设专题页
  • wordpress中写入程序南京seo全网营销
  • 南京哪家网站做的好网站底部流程
  • 源码站用dz wordpress网站建设费用应该入什么科目
  • 佛山建站专家网页浏览器包括