在上一章<驱动开发:内核LDE64引擎计算汇编长度>中,LyShark教大家如何通过LDE64引擎实现计算反汇编指令长度,本章将在此基础之上实现内联函数挂钩,内核中的InlineHook函数挂钩其实与应用层一致,都是使用劫持执行流并跳转到我们自己的函数上来做处理,唯一的不同的是内核Hook只针对内核API函数,但由于其身处在最底层所以一旦被挂钩其整个应用层都将会受到影响,这就直接决定了在内核层挂钩的效果是应用层无法比拟的,对于安全从业者来说学会使用内核挂钩也是很重要. 挂钩的原理可以总结为,通…
转载:http://blog.csdn.net/heyabo/article/details/8721611 转载:http://www.cnblogs.com/ljinshuan/archive/2012/03/15/2397743.html 一.建立通信端口 在DriverEntry函数里创建一个安全性叙述子. 函数FltBuildDefaultSecurityDescriptor是用来申请一个安全叙述子(简单点就是给使用通信端口的用户申请个权限,这里可以看到申请的权限是FLT_PORT_A…
搞内存常用函数 C语言 内核 malloc ExAllocatePool memset RtlFillMemory memcpy RtlMoveMemory free ExFreePool…
参考资料 https://blog.csdn.net/wdykanq/article/details/7752909 http://blog.51cto.com/laokaddk/404584 内核层创建内存映射用户层 PVOID pShareMM_SYS; PMDL pShareMM_MDL; PVOID pShareMM_User; PKUANGKEEPROCESS vEProcess = KuangKeGetProcessById(3412); KAPC_STATE vKapcState;…
这篇是计算机中Windows Mobile/Symbian类的优质预售推荐<Windows内核安全与驱动开发>. 编辑推荐 本书适合计算机安全软件从业人员.计算机相关专业院校学生以及有一定C语言和操作系统基础知识的编程爱好者阅读. 内容简单介绍 本书的前身是<天书夜读--从汇编语言到Windows内核编程>和<寒江独钓--Windows内核安全编程>. 与Windowsclient安全软件开发相关的驱动程序开发是本书的主题. 书中的程序使用环境从32位到64位.从Win…
(原书)所有内核空间共享,DriverEntery是内核程序入口,在内核程序被加载时,这个函数被调用,加载入的进程为system进程,xp下它的pid是4.内核程序的编写有一定的规则: 不能调用windows运用层API函数 很多C标准函数失去意义,如printf,fopen,fwrite等,它们有专门的内核函数 很多单纯的C标准,如string.h(不涉及I/O及网络等)等还是适用 可以使用标准C语言,但是用浮点数之前要特殊处理 WDK提供大量System Routine以供调用,相当于运用层…
Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html   IT168 技术文档]在开始步入Linux设备驱动程序的神秘世界之前,让我们从驱动程序开发人员的角度看几个内核构成要素,熟悉一些基本的内核概念.我们将学习内核定时器.同步机制以及内存分配方法.不过,我们还是得从头开始这次探索之旅.因此,本章要先浏览一下内核发出的启动信息,然后再逐个讲解一些有意思的点. 2.1 启动过程 图2-1显示…
在Windows NT中,80386保护模式的“保护”比Windows 95中更坚固,这个“镀金的笼子”更加结实,更加难以打破.在Windows 95中,至少应用程序I/O操作是不受限制的,而在Windows NT中,我们的应用程序连这点权限都被剥夺了.在NT中几乎不太可能进入真正的ring0层. 在Windows NT中,存在三种Device Driver: 1.“Virtual device Driver” (VDD).通过VDD,16位应用程序,如DOS 和Win16应用程序可以访问特定的…
在Windows NT中,80386保护模式的“保护”比Windows 95中更坚固,这个“镀金的笼子”更加结实,更加难以打破.在Windows 95中,至少应用程序I/O操作是不受限制的,而在Windows NT中,我们的应用程序连这点权限都被剥夺了.在NT中几乎不太可能进入真正的ring0层. 在Windows NT中,存在三种Device Driver: 1.“Virtual device Driver” (VDD).通过VDD,16位应用程序,如DOS 和Win16应用程序可以访问特定的…
近日稍微对Android中的驱动开发做了一些简要的了解. HAL:Hardware Abstract Layer 硬件抽象层,由于Linux Kernel需要遵循GPL开源协议,硬件厂商为了保护自己硬件方面的各项参数不被外泄,而一个设备的驱动程序包含了硬件的一些重要参数,所以驱动的开源势必会使硬件厂商蒙受损失,Google为了保护硬件厂商的利益,所以在Android系统中加入了HAL层,在HAL层中不必遵循GPL协议,所以代码可以封闭. 所以如果硬件驱动开源的写在Kernel里,Framewor…