전체 : 4,150,784 명
어제 : 0 명
오늘 : 0 명

ReadProcessMemory & WriteProcessMemory

COOLSOFT | 2009.06.04 18:01 | 조회 9938
/* Program A.cpp */
#include
#include
using namespace std;
int main() {
system("TITLE ReadMe");
/* Used to display the time */
tm *date_time;
time_t timer;
char str[80]; /* Holds the formatted date info */
time(&timer);
date_time = localtime(&timer);
strftime(str, 80, "%X", date_time);
/****************************/
char *TextMe;
char TextChange[] = "Hello World!";
TextMe = TextChange;
int *ReadMe; // Pointer
int ChangeMe = 165; // Value to be read
ReadMe = &ChangeMe; // Address of that value
printf("%s :: Address of ReadMe: %pn", str, ReadMe);
printf("%s :: Address of TextMe: %pn", str, (int*)TextMe);
printf("---------------------------------------nn");
int SHOW = 0;
bool bQuit = false;
while (!bQuit) {
printf("tt-- Display values --n");
printf("t 1. Yesn");
printf("t 2. Non");
printf("t 3. Resetn");
printf("t 4. Quitn");
scanf("%d", SHOW);
switch (SHOW) {
case 1:
{
system("CLS");
printf("%s :: Address of ReadMe: %pn", str, ReadMe);
printf("%s :: Address of TextMe: %pn", str, (int*)TextMe);
printf("---------------------------------------nn");
time(&timer);
date_time = localtime(&timer);
strftime(str, 80, "%X", date_time);
printf("%s :: Value of ChangeMe: %in", str, ChangeMe);
printf("%s :: Value of TextMe: %snn", str, TextChange);
break;
}
case 2:
{
system("CLS");
printf("%s :: Address of ReadMe: %pn", str, ReadMe);
printf("%s :: Address of TextMe: %pn", str, (int*)TextMe);
printf("---------------------------------------nn");
break;
}
case 3:
{
system("CLS");
printf("%s :: Address of ReadMe: %pn", str, ReadMe);
printf("%s :: Address of TextMe: %pn", str, (int*)TextMe);
printf("---------------------------------------nn");
ChangeMe = 165;
strcpy(TextChange, "Hello World!");
break;
}
case 4: bQuit = true; break;
default : bQuit = true; break;
}
}
return 0;
}
/* Program B.cpp */
#include
#include
/* These WILL change, you must update before compiling or it will not work */
#define OffsetRead (LPVOID)0x22FF00
#define NumberOffset (LPVOID)0x22FEF8
using namespace std;
int main() {
system("TITLE Reader");
int OverwriteNumbers = 0;
int ReadNumbers = 0;
bool bExit = true;
unsigned long WindowsPID; /* Windows Process ID */
unsigned long NumBytesRead; /* Number of bytes read - returned by ReadProcessMemory */
unsigned long NumBytesWrote;
unsigned long NumBytesWrote2;
char WindowsName[] = "ReadMe"; /* The Window Title to get the Window Handle from to convert into a PID */
char BytesToBeRead[13] = {''}; /* character array to hold the read info */
char BytesToBeWrote[] = "Obama!";
HWND WindowsHandle = FindWindow(0, WindowsName);
if (!FindWindow(0, WindowsName)) { printf("Window %s not found!", WindowsName); cin.get(); exit(0); }
GetWindowThreadProcessId(WindowsHandle, &WindowsPID); /* Get windows PID from a window handle */
HANDLE WindowsProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, false, WindowsPID);
while (true) {
printf("1 = Continuen0 = QuitnContinue? ");
scanf("%d", bExit);
if (bExit == false) { break; }
printf("--------------nn");
printf("New number value: ");
scanf("%d", &OverwriteNumbers);
printf("New string value: ");
scanf("%d", &BytesToBeWrote);
system("CLS");
WriteProcessMemory(WindowsProcessHandle, OffsetRead, &BytesToBeWrote, sizeof(BytesToBeWrote), &NumBytesWrote);
WriteProcessMemory(WindowsProcessHandle, NumberOffset, &OverwriteNumbers, sizeof(OverwriteNumbers), &NumBytesWrote2);
}
CloseHandle(WindowsProcessHandle);
return 0;
}


twitter facebook me2day 요즘
이거..몇몇함수 수정해야겟지만 좀만 응용하면 제가가끔씩하는 게임에 써먹을..

이거..몇몇함수 수정해야겟지만 좀만 응용하면 제가가끔씩하는 게임에 써먹을수도있겟는데요..?ㅋㅋㅋ

