上一页 1 ··· 65 66 67 68 69 70 71 72 73 ··· 75 下一页
摘要: #include <iostream> using namespace std; void f1(int a,int b) { } int main() { f1(3,4); system("pause"); } 将上述代码反汇编如下(vs05debug): int main() { 004113D0 push ebp ;/保存栈基址 004113D1 mov ebp,esp ;将... 阅读全文
posted @ 2010-10-24 23:47 浪里飞 阅读(1400) 评论(0) 推荐(0) 编辑
摘要: 解释一:[1,2]●Unix编程中所谓"僵尸进程"指什么,什么情况下会产生僵尸进程,如何杀掉僵尸进程:在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用wait或waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill -9也不能杀死僵尸进程(僵死进程实际上是已死的进程,你当然不能杀死一个死人)●在一个进程调用了exit之后,该进程并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)的数据结构。在Linux进程的5种状态中 阅读全文
posted @ 2010-10-24 18:05 浪里飞 阅读(1521) 评论(0) 推荐(1) 编辑
摘要: 8086CPU的指令,可以处理两种尺寸的数据,byte和word。所以在机器指令中要指明,指令进行的是字操作还是字节操作。对于这个问题,汇编语言中用一下方法处理。(1)通过寄存器名指明要处理的数据的尺寸。例如:下面的指令中,寄存器指明了指令进行的是字操作:mov ax,1mov bx,ds:[0]mov ds,axmov ds:[0],axinc axadd ax,1000下面的指令中,寄存器指明... 阅读全文
posted @ 2010-10-24 17:03 浪里飞 阅读(10264) 评论(0) 推荐(0) 编辑
摘要: SOURCES的文件格式: TARGETNAME=drivername , -本参数用于指定生成的设备驱动程序名称(不需后缀名),所产生的文件 -为drivername.sys. TARGETPATH=.\lib -本参数用于指定生成的设备驱动程序所存放的路径.一般采用.\lib. TARGETTYPE=DRIVER -build能够生成许多不同的目标对象,设备驱动程序一般选用DRIVER. IN... 阅读全文
posted @ 2010-10-24 15:38 浪里飞 阅读(868) 评论(0) 推荐(0) 编辑
摘要: 1)默认情况下,内核加载器会加载所有的代码部分和全局数据到非分页内存中。而且,加载器是一次加载整个驱动的可执行文件,包括相关的DLL。加载后,内核加载器关闭驱动程序文件,甚至你可以删除当前正在执行的驱动文件。 但是,你可以告诉加载器你希望驱动的哪部分是可分页,所谓可分页,就是可能会被换页出内存(Page out)。可以使用下面的指令来实现: #define ALLOC_PRAGMA #pragma... 阅读全文
posted @ 2010-10-24 15:30 浪里飞 阅读(2977) 评论(0) 推荐(1) 编辑
摘要: 在《Windows驱动开发技术详解》书中讲述了如何设定VC以编译驱动程序,不过稍有点麻烦。 在[2,3]中也有用VC设置的方法。不过有点麻烦。 下面,我们用另外一种方法来进行编译: 在[4]官网上下载如下几个文件: ddkwizard_setup_v1.3.0a.exe, ddkbuild_bat.zip, ddkbuild_cmd.zip 不过太慢,我下了,在CSDN上传中[7]。 步骤: 1、... 阅读全文
posted @ 2010-10-24 12:30 浪里飞 阅读(2102) 评论(1) 推荐(0) 编辑
摘要: 9、Windows驱动程序的入口函数规定为_DriverEntry@8,所以用C++编写时要用extern。驱动程序中,不能使用编译器运行时函数,甚至C语言中的malloc,C++的new函数都不能用,因为他们在VC中的实现都是调用了Win32 API了。要用的话,必须自己重载new等运算符。大部分运行时函数是通过Win32 API实现的。在内核模式下无法调用用户模式的程序,而用户模式下通过参数审... 阅读全文
posted @ 2010-10-23 23:49 浪里飞 阅读(2323) 评论(0) 推荐(0) 编辑
摘要: 一、基本框架 二、基本概念 1、操作系统的主要任务是调度线程,还有一些必要的工作,如:内存管理,进程管理,安全管理和I/O管理,这些部分叫做执行部件。 2、Ring是CPU的概念,而用户/内核模式是操作系统的概念。编写驱动主要为了操作硬件,如访问物理内存,设备端口等。驱动程序相当于内核的补丁,不同硬件设备会有不同的补丁。Windwos中,用户态与内核态切换通过软中断来进行。 3、操作系统分层 W... 阅读全文
posted @ 2010-10-23 23:05 浪里飞 阅读(1274) 评论(0) 推荐(0) 编辑
摘要: 10、HOOK SSDT 的实现 SSDT 的全称是System Services Descriptor Table,即系统服务描述符表。这个表的作用是把ring3 的Win32 API 与ring0 的内核API 联系起来。当然SSDT 并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数个数等。 通过修改此表的函数地址可以对常用的Windows AP... 阅读全文
posted @ 2010-10-20 22:08 浪里飞 阅读(827) 评论(0) 推荐(0) 编辑
摘要: 8、加裁驱动,驱动与设备1)前面我们主要通过Driver Studio和KmdManager。现在了解一下程序加裁。Windows NT式驱动是基于服务方式加载的,可以通过修改注册表内容完成,也可以通过服务相关API完成。设备驱动程序的动态加载主要由服务控制管理程序(Service Control Manager, SCM)系统组件完成,该组件可以启动、停止和控制服务等。具体加裁方法,参见 [1,... 阅读全文
posted @ 2010-10-20 22:01 浪里飞 阅读(2121) 评论(0) 推荐(0) 编辑
上一页 1 ··· 65 66 67 68 69 70 71 72 73 ··· 75 下一页