亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 內核態與用戶態共享內存.txt

?? 驅動開發過程中要注意的一些要點以及一些基本資料
?? TXT
字號:
//申請一片非分頁內存
SysBuffer = ExAllocatePoolWithTag (NonPagedPool,MAXMODNUM*sizeof(*SysBuffer),0x206B6444);
if(!SysBuffer)
KdPrint( ("HookTdi: Allocate SysBuffer fail!n") );
else
{
//Map into Userspace
pMDL = ExAllocatePoolWithTag(NonPagedPool,
MmSizeOfMdl(SysBuffer,MAXMODNUM*sizeof(*SysBuffer)),
0x206B6444);
if(!pMDL)
KdPrint( ("HookTdi: No enough Mem for MDL!n") );
else
{
pMDL = MmCreateMdl (pMDL,SysBuffer,MAXMODNUM*sizeof(*SysBuffer));
MmBuildMdlForNonPagedPool(pMDL);
UserBuffer = MmMapLockedPages(pMDL,1);
}

}

用DeviceIoControl():
在app里:
unsigned char *Buffer;
HANDLE hDevice;
hDevice = CreateFile("\\.\mapmem", 
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hDevice == INVALID_HANDLE_VALUE)
{
printf("Error opening wdj Driver (%d)n", GetLastError());
return;
}
//取得userbuffer
if (!DeviceIoControl(driver, (DWORD)IOCTL_MEM_MAP,
NULL, 0, (LPBYTE)&Buffer,sizeof(PVOID),
&size, NULL)) 
{
printf("IOCTL_MEM_MAP, Error %dn", GetLastError());
return;
}
............

在sys:
ioBuffer = Irp->AssociatedIrp.SystemBuffer;
......
case IOCTL_MEM_MAP:
deviceExt->SysAddress = ExAllocatePool(NonPagedPool,1024);

phyaddr = MmGetPhysicalAddress(deviceExt->SysAddress);
deviceExt->Mdl = IoAllocateMdl(deviceExt->SysAddress,
1024,
FALSE, FALSE, NULL);
if (deviceExt->Mdl == NULL) {
ExRaiseStatus(STATUS_INSUFFICIENT_RESOURCES);
}
MmBuildMdlForNonPagedPool(deviceExt->Mdl);
VirtualAddress = MmMapLockedPages(deviceExt->Mdl,UserMode);
*(PVOID*)ioBuffer = VirtualAddress;
deviceExt->VirtualAddress = VirtualAddress;
Irp->IoStatus.Information = sizeof(PVOID);

釋放資源:
MmUnmapLockedPages(deviceExt->VirtualAddress,deviceExt->Mdl);
IoFreeMdl(deviceExt->Mdl);
ExFreePool(deviceExt->SysAddress);
deviceExt->Mdl = NULL;

///////////////////////////////////////////////////////////
//========================================================
//
// Physmem
//
// Mark Russinovich
// Systems Internals
// http://www.sysinternals.com/ 
//
// This program demonstrates how you can open and
// map physical memory. This is essentially the NT 
// equivalent of the \dev\kmem device in UNIX.
//
//========================================================
#include <windows.h>
#include <stdio.h>
#include "native.h"

//
// Number of bytes to print per line
//
#define BYTESPERLINE 16

//
// Lines to print before pause
//
#define LINESPERSCREEN 25


//
// Functions in NTDLL that we dynamically locate
//

NTSTATUS (__stdcall *NtUnmapViewOfSection)(
IN HANDLE ProcessHandle,
IN PVOID BaseAddress
);

NTSTATUS (__stdcall *NtOpenSection)(
OUT PHANDLE SectionHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes
);

NTSTATUS (__stdcall *NtMapViewOfSection)(
IN HANDLE SectionHandle,
IN HANDLE ProcessHandle,
IN OUT PVOID *BaseAddress,
IN ULONG ZeroBits,
IN ULONG CommitSize,
IN OUT PLARGE_INTEGER SectionOffset, /* optional */
IN OUT PULONG ViewSize,
IN SECTION_INHERIT InheritDisposition,
IN ULONG AllocationType,
IN ULONG Protect
);

VOID (__stdcall *RtlInitUnicodeString)(
IN OUT PUNICODE_STRING DestinationString,
IN PCWSTR SourceString
);

