操作系统
虚构之人
夫学须静也,才须学也,非学无以广才,非志无以成学。
展开
-
使用Detours进行HOOK
Detours是微软研究院开发的一款软件工具,用于Windows平台上的应用程序重定向和修改。它可以在运行时修改应用程序的执行路径,允许开发人员注入自定义代码来改变应用程序的行为,而不需要修改其源代码。Detours通常用于进行应用程序的跟踪、调试、性能分析以及行为修改等任务。Detours的工作原理是通过截取目标应用程序的API调用,然后将这些调用重定向到开发人员自己编写的代码中。原创 2024-03-31 14:53:31 · 369 阅读 · 2 评论 -
WINHTTP忽略HTTPS证书
【代码】WINHTTP忽略HTTPS证书。原创 2024-02-01 18:09:25 · 683 阅读 · 1 评论 -
Windows API压缩与解压
Windows API压缩与解压。原创 2023-12-29 15:20:47 · 495 阅读 · 0 评论 -
驱动ShellCode注入
【代码】驱动ShellCode注入。原创 2023-12-29 14:29:33 · 437 阅读 · 0 评论 -
Potato提权(原理简述)
在红蓝对抗过程中Web打点之后往往需要进行提权才能进行横向操作,本篇文章将简单讲述土豆提权原理。原创 2023-12-29 14:24:50 · 964 阅读 · 0 评论 -
VS双机调试
使用VS双机调试驱动原创 2023-11-21 15:17:09 · 285 阅读 · 0 评论 -
Minifilter过滤驱动与R3程序通讯实现文件保护
实现保护文件或目录、R3层通过与过滤驱动通讯通知要保护的文件或目录,可执行创建不可删除或修改原创 2023-09-07 16:09:25 · 298 阅读 · 0 评论 -
操作系统真相还原第0章笔记
最近在看操作系统真相还原,这是第0章笔记很多知识点其实在逆向中都学过但是也有不少新的点使得理解更加深入是一本不错的书。原创 2022-12-22 21:17:35 · 235 阅读 · 0 评论 -
软件调试基础
作为一个程序员必须对软件调试的过程有一个基本的认识。原创 2022-07-12 21:15:51 · 1348 阅读 · 0 评论 -
Windows操作系统内存管理
Windows操作系统的内存管理机制概述原创 2022-06-21 16:39:56 · 801 阅读 · 0 评论 -
句柄与跨进程读写
跨进程读写内存#### 跨进程的本质跨进程的本质是进程挂靠正常情况下,A的进程的线程只能访问A进程的地址空间,如果A进程的线程想要访问B进程的地址空间,就要修改当前Cr3的值为B进程页目录表基值(KPROCESS.DirectoryTableBase).即:mov cr3,B.DirectoryTableBaseNtReadVirtualMemory API 流程解析:1.切换Cr32.将数据读复制到高2G3.切换Cr34.从高2G复制到目标位置该API功能是读取进程内存,原理是将目标原创 2022-05-19 22:08:07 · 472 阅读 · 0 评论 -
进程挂靠技术
进程与线程一个进程可以包含多个线程一个进程至少要有一个线程进程为线程提供资源,也就是提供Cr3值,Cr3中存储的是页目录表基址,Cr3确定了,线程能访问的内存也就确定了。线程代码:mov eax,dword ptr ds:[0x12345678]CPU解析过程:(1)CPU解析线性地址时要通过页目录表在找对应的物理页,页目录表基址存在 Cr3寄存器中。(2)当前的Cr3的值来源于当前的进程(_KPROCESS.DirectoryTableBase(+0x018))线程与进程的如何关联原创 2022-04-23 12:53:02 · 364 阅读 · 0 评论 -
Windows线程(模拟线程切换、主动切换、时钟中断切换、时间片管理、TSS、FS、线程优先级)
ThreadSwitch源码分析线程结构体(ThreadSwitch源码仿照EHREAD)typedef struct { char *name;//线程名 相当于线程TID int Flags;//线程状态 int SleepMillisecondDot;//休眠时间 void *InitialStack;//线程堆栈起始位置 void *StackLimit;//线程堆栈界限 void *KernelStack;//线程堆栈当前位置,也就是ESP void *lpParameter;/原创 2022-04-17 20:39:08 · 1677 阅读 · 0 评论 -
等待链表_调用链表、KPCR
KPCRKPCR:CPU控制区(Process Control Region)在逆向操作系统内核中存在三个关键的结构体,分别是EPRCOESS(进程结构体)、ETHREAD(线程结构体)、KPCR(CPU控制区)每一个CPU都有一个KPCR结构体用于存储一些数据。KPCR类似于线程结构体的一个副本用于快速查询。KPCR介绍1.当线程进入0环时,FS:[0]指向KPCR(3环时指向FS:[0]->TEB)2.每个CPU都有一个KPCR结构体(一个核心一个)3.KPCR中存储了CPU本原创 2022-03-30 11:53:02 · 629 阅读 · 0 评论 -
进程结构体
进程结构体EPROCESS每个windows进程在0环都有对应的结构体:EPROCESS这个结构体包含了进程所有重要的信息。使用windbg查看:dt _EPROCESSEPROCESS与PEB是有区别的:EPROCESS在0环PEB在3环。EPROCESS结构体属性(KPROCESS)+0x0 Pcb 是一个KPROCESS结构体Windbg查看KPROCESS:dt _KPROCESSKPROCESS第一个属性:+0x0 Header DISPATCHER_HEARDER只要是该DI原创 2022-03-17 16:17:10 · 4695 阅读 · 0 评论 -
PWT_PCD、中断与异常
PWT_PCD#### CPU缓存(1)CPU缓存位于是位于CPU与物理内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存快的多。(2)CPU缓存与TLB的区别:TLB:线性地址<------>物理地址CPU缓存:物理地址<---->内容PWT:Page Write ThroughPWT=1时,写Cache的时候也要将数据写入内存中。PCD:Page Cache DisablePCD=1时,禁止某个页写入缓存,直接写入内存。比如,做页表用的页,已原创 2022-03-17 16:15:52 · 534 阅读 · 0 评论 -
PDE_PTE属性(US_PS_A_D)、页目录表基址、页表基址、2-9-9-12分页、TLB
PDE_PTE属性(US_PS_A_D)US位US位位于PDE和PTE下标位2的位置,U/S=0 特权用户U/S=1 普通用户例子:修改一个高2G线性地址的PDE/PTE属性,实现Ring3可读,比如:0x8003F00CP/S位(大页分页)大小为4MBPS位位于PTE的低7位。P/S位只对PDE有意义,PS==PageSize的意思,当PS==1的时候PDE直接指向物理页,无PTE,低22位是页内偏移。比如:之前的10-10-12寻找物理页的方式是10:页目录表10:页表12原创 2022-02-28 00:28:34 · 1139 阅读 · 0 评论