2013-07-25 3 views
-4

포인터를 사용하여 데이터 조작. 다른 process.i를 사용하여 한 프로세스의 데이터를 조작하는 것은 포인터를 사용하여 C 및 C++에서 시도했지만 성공하지는 못했습니다.c/C++ 포인터를 사용하여 메모리의 데이터 조작

내 친구 중 한 명이 놀고있는 동안 카운터 트릭 게임의 점수를 편집하려고하기 때문에 가능합니다.하지만 뭔가 잘못 됐습니다.

+0

적어도 최신 데스크탑 시스템에서는 다른 프로세스의 한 프로세스에서 데이터를 조작 할 수 없습니다. 다른 [Inter Process Communication] (http://en.wikipedia.org/wiki/Interprocess_communication) 메소드에 대해 읽어보십시오. –

+2

@ JoachimPileborg 예를 들어 Windows에서 [WriteProcessMemory] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms681674%28vs.85%29.aspx)를 사용하여) 포인터를 사용하는 것만 큼 간단하지는 않습니다. –

+0

http://stackoverflow.com/questions/17244912/open-process-with-debug-privileges-and-read-write-memory?rq=1 –

답변

2

현재 실행중인 프로세스가 다른 프로세스의 메모리에 액세스 할 수 없습니다.

Windows의 각 프로세스에는 자체 주소 공간이 있습니다. 한 프로세스에 주소가 있으면 해당 페이지 테이블에서 가상 주소이며 의미가 없습니다. Windows가 작업 전환을 수행하면 다음 작업에 자체 페이지 테이블이 생깁니다.

다른 메모리에 대한 액세스가 보호되어 프로세스에서 페이지 테이블을 수정할 수 없습니다. 다른 프로세스의 메모리에 액세스하려면 디버거 API가 필요합니다.

한 가지 예외는 Windows 커널입니다. 커널 모드 드라이버에있을 때 더 많은 권한과이 액세스를 허용하는 다른 API가 있습니다. (그리고 그러한 드라이버를 구현하기 위해서는 두통이 더 필요합니다.)