06.04 23:02 | Joke님 | 신고 | 수정 | 삭제
댓글 0
입력상자 늘리기
흠 아주 잘짜신거같네요.
흠 아주 잘짜신거같네요.
06.21 12:19 | 프로그래밍님 | 신고 | 수정 | 삭제
댓글 0
입력상자 늘리기
잘보고 갑니다 ㅇ _ㅇ ;;
잘보고 갑니다 ㅇ _ㅇ ;;
10.10 22:44 | LSK_SeulKi♡님 | 신고 | 수정 | 삭제
댓글 0
입력상자 늘리기
잘 짜셧습니다. 감사합니다.
잘 짜셧습니다. 감사합니다.
11.11 04:46 | 쫭구님 | 신고 | 수정 | 삭제
댓글 0
입력상자 늘리기
무슨 에디터 인가 했는데 좋은정보 감사합니다.

무슨 에디터 인가 했는데 좋은정보 감사합니다.

11.18 21:41 | 상진군님 | 신고 | 수정 | 삭제
댓글 0
입력상자 늘리기
감사합니다.

감사합니다.

04.02 23:40 | StarK님 | 신고 | 수정 | 삭제
댓글 0
입력상자 늘리기
B.CPP의 소스에서 VirtualProtectEx()함수를 호출하여 페..
B.CPP의 소스에서 VirtualProtectEx()함수를 호출하여 페이지의 접근속성을 쓰기가능하게(PAGE_EXECUTEREADWRIE 혹은 PAGE_READWRITE)로 안전하게 변경시켜야 할듯 한데요..?
06.23 01:05 | eLee2228님 | 신고 | 수정 | 삭제
댓글 0
입력상자 늘리기
기본적인 소스이니 응용해서 사용하는건 사용자에 따라 틀리겠죠
기본적인 소스이니 응용해서 사용하는건 사용자에 따라 틀리겠죠
06.23 16:49 | COOLSOFT님 | 신고 | 수정 | 삭제
댓글 0
입력상자 늘리기
댓글쓰기 - 로그인한 후 댓글작성권한이 있을 경우 이용하실 수 있습니다.

비밀번호 확인

댓글 등록시에 입력했던 비밀번호를 입력해 주세요.
87개(1/5페이지)
rss
C
번호 제목 작성자 작성일 조회
87 배열설정 쉽게하기 부보 2012.12.22 2089
86 [고급]연습문제[11] 권율 2010.01.10 9548
85 [고급]C언어에서 포인터 이용한 간단한 암호 ~[8] 쫭구 2009.11.11 9377
84 [중급]BOF의 개념과 BOF를 이용한 해킹 방법[10] Ezbeat 2010.03.19 10142
>> [중급]ReadProcessMemory & WriteProcessMemory사진[8] COOLSOFT 2009.06.04 9939
82 [기초]C언어의 탄생 배경[20] COOLSOFT 2007.11.03 9980
81 [기초]비주얼 C++ 설치하기사진첨부파일[15] COOLSOFT 2007.10.27 7152
80 [기초]Microsoft Visual C++ Windows Applications by Example첨부파일[4] COOLSOFT 2009.04.03 7322
79 [기초][TIP]swap함수 매크로 한줄로 끝내기[9] secretofsh 2009.03.05 10502
78 [기초]c# 화면캡쳐프로그램 -소스포함 |첨부파일[12] 야옹이 2008.12.25 12855
77 [기초]주민번호를 만들어내는 규칙에 대해서 설명과 소스[26] COOLSOFT 2008.07.12 10105
76 [기초]윈도우 기본 창 생성 소스 -주석 포함-[7] 진혼이중주 2008.05.31 10797
75 [기초]WIN 32 API 시작하기전에 간단히 알아두기[10] 진혼이중주 2008.05.31 9385
74 [기초]c++ 강좌 #3 변수와 상수 (1)[15] 진혼이중주 2008.05.28 8850
73 [기초]C++ 강좌 #2 C++언어의 기본적인 구조[6] 진혼이중주 2008.05.28 5968
72 [기초]C++ 강좌 #1[12] 진혼이중주 2008.05.28 6743
71 [기초]리스트 자료구조의 기본적인 개념[3] 진혼이중주 2008.05.16 7972
70 [기초]두 자리 수 이상의 곱셈에 대한 알고리즘[5] 진혼이중주 2008.05.16 7198
69 [기초]Turbo 2.0 설치 및 사용법첨부파일[2] 진혼이중주 2008.05.16 8862
68 [기초]삼성 프로그래머들의 C/C++ 코딩 스타일의 지침서첨부파일[41] 진혼이중주 2008.05.05 15442
처음페이지이전 10 페이지12345다음 10 페이지마지막페이지