
Sys
Sidyhe
这个作者很懒,什么都没留下…
展开
-
EPROCESS取进程全路径(xp)
上一篇文章在xp下取路径太麻烦既然规定在了xp系统下,为什么不硬编码呢?好吧,走起~~~原创 2015-02-08 17:10:39 · 1795 阅读 · 0 评论 -
为每一个CPU执行一次DPC例程
...原创 2016-11-02 06:11:07 · 1739 阅读 · 1 评论 -
RtlCopyMemoryEx
//这个函数只是为了修改只读内存BOOLEAN RtlCopyMemoryEx(PVOID lpBaseAddress, PVOID lpBuffer, ULONG nSize){ BOOLEAN bRet = FALSE; MDL *lpMdl; PVOID lpMappedAddress; if (lpMdl = IoAllocateMdl(lpBaseAddress, nSiz原创 2013-08-09 06:40:30 · 1847 阅读 · 0 评论 -
CopyOnWrite
if (Write == 0 && CopyOnWrite == 1){ copy memory make page writeable}原创 2013-10-11 21:29:42 · 746 阅读 · 0 评论 -
<<自己动手写操作系统>>学习笔记(一)---MBR,PBR,BPB,文件系统
本来是想去学NASM的,又发现优快云论坛中有人有FASM写简单的系统,由于熟悉FASM所以还是用这个吧。结合书本又查阅了下资料,现在我们所使用的计算机引导过程应该是这样的:BIOS->MBR->活动分区->PBR->OS LOADER->加载内核MBR=Master Boot Record,结构如下:;主引导记录,512字节struct STRUCT_MASTER_BOOT原创 2012-06-29 22:20:15 · 4071 阅读 · 1 评论 -
<<自己动手写操作系统>>学习笔记(一)---后记
比划着书,反汇编着NTLDR,大概写一个MBR出来了,但貌似进入了死循环???我把编译出来的文件写入磁盘MBR中,重启,没反应,各种调试输出没错很大可能是:MBR读取了MBR再次加载到0x7C00转移控制权?我明明读取的是分区表的PBR呀?贴代码吧。bios.incinclude 'macro/struct.inc';BIOS服务中断定义;从下一设备启动BIOS_BOO原创 2012-07-02 21:46:15 · 2600 阅读 · 3 评论 -
调试MBR的预备工作
目的:写一个能够兼容windows引导的MBR(好像所有的MBR都是差不多的?)下载一个bochs模拟器,我现在下载到最新的版本是2.5.1,安装。执行“开始->程序->bochs->Disk Image Creation Tool”创建一个IMG我这里创建一个hd类型的10MB磁盘,创建完成后程序会提示你一个IMG的配置信息,如下:ata0-master: type=disk原创 2012-07-12 01:00:13 · 2178 阅读 · 0 评论 -
使用BOCHS调试MBR
基于上一篇文章,所有操作完成之后运行“WinXP.bxrc”,不出意外的话会提示“NTLDR is missing”这就可以了。新建一个BAT,内容如下:..\bochsdbg.exe -q -f WinXP.bxrc执行BAT就进入了调试模式,两个窗口全部停住,界面如下:现在的CPU应该是停在了F000:FFF0地址,是一个JMP指令,用于跳转到BIOS的ROM中。之后的原创 2012-07-13 12:12:26 · 2953 阅读 · 0 评论 -
MBR初步架构
MBR的功能就是读取PBR到0x7C00然后转移控制权,说到底就是对于磁盘的操作,如何读扇区。根据资料得知,硬盘目前有三种工作模式:1.NOMAL模式(支持最大容量为528MB)2.LBA模式=Logical Block Addressing Mode(线性表示扇区,支持最大容量为137.4GB)3.LARGE模式PBR在什么位置决定了读取方式,而不是仅由硬盘容量判断。原创 2012-07-13 12:51:14 · 1270 阅读 · 0 评论 -
MBR完整架构
上一篇文章描述了如何使用LBA模式读取MBR。但好像并不是所有的BIOS都支持LBA模式,所以最原始的CHS模式(NOMAL模式)也是有必要的。换句话来说,如果PBR在528MB以内,就没有必要使用LBA模式。大概流程是判断CHS是否有效,有效(528MB以内)则使用CHS模式。那么如何知道CHS是有效的呢?我自己用虚拟机实践了一下,一个20G的硬盘,分成两个10G的主分区,并原创 2012-07-14 00:35:52 · 1674 阅读 · 0 评论 -
x64记录
CS=0x23=x86 modeCS=0x33=x64 mode原创 2013-10-02 21:29:11 · 924 阅读 · 0 评论 -
MmReMapSpace
typedef VOID (*pfnReMapCallBack)(PVOID MapAddress, ULONG MapSize, PVOID MappedAddress, PVOID p1, PVOID p2, PVOID p3, PVOID p4);VOID MmReMapSpace(PVOID MapAddress, ULONG MapSize, pfnReMapCallBack lpfn原创 2013-10-05 12:50:36 · 1002 阅读 · 0 评论 -
随便记几个函数
ULONG Rav2Raw(PVOID lpFileBuffer, ULONG Rva){ PIMAGE_DOS_HEADER lpDosHeader = (PIMAGE_DOS_HEADER)lpFileBuffer; PIMAGE_NT_HEADERS32 lpNtHeader = (PIMAGE_NT_HEADERS32)((PCHAR)lpDosHeader + lpDosHeade原创 2013-10-05 14:39:39 · 874 阅读 · 0 评论 -
PspGetBaseTrapFrame(x64)
typedef struct _KERNEL_STACK_SEGMENT{ ULONG_PTR StackBase; ULONG_PTR StackLimit; ULONG_PTR KernelStack; ULONG_PTR InitialStack; ULONG_PTR ActualLimit;} KERNEL_STACK_SEGMENT, *PKERNEL_STACK_SEGM原创 2014-04-05 22:26:49 · 2150 阅读 · 0 评论 -
EPROCESS取进程全路径
Windows内核中通过PEPROCESS获取进程全路径。原创 2015-01-21 16:13:59 · 5661 阅读 · 0 评论 -
Windows内核中的读写锁
...转载 2016-11-01 05:03:40 · 1349 阅读 · 0 评论