API 후킹
-
[리버싱 핵심원리 study] 34장 고급 글로벌 API 후킹 - IE 접속 제어Reverse Engineering 2021. 1. 29. 21:22
이번 실습에서는 IE를 후킹 하여 의도하지 않은 다른 사이트로 접속을 우회시키는 방법을 공부해본다. (32bit windows 7 환경에서 진행하였다.) 1. 후킹 대상 API API 후킹을 할 때는 어떤 API를 후킹 할지 선정하는 것이 가장 중요하다. 우선 VirtualBox의 Windows 7 32bit의 IE를 실행시킨 후, Process Explorer로 IE를 관찰해보자. 위와 같이 iexplore.exe 프로세스에 로딩된 dll을 확인해보면 그중 wininet.dll이 로딩된 것을 확인할 수 있다. wininet.dll에는 InternetConnect() API라는 것이 있는데 해당 API는 웹사이트에 접속하려고 할 때 사용되는 API이다. API의 형태는 다음과 같다. void Intern..
-
[리버싱 핵심원리 study] 33장 '스텔스' 프로세스Reverse Engineering 2021. 1. 26. 21:43
API 코드 패치를 이용한 API 후킹 방법에 대해 실습한다. 32장에서 사용한 IAT 후킹 기법은 API가 프로세스의 IAT에 존재하지 않을 경우 후킹이 불가능한 반면 API 코드 패치 기법은 그런 제약이 없어 가장 널리 사용되는 방법이다. 또한 이번 실습에서 나아가 모든 프로세스를 후킹 하는 글로벌 후킹(Global Hooking)과 보다 효율적인 핫 패치 방법에 대해 알아본다. 1. API 코드 패치 동작 원리 이전 IAT 후킹 방식에서는 프로세스의 특정 IAT 값을 조작해서 후킹을 진행하였다. 코드 패치 방식은 실제 API 코드의 시작 5 byte 값을 JMP XXXXXXXX(XXXXXXXX는 사용자가 새롭게 정의한 함수)로 변경하여 후킹 함수로 제어를 넘기는 방식이다. 실습에서는 후킹하려는 대상..
-
[리버싱 핵심원리 study] 32장 계산기, 한글을 배우다Reverse Engineering 2021. 1. 22. 22:33
DLL 인젝션은 동작 원리와 구현이 비교적 간단하다는 장점이 있지만, 대상 프로세스의 IAT에 후킹을 원하는 API가 존재하지 않는 경우 사용할 수 없다는 단점이 있다. 이번 실습에서는 계산기에 DLL을 인젝션 하여 숫자 대신 한글이 출력되도록 API 후킹을 진행한다. 1. 대상 API 선정 PEView를 통해 calc.exe에서 임포트하는 API들을 확인해보자. 위와 같이 SetWindowText() API가 IAT에 있는 것을 확인할 수 있는데, 해당 API는 텍스트 에디터에 문자열을 출력해주는 기능을 한다. SetWindowText의() API의 구조는 다음과 같다. BOOL SetWindowTextA( HWND hWnd, LPCSTR lpString ); API의 hWnd는 윈도우 핸들이고, lp..