随笔分类 - linux
any thing about linux
摘要:一. 漏洞简介CVE-2010-4258这个漏洞很有意思,主要思路是如果通过clone函数去创建进程,并且带有CLONE_CHILD_CLEARTID标志,那么进程在退出的时候,可以造成内核任意地址写0的bug。PoC代码利用了多个漏洞来达到权限提升的目的。二. 前置知识 (进程创建、退出)1.当f...
阅读全文
摘要:引子在编译2.6内核的时候,你会在编译选项中看到[*] Enable futex support这一项,上网查,有的资料会告诉你"不选这个内核不一定能正确的运行使用glibc的程序",那futex是什么?和glibc又有什么关系呢?1. 什么是FutexFutex 是Fast Userspace m...
阅读全文
摘要:背景学习:Linux Futex的设计与实现使用者角度看bionic pthread_mutex和linux futex实现By kernux TopSec α-lab一 漏洞概述这个漏洞是今年5月份爆出来的,漏洞影响范围非常广。受影响的Linux系统可能被直接DOS,精心设计可以获取根权限。该漏洞...
阅读全文
摘要:使用者角度看bionic pthread_mutex和linux futex实现本文所大篇幅引用的参考文章主要描述针对glibc和pthread实现;而本文的考察代码主要是android的bionic和pthread实现。1. futex引入的意义传统的SYSTEM V IPC机制需要系统调用进入内...
阅读全文
摘要:android ARM 汇编学习—— 在 android 设备上编译c/cpp代码并用objdump/readelf等工具分析adb putty 连上手机,用busybox vi 写一个 helloworld croot@HM2014813:/data/local/tmp # busybox vi ...
阅读全文
摘要:Android so注入-libinject2 简介、编译、运行Android so注入-libinject2 如何实现so注入Android so注入-Libinject 如何实现so注入Android so注入挂钩-Adbi 框架简介、编译、运行Android so注入挂钩-Adbi 框架如何实...
阅读全文
摘要:android 使用 linux 内核,一般运行在 ARM 体系架构上,android 设备启动的过程,应用层之下基本等同于linux, 从应用层第一个程序init开始有所区别,下面开始介绍。step1, boot rom 主要作用是加载 boot loader 进入内存并执行,boot rom 一...
阅读全文
摘要:Android so注入-libinject2 简介、编译、运行Android so注入-libinject2 如何实现so注入Android so注入-Libinject 如何实现so注入Android so注入挂钩-Adbi 框架简介、编译、运行Android so注入挂钩-Adbi 框架如何实...
阅读全文
摘要:上一篇android 5 HOOK 技术研究之 ADBI 项目 02分析了hijack.c, 这个文件编译为一个可执行程序 hijack, 该程序实现了向目标进程注入一个动态库的功能。这一篇继续研究 adbi 项目其他源码,解决真正替换目标进程函数的问题。在开始之前,先看看 adbi 给出的一个例子...
阅读全文
摘要:Android so注入-libinject2 简介、编译、运行Android so注入-libinject2 如何实现so注入Android so注入-Libinject 如何实现so注入Android so注入挂钩-Adbi 框架简介、编译、运行Android so注入挂钩-Adbi 框架如何实...
阅读全文
摘要:Android so注入-libinject2 简介、编译、运行Android so注入-libinject2 如何实现so注入Android so注入-Libinject 如何实现so注入Android so注入挂钩-Adbi 框架简介、编译、运行Android so注入挂钩-Adbi 框架如何实...
阅读全文
摘要:================= 2015 年 10 月 14 号 更新著名的android开源社区xda有一个帖子,详细描述了android开发和研究环境的初始搭建过程:http://forum.xda-developers.com/chef-central/android/guide-andr...
阅读全文
摘要:cannot load shared object file undefined symbol场景:共享库里引用了主程序一个符号,结构编译的时候没问题,运行时用 dlopen 打开共享库报上述错误原因:共享库使用的这个符号在主程序里没有任何调用,所以编译主程序时改符号没有被导出。需要在编译主程序时添...
阅读全文
摘要:转载:http://blog.csdn.net/freas_1990/article/details/9238183看了一些linux网卡驱动的处理技术,对有些概念还是无法理解,突然搜到这篇文章,挺有意思的,有些启发,以后我也要尝试用这种方式写文章Jack:Linux外部设备的性能如何才能高呢?我:你为什么希望外部设备的性能好呢?Jack:典型的说,外部设备如磁盘、网卡都需要非常好的性能。磁盘设备处理性能好,才能承载数据库系统。网卡性能好,才能承载高性能server(数据库或者web server)。我:那你觉得用什么样的方式处理这两个外部设备,它的性能会好呢?Jack:外部设备要好,当然应该
阅读全文
摘要:看到知乎上有个关于linux多进程、多线程的讨论:http://www.zhihu.com/question/19903801/answer/14842584自己项目里也对这个问题有过很多探讨和测试,所以正好开贴整理一下,题目有点长,其实就2点:1. 多进程模型和多线程模型,这两种模型在linux上有什么区别,各有何优缺点? 这里仅限于linux平台,因为linux平台跟win平台关于线程的实现差异很大。2. 采用intel dpdk做包处理程序,是采用多进程模型好,还是多线程模型好? 这里仅限于包处理程序(ips,waf,其他网络设备引擎),因为不同应用场景区别也很大。首先知乎里边的评论,.
阅读全文
摘要:c++ 内存获取和释放 new/delete,new[]/delete[]c 内存获取和释放 malloc/free, calloc/realloc上述8个函数/操作符是c/c++语言里常用来做动态内存的申请和释放的,要理解这些接口,大概需要下面几个维度的了解:1. 了解OS的进程空间模型,一个进程的地址空间,一般划分为内核区、用户区,用户区又划分为栈区、堆区、数据区、代码区。这里的‘堆区’,‘栈区’,‘数据区’,‘内核区’,其实就是一个虚拟地址区间,动态内存最终都是从OS的'堆区'上获取的。2. brk、mmap 系统调用brk系统调用,可以让进程的堆指针增长一定的大小,逻辑
阅读全文
浙公网安备 33010602011771号