- 博客(9)
- 收藏
- 关注
原创 SO解密过程
系统的soinfo还是必须的,这个其实可以换一个名字这个结构是加密与解密的一个联系,是加固过程与解压缩过程的一个联系//需要加壳基址进行重定位, 默认在PAGE_END(DYNAMIC_END)之后。
2023-08-01 10:24:11 676
原创 art虚拟机--方法成员类的关系
一、三个对象的主要成员函数1、object类,是抽象于art::mirror空间中。保证其结构的数据内存。包括类中所有的成员,field也 是offset的方式,存在于该内存空间中2、artField关键的成员,declaring_class_表示是当前属于那个类。access_flags_表示当前的成员是public/private等 field_dex_idx_是在dex文件中的索引。offset_ 是在class结构体中的偏移 SetObj/GetObj最终...
2020-11-04 11:48:58 197
原创 Art虚拟机--内置类
一、抽象的位置在art/mirror文件夹内。mirror意思是这个java类的一个c++镜像1、Object是基类2、感觉都是画画图,看看源码就明白了
2020-10-30 10:53:36 138
原创 art虚拟机内存--java对象申请的内部逻辑
一、对象如何New的1、对于对象类型,申请内存,返回mirror::Object2、对于数组,申请内存,返回mirror::Array3、最终代码里面的new函数,会让heap去申请内存
2020-10-23 17:48:52 167
原创 Art虚拟机内存抽象--heap中的空间及主要方法
一、heapheap类是art虚拟机中内存管理的主要部分之一。主要管理堆内存,之前所说的各种space,在这里被使用。被聚集在一起,提供内存管理的功能如上图所示,heap中直接有13个跟space有关的引用。其中前三个是一个Vector集合,内部包含更多的space,这里面就是对象的生成位置二、Heap分配对象的主要方法1、TryToAllocate是分配内存空间的最终实现位置,根据不同的AllocatorType,会去不同的space上面申请内存 如下代码,就是从n...
2020-10-23 15:46:15 487
原创 Art虚拟机内存抽象(2)--LargeObjectSpace
Large Object Space一、基本定义 1、live_bitmap_ 与 mark_bitmap_ 是用于垃圾收集标记的2、LargeObjectSpace分为两种,LargeObjectMapSpace与FreeListSpace mapSpace这一种,内存不是连续的 FreeListSpace这一种,内存是连续的3、看好mirror::Object *Alloc 接口,该接口就是用于内存分配对象的4、分配的对象,还是存...
2020-10-19 10:38:11 425
原创 Art 虚拟机内存抽象(1)
一、内存管理 一个很重要的问题,就是内存是如何进行分配的。如何申请的,如何释放的。针对于不同的场景,内存是如何分类的。以及,这些分类是对系统产生便利性的。二、space抽象 1、space实现了设置名字,以及设置回收策略的功能2、ContinuousSpace begin_ 开始地址,end_结束地址2、DiscontinuousSpace 的核心在于LargeObjectBitmap上面3、ContinuousMemMapAllocSpace...
2020-10-16 15:01:16 311
原创 ART虚拟机中的同步抽象
art虚拟机中的同步抽象最近,准备做一个关于解析art虚拟机的解读。算是给自己一个记录一、同步抽象架构 一图胜千言二、解析1、art虚拟机的实现,离不开互斥体,同步的因素。因为是多线程系统吗。像这样的同步机制,在linux操作系统中,就是各种个样的锁,原子体等。在java中就是sync关键字等等。2、BaseMutex是art虚拟机同步机制的一个起点,其底层的实现是linux的futex机制。这个机制的效率相对比较高。3、mutex,读写m...
2020-10-09 15:37:16 265 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人