pvoid64 pvoid】的更多相关文章

如果需要某一个结构体,既在kernel space用,又在user space用,如 typedef struct { PVOID data; int size; }binary,pbinary; 上面这个binary的结构体,假设需要在Kenel space和user space同时用到,如通过ksmethod来进行传递,就需要把PVOID改成PVOID64. typedef struct { PVOID64 data; int size; }binary_64,pbinary_64; 以上是…
来自博客:http://blog.csdn.net/chenyusiyuan/article/details/4643313的总结: 一般可通过调整 DirectShow/Include 在 Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show Directories for –> Include Files 中的位置(把它下移到最下面),然后把 Project -> Propert…
Delphi 获取进程路径及命令行参数, 但有的进程获取时会报错,不知为啥 type PVOID64 = UINT64; _UNICODE_STRING = packed record Length : USHORT; MaximumLength : USHORT; Buffer : PWideChar; end; UNICODE_STRING = _UNICODE_STRING; PUNICODE_STRING =^_UNICODE_STRING; _UNICODE_STRING64 = pa…
缓冲区方式读写操作 设置缓冲区读写方式:…
一.编译出错, 1. 包含头文件出错 解决方案: 需要下载1803 的wdk  最新的1809会出一堆错误 安装程序显示是10.0.17134.1安装完成后是10.0.17134.0 2. Inf2Cat Double click to see 项目-->属性-->Info2Cat-->Run Inf2Cat  属性 是 - 置空 3. Error:不能将"char*"类型的值分配到"LPSTR"类型的实体 或者 "char*"…
0x01 前言 我们知道R3层中,Zw系列函数和Nt系列函数函数是一样的,但是在内核Zw系列函数调用了Nt系列函数,但是为什么要在内核设置一个Zw系列函数而不是直接调用Nt函数呢?Zw系列函数又是怎么调用Nt系列函数的呢?我们利用IDA分析NtosKrnl.exe文件. 0x02 ZwProtectVirtualMemory 我们先看看ZwProtectVirtualMemory的实现 . ; NTSTATUS __stdcall ZwProtectVirtualMemory(HANDLE Pr…
基于上一篇文章,大概了解了peb的获取方法,但是那个方法只能获得当前进程的PEB,不能获得其他的进程的PEB.根据那个思想,获得其他进程PEB则需要注入,得到进程信息,然后进程间通信,将信息返回来,经过考虑,这个方法太复杂. 下面介绍的方法是 用了一个未公开的函数NtQueryInformationProcess,获得进程信息,然后去读对方进程ReadProcessMemory. 结构体是使用的一个模板,从别处借鉴的 #pragma once #include <Windows.h> #inc…
winnt.h https://docs.microsoft.com/en-us/windows/win32/api/winnt/ /*++ BUILD Version: 0091 Increment this if a change has global effects Copyright (c) Microsoft Corporation. All rights reserved. Module Name: winnt.h Abstract: This module defines the…
//#include  <windows.h>//#include <algorithm>  //#include <string.h>//#include <iostream>//#include"tlhelp32.h"//#include <Psapi.h>//#include<ntstatus.h>//#include "xxxx.h"#include "pch.h"/…
UNHOOK SSDT 要恢复 SSDT,首先要获得 SSDT 各个函数的原始地址,而 SSDT 各个函数的原始地址,自然是存储在内核文件里的.于是,有了以下思路: 1.获得内核里 KiServiceTable 的地址(变量名称:KiServiceTable) 2.获得内核文件在内核里的加载地址(变量名称:NtosBase) 3.获得内核文件在 PE32+结构体里的映像基址(变量名称:NtosImageBase) 4.在自身进程里加载内核文件并取得映射地址(变量名称:NtosInProcess)…
在笔者上一篇文章<驱动开发:内核枚举IoTimer定时器>中我们通过IoInitializeTimer这个API函数为跳板,向下扫描特征码获取到了IopTimerQueueHead也就是IO定时器的队列头,本章学习的枚举DPC定时器依然使用特征码扫描,唯一不同的是在新版系统中DPC是被异或加密的,想要找到正确的地址,只是需要在找到DPC表头时进行解密操作即可. DPC定时器的作用: 在内核中可以使用DPC定时器设置任意定时任务,当到达某个节点时自动触发定时回调,定时器的内部使用KTIMER对象…
# C#与C++相互发送消息 # ## C#端: ## namespace CshapMessage { /// /// MainWindow.xaml 的交互逻辑 /// public partial class MainWindow : Window { IntPtr hwnd; const int WM_COPYDATA = 0x004A; public struct COPYDATASTRUCT { public IntPtr dwData; public int cData; [Mar…
Mem pro 是一个主要集成内存泄露检测的工具,其具有自身的源码和GUI,在GUI中利用"Launch" button进行加载自己待检测的application,目前支持的平台为Windows,Unix, Linux, OSX, IOS, GCC:但是按照官网的说法,其虽然只能运行到WIN上,但是根据TCP协议传输dump的方式也可以和其他平台的app进行连接: 关于内存泄露,按照官方文档中的说法,其检测内存泄露的算法主要是两种,一种是在抓取dump时候未被引用的变量会被认定为泄露,…
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Delphi.E(易语言).Java.Python 等编程语言接口.HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节:HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中. 为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握…
网络编程 API ,失败返回 -,错误代码 WSASYSNOTREADY 表示基础网络子系统没有准备好网络通行,WSAVERNOTSUPPORTED 表示 Socket 版本不支持,WSAEINPROGRESS 表示一个阻塞的 Sockets 操作在进程中,WSAEPROCLIM 表示 Sockets 支持的任务数到达上限,WSAEFAULT 表示 lpWSAData 不是一个有效指针 WORD MAKEWORD( X, Y ); 获得 wVersionRequested 正确值,WinSock…
// PETools.cpp : Defines the entry point for the console application.// #include "stdafx.h"#include <windows.h>#include <malloc.h> DWORD len=0; //记录文件读取时的大小 作为还原内存镜像缓冲区时的长度 //==========================================================…
<div id="wrap"> <!-- google_ad_section_start --> NTSTATUS MyNtReadFile(<br>                IN      HANDLE FileHandle,<br>                IN  HANDLE Event,<br>                IN  PIO_APC_ROUTINE ApcRoutine,<br>…
标 题: [原创]使用ZwMapViewOfSection创建内存映射文件总结 作 者: 小覃 时 间: 2012-06-15,02:28:36 链 接: http://bbs.pediy.com/showthread.php?t=152144 在写驱动搜索内核模块内存时,你是不是也经常会遇到BSOD? 原因是内核模块INIT节调用完成后就取消了映射.     解决这个问题鄙人的方法是, 自己来映射该内核模块文件内存进行内存操作. 我们使用ZwQuerySystemInformation遍历枚举…
标 题: [原创]内核ShellCode注入的一种方法 作 者: organic 时 间: 2013-05-04,04:34:08 链 接: http://bbs.pediy.com/showthread.php?t=170959 最近学习内核注入,看见一篇老文章<rootkit之[七]IAT Hook -- HybridHook之终极打造>链接:http://bbs.pediy.com/showthread.php?t=60778,利用KUSER_SHARED_DATA写入shellcode…
由于我一般使用的虚拟内存, 有时我们需要获取到物理内存中的数据(也就是内存条中的真实数据), 按理说是很简单,打开物理内存,读取就可以了.但似乎没这么简单: #include "windows.h" //定义相应的变量类型,见ntddk.h typedef LONG    NTSTATUS; #define NT_SUCCESS(Status)((NTSTATUS)(Status) >= 0) #define STATUS_ACCESS_DENIED ((NTSTATUS)0xC…
  原理小伟的小伟在http://bbs.pediy.com/showthread.php?t=66886说的挺清楚了,Windows7下有一些变化,使用NtQueryVirtualMemory来枚举模块是一个效率很低的事情,自己枚举VadRoot速度是很快的,有N个子节点时,为log(N),还有我在这里补上的基地址获取和镜像大小获取,废话不多说,完整代码如下,仅给有需要的人参考,大侠飘过-- 代码: typedef struct _MMADDRESS_NODE // 0x14 {     un…
搞内核研究的经常对中断这个概念肯定不陌生,经常我们会接触很多与中断相关的术语,按照软件和硬件进行分类: 硬件CPU相关: IRQ.IDT.cli&sti 软件操作系统相关: APC.DPC.IRQL 一直以来对中断这一部分内容弄的一知半解,操作系统和CPU之间如何协同工作也是很模糊.最近花了点时间认真把这块知识进行了梳理,不当之处,还请高手指出,先行谢过了! 本文旨在解答下面这些问题: 1.IRQ和IRQL之间是什么关系? 2.Windows是如何在软件层面上虚拟出IRQL这套中断机制的 3.A…
原文链接:http://shayi1983.blog.51cto.com/4681835/1734822 本文为原创翻译,原文出处为 http://www.codemachine.com/article_x64kvas.html 对于原文中,较难理解或者论述过于简单的部分,则添加了译注:译注来自于内核调试器验证的结果,以及 WRK 源码中的逻辑,还有<深入解析 Windows 操作系统>一书中的译文. 本文档解释 X64 版本的 Windows 7 与 Server 2008 R2 上,内核虚…
====================================================== LIST_ENTRY PsLoadedModuleList; [定  义] wrk\wrk-v1.2\base\ntos\mm\Sysload.c [初始化] wrk\wrk-v1.2\base\ntos\mm\Sysload.c  [MiInitializeLoadedModuleList()] [引  用] l  NtQuerySystemInformation()         …
其实分在逆向篇不太合适,因为并没有逆向什么程序. 在http://www.exploit-db.com/exploits/28996/上看到这么一段最简单的ShellCode,其中的技术也是比较常见的,0day那本书上也提到过,大神都用烂了.不过想来很久没有碰汇编了,就心血来潮,权当温习一下. /* User32-free Messagebox Shellcode for any Windows version ==========================================…
第一种在系统调用服务表HOOK ZwQuerySystemInformation函数地址 使用InterlockedExchange函数将ZwQuerySystemInformation在内核导出表KeServiceDescriptorTable最终调用位置的函数地址替换为NewZwQuerySystemInformation,然后NewZwQuerySystemInformation先调用之前的函数,最后NewZwQuerySystemInformation从原函数返回的信息中过滤掉目标进程.…
因为小可并非硬件编程出身,汇编基础又比较差...所以刚开始理解利用IOAPIC重定位技术的时候相当困难. 何为IOAPIC? 首先,必须认识到它是一个硬件,可编程的硬件.我理解的它在整个流程中的作用如图: 首先,必须创建一个新的中断项,也就是在IDT表中搜索到一个空闲的项,代码如下 P2C_U8 p2cGetIdleIdtVec() { P2C_U8 i; PP2C_IDTENTRY idt_addr = (PP2C_IDTENTRY)p2cGetIdt(); // 从vec20搜索到2a即可.…
同样也是寒江独钓的例子,但只给了思路,现贴出实现代码 原理是通过改变端口驱动中本该调用类驱动回调函数的地方下手 //替换分发函数 来实现过滤 #include <wdm.h> #include <ntddk.h> #include <Ntddkbd.h> #include <windef.h> // Kbdclass驱动的名字 #define KBD_DRIVER_NAME L"\\Driver\\Kbdclass" //ps2的端口驱动…
最近在阅读<寒江独钓_Windows内核安全编程>一书的过程中,发现修改类驱动分发函数这一技术点,书中只给出了具体思路和部分代码,没有完整的例子. 按照作者的思路和代码,将例子补充完整,发现将驱动安装在WIN7 32位环境下,键盘失效. 经调试发现,可能的原因是替换了\\Driver\\Kbdclass类驱动的所有分发函数导致,如果只替换分发IRP_MJ_READ的函数,不会有问题,以下为代码 //替换分发函数 来实现过滤 #include <wdm.h> #include <…
NtReadVirtualMemory函数位于ntdll中,作用就是把用户态的函数调用翻译成相应的系统调用,进入内核态.内核中一般有一个相同名字的处理函数,接收到该类型的系统调用后做实际的工作. NTSTATUS STDCALL NtReadVirtualMemory(IN HANDLE ProcessHandle, IN PVOID BaseAddress, OUT PVOID Buffer, IN ULONG NumberOfBytesToRead, OUT PULONG NumberOfB…