05 2022 档案

摘要:ollvm官方只更新维护到llvm的4.0版本,github上有大佬移植了高版本的llvm,链接为:https://github.com/heroims/obfuscator/tree/llvm-9.0.1 编译ollvm9.0.1 编译环境和ollvm4.0的编译环境一样,采用mingw64 + 阅读全文
posted @ 2022-05-27 19:08 怎么可以吃突突 阅读(2018) 评论(0) 推荐(0) 编辑
摘要:说一下我的艰辛历程,整整编译了三四天,要么编译出来不能用,要么编译不了。。。。。。 # 工具 * mingw64:gcc编译器的windows版本 * ollvm4.0:官方版 * ndk:android studio中下载的ndk 16.1.4479499 # 设置环境 * 下载mingw64编译 阅读全文
posted @ 2022-05-27 15:05 怎么可以吃突突 阅读(1085) 评论(0) 推荐(1) 编辑
摘要:ELF文件的导出表 windwos平台下的动态链接库dll文件会有导出表,对应的Linux/Android的so文件也会导出表。 IDA打开一个so文件,查看Exports会看到所有的导出函数(start默认导出) .dynsym符号表的最后就是导出表,其中Elf32_Sym.st_vlaue的值为 阅读全文
posted @ 2022-05-23 19:23 怎么可以吃突突 阅读(825) 评论(0) 推荐(0) 编辑
摘要:linker入口函数 在内核程序加载了ELF可执行文件后会判断是否含有动态链接信息。如果需要进行动态链接就会通过ELF可执行文件的PT_INTERP程序段获得需要加载的加载器的路径,然后将应用层的入口函数设置为加载器linker的入口函数。 linker的入口函数为_start,但是实际在编译时会为 阅读全文
posted @ 2022-05-23 00:24 怎么可以吃突突 阅读(1178) 评论(0) 推荐(0) 编辑
摘要:# Linux内存空间布局 * .text:一般最开始的segment是代码段,包含了ELF可执行程序的代码指令,内存属性为可读可执行(不可写) * .data:数据段一般在代码段的后面,包含了ELF可执行程序的已经初始化的变量。 * .bss:未初始化数据段一般是最后一个段,包含了未初始化的全局变 阅读全文
posted @ 2022-05-22 16:39 怎么可以吃突突 阅读(128) 评论(0) 推荐(0) 编辑
摘要:# fork linux可以通过fork()创建一个新的进程。 例如通过shell命令运行ELF的时候,shell程序就会调用fork()创建一个子进程。 ``` pid_t fork(void); ``` * fork函数进入到内核中会先创建新进程对应的内核数据结构(PCB进程控制块什么的) * 阅读全文
posted @ 2022-05-22 16:28 怎么可以吃突突 阅读(448) 评论(0) 推荐(0) 编辑
摘要:# linux注册支持运行的文件类型 ``` struct linux_binfmt { struct list_head lh; struct module *module; int (*load_binary)(struct linux_binprm *); int (*load_shlib)( 阅读全文
posted @ 2022-05-20 23:29 怎么可以吃突突 阅读(2579) 评论(0) 推荐(0) 编辑
摘要:x86架构的重定位操作需要修改代码段,arm架构重定位待修改的数据位于数据段(.got表),不需要修改代码段。 .plt节区与.got表 外部函数引用重定位 通过readelf查看elf文件的所有节区section arm架构使用.plt节区存放外部函数调用的PLT条目,通过.plt节区索引到.go 阅读全文
posted @ 2022-05-20 01:50 怎么可以吃突突 阅读(2504) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
主题色彩