刘收获

导航

随笔分类 -  Windows 核心编程

1 2 下一页

HYPERSPACE
摘要:Windows中,不管是应用程序还是内核程序,都不能直接访问物理内存,所有非IO指令都只能访问虚拟内存地址,如Mov eax, DWORD PTR[虚拟地址]形式,但是,有时候,我们明明已经知道了某个东西固定在物理内存条某处,假如系统时间的值永远固定存放在物理内存条的物理地址0x80000000处, 阅读全文

posted @ 2018-01-25 15:02 沉疴 阅读(626) 评论(0) 推荐(0) 编辑

ShellExecute, WinExec与CreateProcess
摘要:0x01 ShellExecute 函数原型: 参数说明: ●hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。例如,可以将其设置为应用程序主窗口句柄,即Application.Handle,也可以将其设置为桌面窗口句柄(用GetDesktopWindo 阅读全文

posted @ 2018-01-21 18:28 沉疴 阅读(785) 评论(0) 推荐(0) 编辑

LoadLibrary和GetModuleHandle
摘要:0x01 区别 LoadLibrary是把一个模块映射进调用进程的地址空间,需要时增加引用计数,每调用一次,引用计数增加一,需要通过相同步骤地调用FreeLibrary来减少引用次数,当为0时,系统卸载DLL。 GetModuleHandle是返回一个已经映射进调用进程地址空间的模块的句柄,不增加引 阅读全文

posted @ 2018-01-20 21:05 沉疴 阅读(843) 评论(0) 推荐(0) 编辑

获取,修改进程命令行
摘要:在XDebug的源码学习中看到的命令行操作,将主要源码摘录出来做了个获取和更改进程命令行的Demo. 0x01 获取命令行 这里获取命令行的方式并不是通过调用GetCommandLine函数。 而是借由ntdll中的NtQueryInformationProcess函数查询ProcessBasicI 阅读全文

posted @ 2018-01-20 13:41 沉疴 阅读(2179) 评论(0) 推荐(1) 编辑

通过进程link路径(快捷方式路径)得到进程完整路径
摘要:程序中遇到的问题及解决方法: #error WINDOWS.H already included. MFC apps must not #include <windows.h>解决方法:把#include "afxtempl.h"放到程序所包含的所有头文件的前面 vs编译时出现大量ws2def.h的 阅读全文

posted @ 2018-01-19 21:59 沉疴 阅读(214) 评论(0) 推荐(0) 编辑

SEH X86
摘要:( windows 提供的异常处理机制实际上只是一个简单的框架,一般情况下开发人员都不会直接用到。我们通常所用的异常处理(比如 C++ 的 throw、try、catch)都是编译器在系统提供的异常处理机制上进行加工了的增强版本。这里先抛开增强版的不提,主要叙述原始版本。) 0x01 系统如何找到异 阅读全文

posted @ 2018-01-18 17:03 沉疴 阅读(360) 评论(0) 推荐(0) 编辑

FS:[0] 链条
摘要:0x01 用户态 在x86系统中,当线程在用户态执行时,段寄存器fs总是指向当前线程的TEB。 在Ntdll中有一个未公开的函数NtCurrentTeb() ,用来取得当前线程的TEB地址。FS:[0]的内容就是TEB的起始四个字节的内容,又因为TIB位于TEB的起始地址处,所以FS:[0]的内容实 阅读全文

posted @ 2018-01-17 16:42 沉疴 阅读(853) 评论(0) 推荐(0) 编辑

获取进程ID,父进程ID,进程完整路径
摘要:准备写一个进程管理的功能模块,今天下午先写了扫描获取本机各个进程路径,获取各个进程映像名称,进程完整路径。 要获取进程信息,第一步想到的就是提权,提权代码用过多次了,今天也小结了一下(http://www.cnblogs.com/lsh123/p/8280575.html),不再复述。 0x01 自 阅读全文

posted @ 2018-01-13 21:34 沉疴 阅读(4322) 评论(0) 推荐(1) 编辑

进程提权小结
摘要:一直在使用的进程提权,今天在这里做个简单的小结。 进程提权需要使用到一组Windows API有: 1.OpenProcessToken 2.LookupPrivilegeValue 3.AdjustTokenPrivileges 值得注意的是,使用这组函数提升权限的前提是进程具备该权限,只是访问令 阅读全文

posted @ 2018-01-13 21:20 沉疴 阅读(695) 评论(0) 推荐(0) 编辑

进程工作集WorkingSet (PSAPI 01)
摘要:0x01 相关API 1.QueryWorkingSet 得到刚加入指定进程工作集的页信息 参数: 返回值 成功返回非零值。失败返回0。可调用GetLastError得到错误信息。 2.GetWsChanges 检索自上次调用此函数或InitializeProcessForWsWatch函数以来已添 阅读全文

posted @ 2017-12-27 12:56 沉疴 阅读(1686) 评论(0) 推荐(0) 编辑

GetSystemInfo 和 GlobalMemoryStatus获取系统信息,内存信息
摘要:// GetSystemInfo.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; int main() { SYSTEM_INFO systemInfo; GetSystemInfo(&systemInfo); cout #include us... 阅读全文

posted @ 2017-12-22 16:06 沉疴 阅读(1596) 评论(0) 推荐(0) 编辑

TLS反调试
摘要:0x01 TLS反调试简介 TLS(Thread Local Storage)原本的目的是解决多线程程序中变量同步的问题。线程本身有独立于其他线程的栈空间,因此线程中的局部变量不用考虑同步问题。多线程同步问题在于对全局变量的访问,TLS在操作系统的支持下,通过把全局变量打包到一个特殊的节,当每次创建 阅读全文

posted @ 2017-11-22 22:11 沉疴 阅读(1129) 评论(0) 推荐(1) 编辑

获取程序目录,模块路径
摘要:0x01 API (1)GetCurrentDirectory。 获取进程的当前目录 参数 nBufferLength:输入参数,存储路径字符串缓冲区的大小,一般调用MAX PATH。 lpBuffer:输出参数,指向获取的路径字符串。 返回值 返回DWORD值,如果为0,表示执行失败,可以使用Ge 阅读全文

posted @ 2017-11-21 23:01 沉疴 阅读(535) 评论(0) 推荐(0) 编辑

延迟载入Dll(动态载入Dll)
摘要:windows核心编程(第五版)20.3节的延迟载入Dll 延迟载入Dll技术出现的原因: 因为DLL的加载是比较浪费时间的,特别是大型软件加载,因此,这项技术是在应对软件初始化过程中避免浪费太多的时间。 [1]因为部分DLL是在软件运行过程中才加载的。因此,DLL的加载延迟在了进程的运行过程中,节 阅读全文

posted @ 2017-11-21 22:45 沉疴 阅读(814) 评论(0) 推荐(0) 编辑

Dll重定向(尚存否?)
摘要:windows核心编程(第五版)的20.6节介绍了Dll重定向。 0x01 Dll重定向简介 产生Dll重定向原因: 应用程序 a.exe 依赖动态链接库 compoent.dll 1.0 版本。但是用户的另一个软件 b 在系统的系统目录安装了 component.dll 2.0 版本,这两个版本不 阅读全文

posted @ 2017-11-21 21:20 沉疴 阅读(1083) 评论(0) 推荐(0) 编辑

minidebug学习分析 01 基本框架
摘要:0x01 基本框架 基本框架就是CreateProcess启动目标程序,再通过调试事件DEBUG_EVENT在调试循环中监控程序的行为。 (1)CreatProcess 双击一个EXE可执行文件时,Windows内核也就会自动调用CreatProcess 函数创建我们双击的文件所对应的进程。 Cre 阅读全文

posted @ 2017-11-13 16:35 沉疴 阅读(463) 评论(0) 推荐(0) 编辑

栈回溯简单实现(x86)
摘要:0x01 栈简介 首先局部变量的分配释放是通过调整栈指针实现的,栈为函数调用和定义局部变量提供了一块简单易用的空间,定义在栈上的变量不必考虑内存申请和释放。只要调整栈指针就可以分配和释放内存。 每个函数在栈中使用的区域叫做栈帧Stack Frame,在X86中,通常使用EBP寄存器作为帧指针使用,E 阅读全文

posted @ 2017-11-08 16:41 沉疴 阅读(1575) 评论(0) 推荐(0) 编辑

PE文件 03 重定位表
摘要:0x01 重定位表结构 重定位表是由数据目录表中的第六个成员指出的: 程序编译时每个模块有一个优先加载地址ImageBase,这个值是链接器给出的,因此链接器生成的指令中的地址是在假设模块被加载到ImageBase前提之下生成的,那么一旦程序没有将模块加载到ImageBase时,那么程序中的指令地址 阅读全文

posted @ 2017-10-30 16:42 沉疴 阅读(661) 评论(0) 推荐(0) 编辑

PE文件 02 导出表
摘要:0x01 导出表结构 导出表是由数据目录表中的第一个成员DataDirectory[0]指出的: 导出表就是记载着动态链接库的一些导出信息。通过导出表,DLL 文件可以向系统提供导出函数的名称、序号和入口地址等信息,比便Windows 加载器通过这些信息来完成动态连接的整个过程。扩展名为.exe 的 阅读全文

posted @ 2017-10-30 15:25 沉疴 阅读(262) 评论(0) 推荐(0) 编辑

PE文件 01 导入表
摘要:0x01 导入表结构 数据目录表中的第二个成员标记了导入表的RVA和Size大小,由此可以定位到导入表: 导入函数的代码位于一个或者多个DLL中,在调用者程序中只保留一些相关的函数信息,包括函数名及其对应的DLL名等。对于磁盘上的PE 文件来说,它无法得知这些输入函数将来在内存中的地址,只有当PE 阅读全文

posted @ 2017-10-30 14:28 沉疴 阅读(432) 评论(0) 推荐(0) 编辑

1 2 下一页