android 源码阅读
不知世事
日拱一卒,功不唐捐。
展开
-
ELF Linker学习篇(四)——初始化
在上几篇中总结了ELF的加载、链接之后,最后一篇我们继续关于初始化的过程。正文篇:首先我们看到源码为:soinfo* do_dlopen(const char* name, int flags) { if ((flags & ~(RTLD_NOW|RTLD_LAZY|RTLD_LOCAL|RTLD_GLOBAL)) != 0) { DL_ERR("invalid flags原创 2016-11-07 08:57:30 · 1867 阅读 · 0 评论 -
ELF Linker学习篇(一)关于ELF文件装载进内存
学习Linker也有一段时日了,但是还是不太清楚,对于Linker的重要性不多说,无论是对于加固还是对于脱壳都有至关重要的作用,我们作为一名安全爱好者,不需要细细了解源码的每句意思,但是大致的框架理清还是很有必要的,接下来几篇围绕这这个进行展开研究,一来帮助需要之人,二来加深自己的理解。整体框架篇: 每每研究这个的时候,我都特别喜欢拿一张图来进行看:可以看到这里面的重点函数为:原创 2016-10-31 20:38:44 · 4628 阅读 · 0 评论 -
ELF Linker学习篇(二)关于分配soinfo结构
继续上一篇说到的,在load_library()函数中,在so文件加载完以后,接着就会调用soinfo_alloc函数为so分配soinfo,Linker 为 每个 SO 维护了一个soinfo结构,调用 dlopen时,返回的句柄其实就是一个指向该 SO 的 soinfo 指针。soinfo 保存了 SO 加载链接以及运行期间所需的各类信息.接下来就看soinfo_alloc这个函数:sta原创 2016-11-01 09:31:33 · 3641 阅读 · 1 评论