(原书)所有内核空间共享,DriverEntery是内核程序入口,在内核程序被加载时,这个函数被调用,加载入的进程为system进程,xp下它的pid是4.内核程序的编写有一定的规则: 不能调用windows运用层API函数 很多C标准函数失去意义,如printf,fopen,fwrite等,它们有专门的内核函数 很多单纯的C标准,如string.h(不涉及I/O及网络等)等还是适用 可以使用标准C语言,但是用浮点数之前要特殊处理 WDK提供大量System Routine以供调用,相当于运用层…
1) 基础篇是讲理论的,先跳过去,看不到代码运行的效果要去记代码是一个痛苦的事情.这里先跳入探索篇.其实今天的确也很痛苦,这作者对驱动开发的编译与调试环境介绍得太模糊了,我是各种尝试,对这个环境的搭建还是不够理想,这里稍微做下笔记. 2)概念:普通运用程序开发在R3,而内核开发在R0,R0是最高特权等级.内核空间不同于普通的程序代码空间,独享4GB寻址过程,内核空间被所有的运用程序共享,一旦内存程序崩溃,系统将崩溃,导致蓝屏或者重启. 3) 开发与调试方案:基于上述的概念,调试内核程序是一个很要…
Windebug双机调试环境搭建    开始进行内核编程/驱动编程的调试工作是非常烦人的,由于程序运行与内核层不受操作系统的管控,所以容易引起主机蓝屏和崩溃是常有的事.这也就使得内核程序的调试成了一大问题,而在资源有限的时候,利用虚拟机进行调试是一个很好的选择,这样一来即使是虚拟机因为调试问题而发生蓝屏或崩溃的问题也不至于殃及主机. 今天在搭建环境过程中还是遇到了不少问题,虽然关于这方面的文章已经很多了,但是有一些细节还是会不小心被忽略,而这往往导致最后环境搭建的失败.在这里就相当于做个总结吧,…
Lua+Redis 断点调试环境搭建 windows环境,使用Redis,写lua脚本头疼的问题之一不能对脚本断点调试,google加上自己的摸索,终于搞定. 1.下载ZeroBraneStudio,我下载的是破解版(我自己为自己感到可耻,其实并不贵,百十来块钱的样子) 解压后在bin下有lua解释器的路径,把该路径添加到环境变量中:假设解释器路径是:D:/ZeroBraneStudio/bin/lua.exe,那么就把D:/ZeroBraneStudio/bin添加到Path环境变量下. 2.…
前言 Android的内核采用的是 Linux 内核,所以在Android内核中进行漏洞利用其实和在 一般的 x86平台下的 linux 内核中进行利用差不多.主要区别在于 Android 下使用的是arm汇编以及环境的搭建方面.本文对我最近的实践做一个分享,其实很简单. 内核调试环境搭建 搭建平台: ubuntu 16.04 这里使用 android 模拟器来进行内核调试.首先下载内核代码 git clone https://aosp.tuna.tsinghua.edu.cn/kernel/g…
1)Windows运用程序的文件与注册表操作进入R0层之后,都有对应的内核函数实现.在windows内核中,无论打开的是文件.注册表或者设备,都需要使用InitializeObjectAttributes来初始化一个OBJECT_ATTRIBUTES结构体: VOID InitializeObjectAttributes( [out] POBJECT_ATTRIBUTES InitializedAttributes, //OBJECT_ATTRIBUTES的指针 [in] PUNICODE_ST…
1)跳入到基础篇的内核编程第7章,驱动入口函数DriverEnter的返回值决定驱动程序是否加载成功,当打算反汇编阅读驱动内核程序时,可寻找该位置. 2)DRIVER_OBJECT下的派遣函数(分发函数)指针的个数为:IRP_MJ_MAXINUM_FUNCTION,保存在一个数组中,编写驱动程序,实质上就是自己编写处理I/O请求IRP包的派遣函数,可以使用for循环将所有的派遣函数注册到同一个派遣函数.分发函数类似MFC消息机制中的回调函数,它的名字也是程序员自定义的,但是参数确定.卸载函数通过…
前言: 本文是以单独下载codeblock编辑器跟MinGW编译器这种方式进行安装,下载带MinGW编译器的codeblocks版本安装配置方式跟这个类似. 一: 下载并安装MinGW 这个参考我写的另一篇博文<windows平台eclipse for C++开发环境搭建>,在此不再重复. 二:安装并配置codeblocks 1 从官方网站http://www.codeblocks.org/ 下载不包含编译器的版本进行安装. 2 如果是先安装MinGW并配置好后,再安装codeblocks的话…
第一步:先安装sublime text3.详细教程可自行百度,这边不具体介绍了. 第二步.安装nodejs插件,有两种方式 第一种方式:直接下载https://github.com/tanepiper/SublimeText-Nodejs 压缩包,压缩后重命名为Nodejs放到package目录下.package打开方式:Preferences-> Browser Package 第二种方式:通过package control install package的方式下载 第三步:安装nodejs.…
花了好几天,搭建好windows和linux下连接HDP集群的调试环境,在此记录一下 hadoop2.2.0的版本比hadoop0.x和hadoop1.x结构变化很大,没有eclipse-hadoop插件支持,在网上找了好久才找到,自己编译的比较麻烦,而且不成功,还好最后找到了. 环境及配置: 1.eclipse版本及hadoop插件下载地址:http://download.csdn.net/detail/kangdakangdaa/7880519 如果要用myeclipse开发方便的朋友,采用…