|
/*
메모리 맵 스터디
*/
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HWND FileMapObj;
static LPVOID lpvMem = NULL;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
FileMapObj = CreateFileMapping(
NULL, // 파일 연동 안함.
NULL, // 보안문제 신경 안 씀.
PAGE_READWRITE, // 읽고 쓸 것임.
0, // 크기 상위 DWORD
sizeof(int), // 크기 하위 DWORD
"WhatTheHeck" // 메맵 파일의 이름
);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
CloseHandle(FileMapObj);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
LPVOID lpvMem;
lpvMem = MapViewOfFile(FileMapObj, FILE_MAP_WRITE, 0, 0, 0);
lpvMem = (LPVOID)StrToInt(Label2->Caption);
ShowMessage((int)lpvMem);
//UnmapViewOfFile(lpvMem);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
LPVOID lpvMem;
if(!FileMapObj)
ShowMessage("huk");
lpvMem = MapViewOfFile(FileMapObj, FILE_MAP_READ, 0, 0, 0);
if(lpvMem)
ShowMessage((int)lpvMem);
//UnmapViewOfFile(lpvMem);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if( Key == 0x0d)
{
Label2->Caption = Edit1->Text;
}
}
//---------------------------------------------------------------------------
시스템 환경: 윈도우2000프로페셔널
펜티엄3 650Mhz
메모리 256M
안녕하세요?
후킹을 공부하면서 메모리맵을 공부하는데 막히는 부분이 있어서 질문드립니다.
메모리맵을 테스트하기 위해서,
버튼 1을 클릭하면 라벨2의 내용이 메모리 맵에 써지고
버튼 2를 클릭하면 그 메모리맵의 내용을 읽어 ShowMessage를 통해
나타내는 간단한 메모리맵 테스트 프로그램을 짜봤는데요...
55라는 숫자를 버튼1을 이용해서 메모리맵에 쓰면..
2837474 <---- 버튼2를 눌렀을때는 이런 숫자가 튀어나옵니다..
버튼2를 클릭할때마다 값이 다르게 나옵니다..
메모리맵에 값이 들어가지 않아서...자꾸 재할당되고 있는건지...
도움 부탁드리겠습니다.....
|