Welcome 微信登录

首页 / 操作系统 / Linux

高级Linux Kernel Inline Hook技术分析与实现

高级Linux Kernel Inline Hook技术分析与实现

一、简述 目前流行和成熟的Linux kernel inlinehook技术就是修改内核函数的opcode,通过写入jmp或pushret等指令跳转到新的内核函数中,从而达到修改或过滤的功能。这些技术的共同点就是都会覆盖原有的指令,这样很容易在函数中通过查找jmp,pushret等指令来查出来,因此这种inlinehook方式不够隐蔽。本文将使用一种高级inlinehook技术来实现更隐蔽的inlinehook技术。 二、更改offset实现跳转 如...
Gentoo Linux 内核编译过程及nvidia驱动安装

Gentoo Linux 内核编译过程及nvidia驱动安装

给新手介绍以下在gentoo下面怎么装nvidia显卡驱动,顺便介绍一下内核编译(显卡驱动需要内核源代码支持) 1、 安装gentoo内核工具genkernel #emerge genkernel 2、 下载内核源码(以gentoo-sources为例,可以根据自己需要选择下载) #emerge gentoo-sources 3、 检查/usr/src/linux链接指向,确保指向最新的内核源码目录 这个比较重要,因为genkernel默认编译...
Linux下编程工具常见用法小结

Linux下编程工具常见用法小结

把Linux下面的编程相关的工具熟悉了一下,主要有VI,Emacs,GCC,GDB,Makefile,autotools。初涉Linux,上述工具其实任取一个都不是一时半会能整精熟的,但是往往每一种工具都有一些使用频率高达70%的命令。练习了一晚,对常见用法做个小结,巩固记忆。一,VI:常用的源代码编辑命令。vi hello.c 在当前目录下生成hello.c,并进入命令模式在命令模式下,不能输入,可以完成删除,复制,粘贴等操作。1)按i 或a或o进入插入...
入门学习C++的一点讨论

入门学习C++的一点讨论

单就学习C++语言而言,建议初学者还是不要用IDE.原因很简单,IDE牵引性太强了。比如VC吧,上来就建立工程,然后就是一大堆向导选项,最后一出来就是搭建好的一个框架,然后,编……我当年学习VC,第一次下来,当场晕厥,我编啥哦?!!!一个程序,总要有个入口,出口,用VC的MFC框架,初学者连入口都找不到,我连初始化代码在哪运行都搞不懂,怎么编?这种情况持续了两三年,最后,看了侯老师的深入浅出,才算彻底搞懂了MFC的框架结构,但侯老师也是通过把MFC拆了,一...
在Debian4.3下编译Linux-2.6.28内核小结

在Debian4.3下编译Linux-2.6.28内核小结

从我自己所找到的资料来看,编译Linux内核有两种方法。我先说说新方法,这种方法很简单。反正我是一次成功。当然,这些操作都需要以root用户进行。我首先用光盘安装了Debian-etch4.3的最小系统。在这样的系统下,还需要安装一些工具包后方可进行内核编译。为完成内核编译,Debian4.3还需要安装的包如下:# apt-get install gcc# apt-get install make# apt-get install libc6-dev# a...
关于Java 7模块系统

关于Java 7模块系统

最近,新的Java模块系统已经受到了大量的关注。在观看过Devoxx关于Jigsaw的一段演示后,我很兴奋,觉得它应该会是针对复杂类路径版本问题和JAR陷阱等问题的解决方案。开发者最终能够使用他们所期望的任何Xalan版本,而无需被迫使用授权机制。不幸的是,通往更加有效的模块系统的征途并不是很清晰。 在研究确实问题之前,我们先来看一些基本概念: 模块化 模块化是解决复杂性问题很重要的工具。把应用分成不同的部分(模块、库、包、子项目和组件),再分别进行...
精通C/C++同样能找到一份非常好的工作

精通C/C++同样能找到一份非常好的工作

电类专业大学生都学过C或C++,但没有引起大家的重视。电类专业毕业生要想有一份高薪水的工作,从事与嵌入式系统应用技术有关的开发工作是首选。软硬通吃当然是高手,但事实上只要你精通C/C++,哪怕其它课程完全按部就班地学一遍,等到毕业时要找一份好工作也是非常容易的。精通C/C++的同学的就业方向主要有基于X86计算机的驱动程序开发工程师、WinCE、Linux与软件开发工程师等职位。到了大四时,很多同学都希望毕业后能够从事WinCE、Linux方向的嵌入式软件...
Eclipse提高工作效率的好习惯

Eclipse提高工作效率的好习惯

