'API'에 해당되는 글 5건

DLL Injection

API/공부 2015. 5. 27. 08:15
반응형

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
블로그 이미지

KuroNeko_

KuroNeko

,

API Hooking - Debugging

API/공부 2014. 11. 13. 23:07
반응형

디버깅을 하고 데이터를 얻기 위해서는 프로세스의 PID가 필요하고 그 프로세스의 핸들이 필요한데, 간단히 프로세스 스냅샷을 찍어 해당 PID를 구하고 OpenProcess로 프로세스의 핸들을 받아온다.그리고 또 디버깅 이벤트를 발생시켜야하는데 INT_3를 WriteProcessMemory를 사용하여 한바이트만큼 넣어주고 다시 함수를 호출할 때 예외 이벤트를 걸리게 해준다. 이벤트가 걸려있는 동안 우리는 파라미터나 데이터를 가져올 수 있는데, 데이터를 얻은 다음 INT_3을 함수의 원래 주소(1바이트)값으로 변경시키고 다시 호출시킨다.


'API > 공부' 카테고리의 다른 글

DLL Injection  (0) 2015.05.27
API 자료형(추가 예정)  (0) 2014.10.31
HANDLE and etc  (0) 2014.10.31
블로그 이미지

KuroNeko_

KuroNeko

,

API Hooking - Debugging

API/자료 2014. 11. 13. 23:01
반응형

디버깅을 이용한 API후킹입니다.


이 예제는 간단히 안티디버깅기법으로 막힙니다.



API Hooking(Debug).zip


블로그 이미지

KuroNeko_

KuroNeko

,
반응형

1. DWORD

- 32비트(4바이트) 정수형

- unsigned int


2. WORD

- 16비트(2바이트) 정수형

- unsigned short


3. BYTE

- 8비트(1바이트) 정수형

- unsigned char


4. LPSTR

- Long Pointer String 의 약자 == char *


5. LPCSTR

- Long Pointer Constant String 의 약자 == const char *


//프로그램 환경에 따라서 형태가 바뀌는 매크로역할

6. LPTSTR

- Long Pointer t_string == tchar *

7. LPCTSTR

- Long Pointer Constant t_string == const tchar *


//Unicode

8. LPWSTR

- Long Pointer Wide String == w_char *

9. LPCWSTR 

- Long Pointer Constant Wid String == const w_char *

'API > 공부' 카테고리의 다른 글

DLL Injection  (0) 2015.05.27
API Hooking - Debugging  (0) 2014.11.13
HANDLE and etc  (0) 2014.10.31
블로그 이미지

KuroNeko_

KuroNeko

,

HANDLE and etc

API/공부 2014. 10. 31. 21:17
반응형

핸들(HANDLE)

- 운영체제는 자신을 보호하는 기능이 있어야한다. 왜냐면프로그램이 운영체제의 자원을 필요로 해서 바로 접근을 한다고 하면 운영체제의 권한을 탈취 당할 수 있기 때문인데, 이를 방지하기 위해서 프로그램에게 알려주는 값.

- 프로그램은 운영체제의 자원을 사용하기 위해 운영체제에게 핸들을 제시해줘야 한다.


HWND

- HandleWindow의 약자로 창의 핸들을 말한다.


HINTERNET

- HandleInternet의 약자로 네트워크(?)를 사용하기 위한 핸들이다.


HINSTANCE

- Handleinstance의 약자로 프로그램 코드를 담고 있는 모듈에 대한 핸들

- 자원읽기에 주로 사용된다.


Etc...


Ps. Handle은 사용된 후에 반드시 닫아줘야한다.( CloseHandle() )

'API > 공부' 카테고리의 다른 글

DLL Injection  (0) 2015.05.27
API Hooking - Debugging  (0) 2014.11.13
API 자료형(추가 예정)  (0) 2014.10.31
블로그 이미지

KuroNeko_

KuroNeko

,