
AOSP源码编译笔记
文章平均质量分 56
Viewz
这个作者很懒,什么都没留下…
展开
-
定制ART跟踪JNI函数绑定
JNI函数的绑定:每一个JAVA层函数在native层都对应一个ArtMethod对象,JNI函数在执行前必须完成JNI函数所在类的加载和初始化、以及该JNI函数的ArtMethod对象当中属性和So中具体函数地址的绑定。JNI函数绑定的分类:1、静态:两次绑定,第一次是在类加载的时候,会绑定到Art中的“桥函数”;第二次绑定是在该Jni函数第一次被真正调用时候,由Art完后该JNI函数在So中地址的查询以及绑定。art_jni_dlsym_looup_stub_(汇编实现)->...原创 2021-03-31 00:32:48 · 593 阅读 · 0 评论 -
ART中的内联函数笔记
inline用来定义一个类的内联函数,用它来替代C中表达式形式的宏定义,而且消除宏定义缺点。可以解决一些频繁调用的函数大量消耗栈空间问题。它是一种实现关键字,就是在函数实现的地方加上inline关键字才有用,在声明的地方加没有用。同时它只是一种建议,编译器可以忽略这个建议。因此Inline不一定就会被编译器内联编译。保证内联函数的定义被编译器看到的话,使用 ALWAYS_INLINE。内联函数在编译器最终生成的代码中是没有定义的,这个函数是不存在的,也就无法实现对内联函数的hook;内联函数没有原创 2021-03-24 14:20:50 · 305 阅读 · 0 评论 -
ART中的C++对象内存布局
C++11中的类所占内存大小主要是由成员变量(静态成员变量除外)决定的,成员函数(虚函数除外)是不计算在内的。空类的占用存储空间。class NUllclass {};NUllclass nullclass;64和32位下sizeof的返回值都为1。因为C++要求每个实例在内存中都有独一无二的地址。对齐的影响:class Base{ private: int a;//四字节 char p ;//一字节};Base base;sizeof(base);原创 2021-03-24 00:23:44 · 383 阅读 · 0 评论 -
C++11笔记
C++引用和指针int int_b = 124; int *int_b_ptr = &int_b;int &int_c = int_b;*int_b_ptr=126;cout<<int_b;int_c=128;cout<<int_b;最后分别打印126 128引用和指针在某种程度上没有区别。nullptr目的:解决NULL带来的二义性问题void func(int){count<<"1";}void .原创 2021-03-13 20:56:30 · 268 阅读 · 0 评论 -
FART与frida结合
1、优点:1、对FART的脱壳能力增强,对主动调用的dex(没有初始函数)进行脱壳function fartwithClassloader() { Java.perform(function () { Java.choose("dalvik.system. ", { onMatch: function (instance) { console.log(instance); try原创 2021-03-13 01:23:03 · 2208 阅读 · 1 评论 -
android源码编译笔记--踩坑
错误:ninja: build stopped: subcommand failed.解决:打开prebuilts/sdk/tools/jack-admin找到JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"修改为JACK_SERVER_COMMAN...原创 2021-03-05 11:45:40 · 14622 阅读 · 3 评论