下面就一些每天都在使用的东西列个表(不分先后),肯定是不全的,或者是不详细的,高手请补充,入门弟子请体验Eclipse提高工作效率的好习惯:1、切换编辑点 Alt + <-, Alt + ->2、查看打开文件 Ctr + e3、充分利用模板 主要是自己定义的4、自定义快捷键生成Getter和Setter我的:Ctr+Shift+S,S 单个的属性的生成你可以:Ctr+1 建议中有一项5、删除时候尽量不要退格或者Delete键,行级别 Ctr+d...
Linux进程调度的常用数据结构和函数

Linux进程调度的常用数据结构和函数

Linux2.4内核进程调度的缺陷:Linux2.4 内核的进程调度采用时间片轮转和优先级相结合的调度策略,但存在以下几个致命缺陷:1>调度算法时间复杂度是 O(n)。2.4 内核每次调度都要进行一次循环,耗时与当前就绪进程数有关,因此达不到实时性的要求;时间片重算时必须给 task_struct 结构和就绪进程队列上锁.2>不提供抢占式调度,会导致大量的竞争,使就绪队列成为一个明显的瓶颈;3>在 SMP 系统中,只有一个就绪队列,这将导...
Linux进程调度时机

Linux进程调度时机

Linux进程调度程序虽然特别重要,但它不过是一个存在于内核空间中的函数而已,并不神秘。Linux的调度程序是一个叫Schedule()的函数,这个函数被调用的频率很高,由它来决定是否要进行进程的切换,如果要切换的话,切换到哪个进程等等。我们先来看在什么情况下要执行调度程序,我们把这种情况叫做调度时机。Linux调度时机主要有:1、进程状态转换的时刻:进程终止、进程睡眠;2、当前进程的时间片用完时(current->counter=0);3、设备驱动...
Linux进程调度的运行队列

Linux进程调度的运行队列

运行队列当Linux内核要寻找一个新的进程在CPU上运行时,必须只考虑处于可运行状态的进程,(即在TASK_RUNNING状态的进程),因为扫描整个进程链表是相当低效的,所以引入了可运行状态进程的双向循环链表,也叫运行队列(runqueue)。运行队列容纳了系统中所有可以运行的进程,它是一个双向循环队列该队列通过task_struct结构中的两个指针run_list链表来维持。队列的标志有两个:一个是“空进程”idle_task、一个是队列的长度。有两个特...
浅析Java中的深拷贝与浅拷贝

浅析Java中的深拷贝与浅拷贝

首先我们看看浅拷贝和深拷贝的定义 浅拷贝:只复制一个对象,对象内部存在的指向其他对象数组或者引用则不复制 深拷贝:对象,对象内部的引用均复制 为了更好的理解它们的区别我们假设有一个对象A,它包含有2对象对象A1和对象A2 对象A进行浅拷贝后,得到对象B但是对象A1和A2并没有被拷贝 对象A进行深拷贝,得到对象B的同时A1和A2连同它们的引用也被拷贝 在理解了深拷贝和浅拷贝后,我们来看看Java的深拷贝和浅拷贝实现。java.lang.Objec...
怎样使用Java读取OpenOffice文档

怎样使用Java读取OpenOffice文档

由于项目的需要,我们需要在Java程序读取OpenOffice文档,并对数据进行处理。本文介绍了如何使用ODF Toolkit去读取OpenOffice SpreadSheet的内容。 1. OpenOffice Spreedsheet 文档 假设我们需要读取如下图所示的OpenOffice Spreedsheet 文档: 上面的文档也包含在本文的源代码中。 OpenOffice文档其实是以XML格式存储的,其中包含了文档内容和格式控制等。 ...
关于Linux下编译u-boot的问题

关于Linux下编译u-boot的问题

我自己的板卡使用的是mpc8641,在移植uboot的时候遇到了一些小问题,现在将他们列举出来。最开始我想使用Linux的gcc来编译uboot,因此我在虚拟机上安装了RedHat9,先编译一下原有的uboot代码吧,使用命令#make MPC8641d_config#make这两句话我记得不是特别清楚了,可以参考别人的文章。如果是你自己的板卡的uboot,你必须在makefile文件中添加两行代码:myboard_config : unconfig @....
Linux多线程和共享内存

Linux多线程和共享内存

昨日用Linux编译多线程程序,并不复杂,只是一个简单的pthread_create但是总返回-1,搞的很是郁闷,后来总算找到原因是在编译时没有连接 -lpthread这个库引起的。共享内存在一个进程里只需要申请一次,则多个线程即可共用。实现了申请一块共享内存,用多个信号量进行控制访问。先创建内存,再建立内存映射,最后断开映射。内存关闭可由另外一个进程来完成。起多进程可以考虑system()这个函数,效果不错。...
Linux Shell简介

Linux Shell简介

Linux系统提供多种不同的Shell以供选择,Linux缺省的Shell是Bourne Again Shell (简称bash)。Linux终端(Terminals)是使用Shell的一种方式。Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编...
<< 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 >>