DLL 인젝션에도 종류가 있긴한데, 가장간단하게 구현가능한게
CreateRemoteThread를 사용한 거다.
먼저 가상메모리 공간에 VirtualAllocEx함수를 이용해 Buffer size+1(NULL 포함) 만큼 할당.
그 VirtualAllocEx함수의 반환값은 메모리에 할당된 주소값이니 그 값을 저장해놓고
WriteProcessMemory를 사용해서 Buffer를 넣어주면 된다.
그러고는 GetModuleProc로 Module Handle을 구한뒤, GetProcAddress함수로 LoadLibraryA함수 주소를 얻어온다.
// 윈도우에서 중요한 dll 파일들은 각각의 로딩주소값을 가지고 있어서 가능하다.
마지막으로 CreateRemoteThread함수를 사용해 파라미터를 넘기면 끝.
근데, DLL인젝션이용해서 Hook도 할 수 있고, 기능 향상을 시켜주는건데,
윈도우8의 메모장은 인젝션이 되지 않는다.(다른 윈도우8 프로그램들[사용자 제작프로그램제외]도 그렇다)
뭔가 다른 DLL에서 인젝션을 막아놓은건지, 아니면 Previlege설정을 해줘야 가능한건지
한번 파봐야징
'API > 공부' 카테고리의 다른 글
API Hooking - Debugging (0) | 2014.11.13 |
---|---|
API 자료형(추가 예정) (0) | 2014.10.31 |
HANDLE and etc (0) | 2014.10.31 |