定义包装类的基本属性 要创建类时,在对相关的成员变量赋值
定义包装类的基本属性 要创建类时,在对相关的成员变量赋值
要hook java方法,首先要找到ArtMethod相关成员的对应的偏移量 (1) frida使用Process.getElapsedCpuTime方法来定位偏移。这个方法...
frida-gum 虽然功能强大,但由于使用了 C 语言的接口,扩展开发不方便,因此frida 使用 JavaScript 作为编写 hook 的语言,底层使用quickjs...
frida Java对象就是Runtime,是单例的。 对应art虚拟机的Runtime。art虚拟机可以通过调用JNI_GetCreatedJavaVMs获取JavaVM间...
根据上文对MarkSweep GC代码逻辑的介绍可知,空间对象的live_bitmap_就是本次GC的集合Live。Heap mark_bitmap_为集合Mark。调用Bi...
PartialMarkSweep的GC策略为kGcTypePartial。kGcTypePartial是不扫描APP进程从zygote进程继承得来的空间对象ZygoteSpa...
垃圾对象的内存释放,这项工作由ReclaimPhase完成。gc线程执行ReclaimPhase时,mutator线程可以同时运行。 IsMarked返回为空,说明obj没有...
android12 arm64解释代码位于out/soong/.intermediates/art/runtime/libart_mterp.arm64/gen/mterp_...
art虚拟机在非解释模式下,ArtMethod::Invoke调用方法会根据是否为静态方法进入跳板函数,构造栈帧,处理参数,然后跳转到对应的函数去执行。 art_quick_...
标记-清除算法中实际上有两个信息共同决定了哪些对象为垃圾对象。第一个信息是进程中当前存在的所有对象,可以用集合Live来表示它们。·第二个信息是标记时能被扫描到的对象,可以用...
GarbageCollector是虚基类,它是ART中垃圾回收器的代表。GC工作就是从Garbage-Collector的Run函数开始的。 (1) GC的具体工作则由其子类...
RootType RootInfo VisitRootFlags Runtime::VisitRoots是访问虚拟机进程中所有root对象的入口 Thread (1) jni...
class ObjectArray DexCache ClassLoader
内存空间添加 (1) 如果space是连续的,则添加到continuous_spaces_数组。(2) continuous_spaces_按照起始地址排序(3) 内存不连续...
ART虚拟机中,CardTable可看作是一个元素大小为1字节的数组,该数组的每一个元素叫作一个Card。 AllocatedSpace 按 128 字节(可更改)大小进行划...
关键数据 binder_thread代表当前操作binder的线程 ioctl命令 协议 binder驱动初始化 如果没使用binderfs,则直接注册binder设备,in...
binder驱动代码在drivers/android。在标准linux内核下,默认是不编译进去的。linux5.17.4 binder版本为8 binder.c和binder...
art虚拟机通过Heap::ChangeCollector设置回收器。使用哪种内存分配器是由垃圾回收算法决定的。 art/runtime/entrypoints/quick/...
LargeObjectSpace用于保存java基础数据类型数组或者是长字符串。 art虚拟机提供了两种实现,要么使用LargeObjectMapSpace,要么FreeLi...