
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
接着上文继续说:https://blog.csdn.net/dog250/article/details/105474909我一心一意想写一个指令解析器,我的目的是扫描出Linux内核text段中的所有的jmp和call指令,从而检测内核是否已经被篡改。基于以下事实:一般内核函数互相调用都跑不出内核的text段,从0xffffffff81000000开始的几兆空间,凡是跳转越界跑出这个空间...
在上文中,左右手互搏,最终成功将二进制stub函数注入到了Linux内核的text段本身,逃过了jmp/call的越界检测:https://blog.csdn.net/dog250/article/details/105496996真把二进制注入到Linux内核的text自身就很难检测了,任何检测机制均类似免疫系统一样,如此一来很难分清敌我。如果把采用越界call的rootkit看作是病毒入...
前面写了两篇关于杂耍把戏的手艺方面的文章:https://blog.csdn.net/dog250/article/details/105129254https://blog.csdn.net/dog250/article/details/105093969并不是很过瘾,因为当我将一个函数完整搬移到另一处的时候,我有意避开了采用相对地址寻址指令偏移校准 核心问题 ,还美其名曰为了简单。失去...
上周我发了个朋友圈以抱怨现实(我并不认为抱怨是一件不好的事情):想玩debug一定要玩windows,通过linux内核玩debug不行的。一个dis命令就看到了地址a,再一个l *a就看到了源码。。。简单的问题到此就结束了,你还会再去查寄存器查引用图吗?同样的简单问题如果是windows,你就必须继续debug。linux内核源码和随意随处可加的printk取消了继续分析的动机。有人又...
如果你用Linux perf tool的top命令做热点纠察时,你会发现,前10名嫌疑犯里面肯定有好几个都是锁!在进行并行多处理时,不可避免地会遇到锁的问题,这是不可避免的,因为这一直以来也许是保护共享数据的唯一方式,被保护的区域就是临界区。而我们知道,锁的开销是巨大的,因为它不可避免地要么等待,要么让别人等待,然而这并不是开销的本质,开销的本质在于很多锁都采用了“原子操作”这么一个技术,如此一个
linux内核启动需要时间,并且需要很多的时间,这是逃避不了的,了解linuxbios的朋友可能知道,linuxbios作为bios和别的bios相比启动的特别快,因为它把硬件检测的任务交给了linux内核而不是bios,毕竟bios检测完了内核再检测是一种浪费,为了bios的性能,把工作推给内核是不负责任的行为吗?其实不是,实际上启动时最耗时的操作就是硬件检测和初始化,正是因为如此,linuxb
一般的说,,用户空间的IOCTL系统调用如下所示: ioctl(int fd, int command, (char *) argstruct)因为这个调用拥有与网络相关的代码,所以文件描述符号fd就是socket()系统调用所返回的,而command参数可以是/usr/include/linux/sockios.h头文件中的任何一个,这些个命令根据它可以解决的问题所涉及的方面被分为多种的类型.
广义上讲,内核本身就是一个服务器,为所有的用户模式进程提供服务,但是狭义上讲只有在真的有请求的时候内核采取的对策才叫做服务,比如注册-执行模式下的time以及hrtimer等等,用户空间的程序或者内核空间的执行绪可以随意注册一个timer之后就不管了,timer到期以后内核会执行之,这就相当于timer的创建者请求了内核的一项服务,就是执行timer,不光是这个,在内核中处处都是服务执行者,比如工
linux的内核页面是不可换出的,这是事实,但是为什么呢?本文我将从物理页面争抢的角度来试图发现和解决这个疑问。linux的内核地址空间很大一块 是一一映射,这实际上不是必须的,而是内核想尽可能简单的实现内核本身的管理(迎合mmu,人家必须要mmu插手,你内核无法逃避,只好用最简单的方式应 付一下,如果没有mmu,那么对于内核就好了)。内核毕竟只是为用户进程提供服务,它不应该花很大的精力用于
linux的系统调用及其丰富,但是却都是同步的,虽然2.6内核新增加了异步io,但是对于套接字等却以及非直接读写io却不可用,于是开发者就有了一 个想法,既然一些任务可以由内核的xxlet或者内核线程(工作队列)来异步执行,比如tasklet,那么能否建立一套异步执行系统调用的机制呢?这就 是syslets的由来。 syslets按照常规思想来理解就是建立一个新的线程来执行被阻塞的系







