프로그래밍

프로세스 메모리 관련 소스

dladbru 2012. 12. 6. 16:09

#include "windows.h"
#include "iostream"

 

void main()
{
 char inputt; //switch문을 통해 입력 받을 변수
 HWND hWnd; // 윈도우창
 DWORD ProcessID;  //프로세스id변수
 HANDLE Handle;//핸들변수

 DWORD Value=NULL;  //벨류 저장할 초기값

 

 hWnd = ::FindWindow(NULL, "메모장"); // 창을 찾는다.


 if(!IsWindow(hWnd)) // 만약 창을 찾지 못했다면
 {
  AfxMessgeBox("창을 찾을 수 없습니다.");
  return; // 프로그램 종료
 }

 

 GetWindowThreadProcessId(hWnd, &ProcessID); // ProcessID를 구한다.
 Handle = OpenProcess(PROCESS_ALL_ACCESS, false, ProcessID); // Handle을 구한다.

 

 if(Handle == NULL) // 만약 Handle을 얻어오는데 실패하면
 {
  AfxMessgeBox("Handle을 얻어오는데 실패하였습니다.");
  return; // 프로그램 종료
 }
while(1)
{
ReadProcessMemory(Handle, (LPCVOID)0x41C18B, (LPVOID)&Value, 2, NULL);
start:              // goto문 start시작
scanf(%c,inputt);   //문자 입력 받음.
switch(inputt){

case 1:                   
AfxMessgeBox("적용준비.....");
if(Value==99)
WriteProcessMemory(Handle, (LPVOID)0x41C18B, (LPVOID)&Value, 2, NULL); // 읽어온 주소 벨류값이 99면  적용

Sleep(300);

AfxMessgeBox("적용");
goto start   //처음 입력상태로 돌아간다.
break;

case 2:
if(Value==100)
WriteProcessMemory(Handle, (LPVOID)0x41C18B, (LPVOID)&Value, 2, NULL);   //읽어온 주소 벨류값이 100이면 해제

Sleep(300);

AfxMessgeBox("해제");
goto start  //처음 입력상태로 돌아간다.
break;
}
}
}

 

소스는 이렇게되구요.    간략적으로 이렇게 순서를 알아본다음 

시험끝나면 소켓하고 같이해볼생각이에요 ㅇ.ㅇ

반응형