ULONG (__stdcall *RtlNtStatusToDosError) (
IN NTSTATUS Status
);

//----------------------------------------------------------------------
//
// PrintError
//
// Formats an error message for the last error
//
//----------------------------------------------------------------------
void PrintError( char *message, NTSTATUS status )
{
char *errMsg;

FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, RtlNtStatusToDosError( status ), 
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
(LPTSTR) &errMsg, 0, NULL );
printf("%s: %s\n", message, errMsg );
LocalFree( errMsg );
}


//--------------------------------------------------------
//
// UnmapPhysicalMemory
//
// Maps a view of a section.
//
//--------------------------------------------------------
VOID UnmapPhysicalMemory( DWORD Address )
{
NTSTATUS status;

status = NtUnmapViewOfSection( (HANDLE) -1, (PVOID) Address );
if( !NT_SUCCESS(status)) {

PrintError("Unable to unmap view", status );
}
}


//--------------------------------------------------------
//
// MapPhysicalMemory
//
// Maps a view of a section.
//
//--------------------------------------------------------
BOOLEAN MapPhysicalMemory( HANDLE PhysicalMemory,
PDWORD Address, PDWORD Length,
PDWORD VirtualAddress )
{
NTSTATUS ntStatus;
PHYSICAL_ADDRESS viewBase;
char error[256];

*VirtualAddress = 0;
viewBase.QuadPart = (ULONGLONG) (*Address);
ntStatus = NtMapViewOfSection (PhysicalMemory,
(HANDLE) -1,
(PVOID) VirtualAddress,
0L,
*Length,
&viewBase,
Length,
ViewShare,
0,
PAGE_READONLY );

if( !NT_SUCCESS( ntStatus )) {

sprintf( error, "Could not map view of %X length %X",
*Address, *Length );
PrintError( error, ntStatus );
return FALSE; 
}

*Address = viewBase.LowPart;
return TRUE;
}


//--------------------------------------------------------
//
// OpensPhysicalMemory
//
// This function opens the physical memory device. It
// uses the native API since 
//
//--------------------------------------------------------
HANDLE OpenPhysicalMemory()
{
NTSTATUS status;
HANDLE physmem;
UNICODE_STRING physmemString;
OBJECT_ATTRIBUTES attributes;
WCHAR physmemName[] = L"\\device\\physicalmemory";

RtlInitUnicodeString( &physmemString, physmemName ); 

InitializeObjectAttributes( &attributes, &physmemString,
OBJ_CASE_INSENSITIVE, NULL, NULL ); 
status = NtOpenSection( &physmem, SECTION_MAP_READ, &attributes );

if( !NT_SUCCESS( status )) {

PrintError( "Could not open \\device\\physicalmemory", status );
return NULL;
}

return physmem;
}



//--------------------------------------------------------
//
// LocateNtdllEntryPoints
//
// Finds the entry points for all the functions we 
// need within NTDLL.DLL.
//
//--------------------------------------------------------
BOOLEAN LocateNtdllEntryPoints()
{
if( !(RtlInitUnicodeString = (void *) GetProcAddress( GetModuleHandle("ntdll.dll"),
"RtlInitUnicodeString" )) ) {

return FALSE;
}
if( !(NtUnmapViewOfSection = (void *) GetProcAddress( GetModuleHandle("ntdll.dll"),
"NtUnmapViewOfSection" )) ) {

return FALSE;
}
if( !(NtOpenSection = (void *) GetProcAddress( GetModuleHandle("ntdll.dll"),
"NtOpenSection" )) ) {

return FALSE;
}
if( !(NtMapViewOfSection = (void *) GetProcAddress( GetModuleHandle("ntdll.dll"),
"NtMapViewOfSection" )) ) {

return FALSE;
}
if( !(RtlNtStatusToDosError = (void *) GetProcAddress( GetModuleHandle("ntdll.dll"),
"RtlNtStatusToDosError" )) ) {

return FALSE;
}
return TRUE;
}


