
内核开发
文章平均质量分 90
jjjyu123
这个作者很懒,什么都没留下…
展开
-
windos的启动过程
一.内核的引导 在intel x86系统上,windows操作系统获得控制首先从硬盘的主引导记录(MBR,Master Boot Record)开始,windows setup程序在安装windows时候填充mbr.mbr包含代码和数据,其代码称为引导代码,在系统引导时候首先获得控制权;MBR中的数据是一张分区表,指定了每个分区在磁盘上的位置和大小,以及分区的类型。当MBR中的引导代码被转载 2013-09-09 13:52:12 · 794 阅读 · 0 评论 -
KPROCESS IDT PEB Ldr 《寒江独钓》内核学习笔记(3)
继续上一篇(2)未完成的研究,我们接下来学习 KPROCESS这个数据结构。 1. 相关阅读材料《深入理解计算机系统(原书第2版)》 二. KPROCESSKPROCESS,也叫内核进程块。我们在开始学习它的数据机构之前,首先要思考的一个问题是,它和EPROCESS名字感觉差不多,那它们之间是什么关系呢?它们在内核区域中都位于那一层呢?转载 2013-12-30 07:29:02 · 1282 阅读 · 0 评论 -
IRP IO_STACK_LOCATION 《寒江独钓》内核学习笔记(1)
在学习内核过滤驱动的过程中,遇到了大量的涉及IRP操作的代码,这里有必要对IRP的数据结构和与之相关的API函数做一下笔记。 1. 相关阅读资料《深入解析 windows 操作系统(第4版,中文版)》 --- 9章《windows driver kit 帮助文档》http://support.microsoft.com/kb/115758/zh-cn转载 2013-12-30 06:51:54 · 1434 阅读 · 0 评论 -
KTHREAD 线程调度 SDT TEB SEH shellcode中DLL模块机制动态获取 《寒江独钓》内核学习笔记(5)
继续我们的线程相关的数据结构的学习。接下来我们学习 KTHREAD,TEB这两个结构。 1. 相关阅读材料1. 《加密与解密3》2. [经典文章翻译]A_Crash_Course_on_the_Depths_of_Win32_Structured_Exception_Handling.pdf3. 《0 DAY安全: 软件漏洞分析技术》转载 2013-12-30 07:42:07 · 2113 阅读 · 0 评论 -
EPROCESS 进程/线程优先级 句柄表 GDT LDT 页表 《寒江独钓》内核学习笔记(2)
在学习笔记(1)中,我们学习了IRP的数据结构的相关知识,接下来我们继续来学习内核中很重要的另一批数据结构: EPROCESS/KPROCESS/PEB。把它们放到一起是因为这三个数据结构及其外延和windows中进程的表示关系密切,我们在做进程隐藏和进程枚举的时候一定会涉及到这3类数据结构,所以这里有必要及时做一下总结,做个学习笔记,理清思路。 1. 相关阅读材料《win转载 2013-12-30 07:17:58 · 4551 阅读 · 0 评论 -
理解和使用NT驱动程序的执行上下文(二)
驱动程序的分派例程执行时所处的上下文应该引起特别的注意。在许多情况下,内核模式驱动程序的分派例程运行在调用者用户线程的上下文中。图 1 显示了为什么会这样。当一个用户线程向一个设备发出了 I/O 函数调用,例如通过调用Win32 的 ReadFile(…) 函数,将产生一个系统服务请求。在 Intel 架构的处理器上,这样的请求依靠通过一个中断门的软中断来实现。中断门把处理器的当前权限级别改变到内转载 2013-12-29 19:38:13 · 694 阅读 · 0 评论 -
理解和使用NT驱动程序的执行上下文
理解Windows NT驱动程序最重要的概念之一就是驱动程序运行时所处的“执行上下文”。理解并小心地应用这个概念可以帮助你构建更快、更高效的驱动程序。NT标准内核模式驱动程序编程中的一个重要观念是某个特定的驱动程序函数执行时所处的“上下文”。传统上文件系统开发者最关注这个问题,但所有类型的NT内核模式驱动程序的编写者都能从对执行上下文的深刻理解中获益。小心谨慎地使用执行上下文的概念能帮助构转载 2013-12-09 23:04:15 · 587 阅读 · 0 评论 -
句柄表
2K:2K下采用三层表结构,上层表256个项,每个项占用4字节 对应一个中层表的地址,每个中层表有256项,每个项占用4字节对应一个下层表地址,每个下层表256项,每个项占用8字节(每个项就是HANDLE_TABLE_ENTRY)。因此 每个进程支持256*256*256个句柄上层表大小:256 * 4字节 = 1KB中层表大小:256 *4字节 = 1KB转载 2013-11-25 05:05:30 · 755 阅读 · 0 评论 -
MmGetSystemRoutineAddress
MmGetSystemRoutineAddress这个函数也是比较有用的,是得到系统导出函数的地址,不过网上都是写了一堆汇编代码在哪里,根本没有可读性,还不如用IDA看呢。下面的函数是摘自ReactOS项目的代码:[cpp] view plaincopyPVOID NTAPI MmGetSystemRoutineAddre转载 2013-10-30 11:22:13 · 1874 阅读 · 0 评论 -
PE文件格式
标 题: 【翻译】“PE文件格式”1.9版 完整译文(附注释) 作 者: ah007 时 间: 2006-02-28,13:32链 接: http://bbs.pediy.com/showthread.php?threadid=21932$Id: pe.txt,v 1.9 1999/03/20 23:55:09 LUEVELSMEYER Exp $PE文件格式系列译文之转载 2013-10-30 15:22:07 · 819 阅读 · 0 评论 -
认识PE中的IMPort表
有很多介绍PE文件的文章,但是我打算写一篇关于输入表的文章,因为它对于破解很有用。 我想解释它的最好的方法是举一个例子,你可以跟着我逐步深入,一步一步的思考,最后你将完全明白,我选择了一个我刚下载下来的小程序,它是用TASM编译的,有一个比较小的输入表,所以我想它应该是个不错的范例。 好了,让我们开始吧。首先我们得找到输入表,它的地址放在PE文件头偏移80处,所以我们用16转载 2013-10-29 22:11:10 · 649 阅读 · 0 评论 -
导出函数和未导出函数
导出函数,非导出函数,公开函数,非公开函数导出函数:顾名思义,出现在导出表(EAT)里面的函数,可以给外部调用的函数,验证是否为导出函数的方法,熟悉逆向的朋友可以使用LordPE之类的工具查看,当然也可以使用GetProcAddress或者MmGetSystemRoutineAddress之类的函数来获取地址,如果成功的话就是导出函数。非导出函数:这种函数是供自己调用使用的,不想提转载 2013-10-30 01:16:07 · 3167 阅读 · 0 评论 -
由API-系统调用模式探析windows NT内核
由API-系统调用模式探析windows NT内核0、最常见的疑惑这个程序是怎么运行的?为什么一双击exe文件就开始运行了呢?程序和操作系统什么关系呢?其实很多人都有这些问题,如果有人能回答,说不一定这个回答的人也不一定真正明白。其实,可以毫不夸张的说,如果你明白了从双击可执行文件到出现一个窗口的具体过程,那么你对操作系统已经算入门了。1、运行程序的方式在windows下运行程转载 2013-10-25 10:36:22 · 1358 阅读 · 0 评论 -
从软盘启动并读取指定文件内容到指定位置内存
;从软盘启动并读取名字为LOADER.BIN的文件到指定位置的内存中,然后跳转到该指定位置处;%define _BOOT_DEBUG_; 做 Boot Sector 时一定将此行注释掉!将此行打开后用 nasm Boot.asm -o Boot.com 做成一个.COM文件易于调试%ifdef _BOOT_DEBUG_org 0100h ; 调试状态, 做成 .C转载 2013-10-03 16:49:13 · 880 阅读 · 0 评论 -
boot.asm
org 07c00h ; 告诉编译器程序加载到7c00处 mov ax, cs mov ds, ax mov es, ax call DispStr ; 调用显示字符串例程 jmp $ ; 无限循环DispStr: mov ax, BootMessage mov bp, ax ; ES:BP = 串地址 mov cx, 16 ; CX = 串转载 2013-10-02 14:42:24 · 665 阅读 · 0 评论 -
bochs调试
bochs调试FAQ:1. Q:如何从引导扇区开始设置断点?A: BIOS被载入内存中运行,其引导扇区的地址一般都是在0x7c00,因为在实模式下,逻辑地址和物理地址是一一对应的, 所以我们可以在启动bochs调试的命令行下输入 pb 0x7c00 或者 vb 0:0x7c00就着输入 cbochs就会在0x7c00处停下 2转载 2013-10-02 17:30:24 · 557 阅读 · 0 评论 -
NASM语法
要汇编一个文件,你可以以下面的格式执行一个命令:nasm -f [-o ]比如, 会把文件'myfile.asm'汇编成'ELF'格式 的文件'myfile.o'.还有:nasm -f bin myfile.asm -o myfile.com会把文件'myfile.asm'汇编成纯二进制格式的文件'myfile.com'。转载 2013-09-24 23:01:55 · 6152 阅读 · 0 评论 -
内核驱动开发的准备知识
计算机各项技术学习的最优原则,应该是先浏览一片森林,再模仿一棵树,所以在学写第一个驱动程序前,有必要把了解一下驱动运行的背景。大至驱动在计算机中的启动顺序和过程,小至驱动开发中内存的使用,都应该有所了解。下面我来整理下今天所看资料中的一些知识。 一。驱动开发中的内存 1.整个内存的分布原创 2013-09-11 11:11:02 · 779 阅读 · 0 评论 -
THREAD APC 《寒江独钓》内核学习笔记(4)
继续学习windows 中和线程有关系的数据结构: ETHREAD、KTHREAD、TEB 1. 相关阅读材料《windows 内核原理与实现》 --- 潘爱民 2. 数据结构分析我们知道,windows内核中的执行体层负责各种与管理和策略相关的功能,而内核层(微内核)实现了操作系统的核心机制。进程和线程在这两层上都有对应的数据结转载 2013-12-30 07:33:25 · 1936 阅读 · 0 评论