摘要:Windows中,不管是应用程序还是内核程序,都不能直接访问物理内存,所有非IO指令都只能访问虚拟内存地址,如Mov eax, DWORD PTR[虚拟地址]形式,但是,有时候,我们明明已经知道了某个东西固定在物理内存条某处,假如系统时间的值永远固定存放在物理内存条的物理地址0x80000000处,
阅读全文
摘要:参考:《Windows内核情景分析》 0x01 ObReferenceObjectByHandle 这个函数从句柄得到对应的内核对象,并递增其引用计数。 两个特殊情况: #define NtCurrentProcess() (HANDLE)-1 #define NtCurrentThread() (
阅读全文
摘要:创建对象的三大步骤: 1.通过ObCreateObject函数创建目标对象。 2.目标对象本身的初始化 3.通过ObInsertObject将目标对象插入对象目录和句柄表,并返回句柄。 ObCreateObject函数用来创建一个指定类型的内核对象。 其实真正的工作函数是ObpAllocateObj
阅读全文
摘要:0x01 对象 在计算机中,“对象”是个专有名词,其定义是“一个或一组数据结构及定义在其上的操作” 。 对于几乎所有的内核对象,windows都提供一个统一的操作模式,就是先通过系统调用打开或创建目标对象,让当前进程与目标对象之间建立起连接,然后再通过别的系统调用进行操作,最后通过系统调用关闭对象。
阅读全文
摘要:0x01 句柄,句柄表概念 任意进程,只要每打开一个对象,就会获得一个句柄,这个句柄用来标志对某个对象的一次打开,通过句柄,可以直接找到对应的内核对象。句柄本身是进程的句柄表中的一个结构体,用来描述一次打开操作。句柄值则可以简单看做句柄表中的索引,并不影响理解。HANDLE的值可以简单的看做一个整形
阅读全文
摘要:0x01 ShellExecute 函数原型: 参数说明: ●hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。例如,可以将其设置为应用程序主窗口句柄,即Application.Handle,也可以将其设置为桌面窗口句柄(用GetDesktopWindo
阅读全文
摘要:这些组件对象可以互相通讯与交互,而与它们的语言、分布及原始平台无关。COM规程包括一套标准API、一个标准的接口集以及COM用于支持分布式计算的网络协议。而DCOM模型则是一套用于分布式环境中的COM对象,在DCOM环境中,位于一个网络上的COM对象能与位于另一个网络上的COM对象进行通信。通常我们
阅读全文
摘要:0x01 区别 LoadLibrary是把一个模块映射进调用进程的地址空间,需要时增加引用计数,每调用一次,引用计数增加一,需要通过相同步骤地调用FreeLibrary来减少引用次数,当为0时,系统卸载DLL。 GetModuleHandle是返回一个已经映射进调用进程地址空间的模块的句柄,不增加引
阅读全文
摘要:在XDebug的源码学习中看到的命令行操作,将主要源码摘录出来做了个获取和更改进程命令行的Demo. 0x01 获取命令行 这里获取命令行的方式并不是通过调用GetCommandLine函数。 而是借由ntdll中的NtQueryInformationProcess函数查询ProcessBasicI
阅读全文
摘要:程序中遇到的问题及解决方法: #error WINDOWS.H already included. MFC apps must not #include <windows.h>解决方法:把#include "afxtempl.h"放到程序所包含的所有头文件的前面 vs编译时出现大量ws2def.h的
阅读全文
摘要:( windows 提供的异常处理机制实际上只是一个简单的框架,一般情况下开发人员都不会直接用到。我们通常所用的异常处理(比如 C++ 的 throw、try、catch)都是编译器在系统提供的异常处理机制上进行加工了的增强版本。这里先抛开增强版的不提,主要叙述原始版本。) 0x01 系统如何找到异
阅读全文
摘要:0x01 用户态 在x86系统中,当线程在用户态执行时,段寄存器fs总是指向当前线程的TEB。 在Ntdll中有一个未公开的函数NtCurrentTeb() ,用来取得当前线程的TEB地址。FS:[0]的内容就是TEB的起始四个字节的内容,又因为TIB位于TEB的起始地址处,所以FS:[0]的内容实
阅读全文
摘要:0x01 结构探究 先在win7 x86下通过windbg来探究通过peb来得到进程模块的步骤: 命令!process 0 0 exeplorer.exe 先获取到explorer.exe的EPROCESS的地址,如图我们可以看到EPROCESS的地址为:0x87782d40 ,PEB的地址为:0x
阅读全文
摘要:准备写一个进程管理的功能模块,今天下午先写了扫描获取本机各个进程路径,获取各个进程映像名称,进程完整路径。 要获取进程信息,第一步想到的就是提权,提权代码用过多次了,今天也小结了一下(http://www.cnblogs.com/lsh123/p/8280575.html),不再复述。 0x01 自
阅读全文
摘要:一直在使用的进程提权,今天在这里做个简单的小结。 进程提权需要使用到一组Windows API有: 1.OpenProcessToken 2.LookupPrivilegeValue 3.AdjustTokenPrivileges 值得注意的是,使用这组函数提升权限的前提是进程具备该权限,只是访问令
阅读全文