//--------------------------------------------------------
//
// Main
// 
// This program drives the command loop
//
//--------------------------------------------------------
int main( int argc, char *argv[] )
{
HANDLE physmem;
DWORD vaddress, paddress, length;
char input[256];
DWORD lines;
char ch;
DWORD i, j;

printf("\nPhysmem v1.0: physical memory viewer\n"
"By Mark Russinovich\n"
"Systems Internals - http://www.sysinternals.com\n\n"); 

//
// Load NTDLL entry points
//
if( !LocateNtdllEntryPoints() ) {

printf("Unable to locate NTDLL entry points.\n\n");
return -1;
}

//
// Open physical memory
//
if( !(physmem = OpenPhysicalMemory())) {

return -1;
}

//
// Enter the command loop
//
printf("Enter values in hexadecimal. Enter 'q' to quit.\n");
while( 1 ) {

printf("\nAddress: " ); fflush( stdout );
gets( input );
if( input[0] == 'q' || input[0] == 'Q' ) break;
sscanf( input, "%x", &paddress );

printf("Bytes: "); fflush( stdout );
gets( input );
if( input[0] == 'q' || input[0] == 'Q' ) break;
sscanf( input, "%x", &length );

//
// Map it
//
if( !MapPhysicalMemory( physmem, &paddress, &length,
&vaddress )) 
continue;

//
// Dump it
//
lines = 0;
for( i = 0; i < length; i += BYTESPERLINE ) {

printf("%08X: ", paddress + i );

for( j = 0; j < BYTESPERLINE; j++ ) {

if( i+j == length ) break;
if( j == BYTESPERLINE/2 ) printf("-" );
printf("%02X ", *(PUCHAR) (vaddress + i +j ));
}

for( j = 0; j < BYTESPERLINE; j++ ) {

if( i+j == length ) break;
ch = *(PUCHAR) (vaddress + i +j );

if( __iscsym( ch ) || 
isalnum( ch ) ||
ch == ' ') {

printf("%c", ch);

} else {

printf("." );
}
}

printf("\n");

if( lines++ == LINESPERSCREEN ) {

printf("-- more -- ('q' to abort)" ); fflush(stdout);
ch = getchar();
if( ch == 'q' || ch == 'Q' ) {
fflush( stdin );
break;
}
lines = 0;
}
}

//
// Unmap the view
//
UnmapPhysicalMemory( vaddress );
}

//
// Close physical memory section
//
CloseHandle( physmem );

return 0;
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产色婷婷亚洲99精品小说| 亚洲欧美日韩国产一区二区三区| 国产亚洲精品福利| 一级做a爱片久久| 美女一区二区视频| va亚洲va日韩不卡在线观看| 欧美精品自拍偷拍| 国产精品系列在线| 久久精品国产在热久久| 91福利视频网站| 国产欧美日韩精品一区| 日av在线不卡| 在线视频你懂得一区| 国产日韩视频一区二区三区| 性欧美疯狂xxxxbbbb| 91麻豆swag| 国产精品青草综合久久久久99| 久久精工是国产品牌吗| 欧美日韩中字一区| 亚洲伦理在线免费看| 成人一区二区三区视频在线观看| 日韩精品一区二区三区四区| 日韩和欧美的一区| 欧美日韩一区二区欧美激情| 亚洲另类在线制服丝袜| 99久久综合国产精品| 国产色综合久久| 国产精品88888| www国产精品av| 久久爱www久久做| 日韩一级免费观看| 亚洲欧美日韩久久| 97精品久久久久中文字幕| 国产亚洲精品aa午夜观看| 国产一区二区三区免费| 欧美成人r级一区二区三区| 日韩av一级电影| 7777精品久久久大香线蕉| 午夜成人在线视频| 制服丝袜亚洲精品中文字幕| 青青草国产精品亚洲专区无| 日韩午夜小视频| 视频在线观看91| 欧美男人的天堂一二区| 亚洲一卡二卡三卡四卡无卡久久| 在线欧美日韩精品| 午夜电影网一区| 欧美α欧美αv大片| 国内欧美视频一区二区| 国产亚洲一区二区三区四区| 成人午夜av电影| 亚洲精品国久久99热| 欧美日韩一区二区三区视频| 日产精品久久久久久久性色| 精品久久久三级丝袜| 懂色中文一区二区在线播放| 亚洲图片激情小说| 欧美理论在线播放| 国产一区在线精品| 《视频一区视频二区| 欧美日韩色综合| 久久99国产精品免费网站| 国产欧美日韩另类一区| 欧美三级欧美一级| 精东粉嫩av免费一区二区三区| 中日韩av电影| 制服视频三区第一页精品| 国产乱人伦精品一区二区在线观看 | 久久九九影视网| 成人免费电影视频| 亚洲成人av福利| 久久久亚洲国产美女国产盗摄 | 欧美亚洲综合网| 美女视频免费一区| 国产精品美女久久久久av爽李琼| 色哟哟亚洲精品| 国内欧美视频一区二区 | 欧美午夜影院一区| 久久99精品久久久久久动态图| 国产精品卡一卡二| 日韩欧美亚洲一区二区| 99精品视频中文字幕| 麻豆精品国产91久久久久久| 最新国产精品久久精品| 日韩一区二区精品| 欧美日韩中文字幕一区| 成人午夜av在线| 久久精品噜噜噜成人88aⅴ| 一区二区三区资源| 久久久三级国产网站| 欧美高清精品3d| 91小视频在线观看| 国模大尺度一区二区三区| 亚洲国产一区二区在线播放| 国产精品丝袜一区| 精品少妇一区二区| 欧美日韩成人在线一区| 不卡一区在线观看| 极品少妇xxxx偷拍精品少妇| 亚洲电影视频在线| 亚洲桃色在线一区| 国产欧美一区二区精品久导航 | 久久99热99| 亚洲成人自拍偷拍| 综合久久国产九一剧情麻豆| 国产日韩欧美制服另类| 久久综合色鬼综合色| 日韩精品中午字幕| 欧美一区二区三区在线观看| 欧美私人免费视频| 在线观看中文字幕不卡| 91免费看片在线观看| 99久久精品免费看| 岛国一区二区在线观看| 国产成人综合自拍| 国产麻豆成人精品| 国产乱国产乱300精品| 久久99精品久久久久久国产越南| 精彩视频一区二区| 久久99久国产精品黄毛片色诱| 蜜桃视频在线观看一区二区| 免费成人在线播放| 精品一区二区三区欧美| 狠狠色狠狠色综合日日91app| 久99久精品视频免费观看| 青青青伊人色综合久久| 久久国产精品99久久久久久老狼| 老司机精品视频一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩高清一级片| 久国产精品韩国三级视频| 国产一区激情在线| 成人天堂资源www在线| 91在线看国产| 欧美日韩成人综合天天影院| 欧美mv日韩mv国产| 国产精品麻豆网站| 亚洲香蕉伊在人在线观| 久久精品久久99精品久久| 国产福利精品导航| 一本大道久久a久久综合婷婷| 欧美少妇bbb| 久久综合色一综合色88| 国产精品福利一区二区三区| 亚洲在线观看免费| 蜜臀av一区二区| 不卡一二三区首页| 欧美日韩大陆一区二区| 久久久精品天堂| 亚洲男人的天堂一区二区| 日韩电影网1区2区| 国产福利一区在线| 欧美在线一二三四区| 日韩精品一区二区三区在线播放| 国产精品久久免费看| 午夜久久久影院| 福利91精品一区二区三区| 色欧美88888久久久久久影院| 欧美一级日韩免费不卡| 国产精品久99| 另类小说综合欧美亚洲| 91日韩精品一区| 欧美mv日韩mv国产网站app| 亚洲人成亚洲人成在线观看图片| 香蕉成人伊视频在线观看| 国产成人h网站| 8x8x8国产精品| 日韩理论电影院| 国产电影一区二区三区| 欧美精品免费视频| 综合久久久久久| 国产成人综合在线播放| 91精品在线免费| 亚洲女同女同女同女同女同69| 久久国产麻豆精品| 欧美主播一区二区三区| 中文av字幕一区| 国产永久精品大片wwwapp | 麻豆专区一区二区三区四区五区| 成人黄色电影在线| 精品国产91九色蝌蚪| 午夜视黄欧洲亚洲| 色婷婷综合久久久中文一区二区| 国产午夜亚洲精品理论片色戒 | 91丨porny丨最新| 国产亚洲成年网址在线观看| 日本怡春院一区二区| 在线看一区二区| 最新日韩在线视频| 99视频精品全部免费在线| www国产亚洲精品久久麻豆| 日本亚洲最大的色成网站www| 在线观看91视频| 亚洲精品自拍动漫在线| 不卡av免费在线观看| 日本一区二区免费在线观看视频 | 韩国理伦片一区二区三区在线播放| 欧美无砖专区一中文字| 亚洲精品视频在线观看网站| 99久久久国产精品免费蜜臀|