OpenProcess함수는 프로세스에 할당된 가상메모리를 Read/WriteProcessMemory를 이용하여 조작하기 위하여  많은 사람들이 사용하는 함수일 것이다. 물론 악의적으로도, 보안을 위해서도 사용되어 질 수 있다.

.
.
.

XP에서 Read/Write를 위해서는 간단히
HANDLE hTarget = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);
를 해주면 된다. 그렇게 되면 해당 프로세스의 가상메모리에 접근할 수 있게 된다. 이 얼마나 간단한가!

.
.
.

But!!!!

.
.
.

망할 Vista......!
저렇게 해주고 실행파일을 생성해서 실행시키면 간단히 OpenProcess함수가 ERROR_ACCESS_DENIED!! 토해 주신다.. 어처구니 짜장이다.. 분명히 XP에서는 잘 돌아 갔더랬다. 잘나신 Vista의 관리자 모드 때문이다.!
열받아서 UAC를 무시하겠다 라고 맘먹었으나...... 구글링에 삽질의 삽질끝에 이미 태생이 관리자 모드가 아닌 프로세스는 별의 별짓을 다해도 남의 프로세스를 열수가 없더라~!

그래서 ShellExecuteEx를 사용해서 관리자 권한을 유도 하는 방법으로 커버했다...젠장!
Posted by hazeyun
,