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..
-
[Lenas Reversing for Newbies] 02Wargame/Lenas Reversing 2021. 1. 26. 23:10
1. 프로그램 실행 01편 강좌와 동일한 reverseMe.exe 파일을 이번에는 패치를 이용하지 않고 크랙을 이용해 문제를 해결한다. 2. Debugging(with OllyDbg) 위의 동그라미 친 부분에서 CreateFileA() API가 호출되는 것을 확인할 수 있다. CreateFileA() API는 다음과 같은 형태다. HANDLE CreateFileA( LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile ); OllyDb..
-
[리버싱 핵심원리 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는 사용자가 새롭게 정의한 함수)로 변경하여 후킹 함수로 제어를 넘기는 방식이다. 실습에서는 후킹하려는 대상..
-
[Lenas Reversing for Newbies] 01Wargame/Lenas Reversing 2021. 1. 26. 01:59
1. 프로그램 실행 위와 같은 메시지 박스가 나오고 확인을 누르면 프로그램은 그대로 종료된다. OllyDbg로 바로 분석을 해보자. 2. Debugging(with OllyDbg) Stub Code 없이 바로 프로그램 코드를 확인할 수 있다. "Search for All referenced Strings"를 이용해 패치했을 때 나올 수 있는 문자열을 확인해보자. 동그라미 친 부분이 패치했을 때 나와야 할 문자열로 보인다. 해당 부분으로 이동해보자. 위와 같이 메시지 박스를 출력한다. 분기 지점을 찾아 조건에 상관없이 위 코드의 시작 지점인 00401205 주소로 JMP 하도록 코드를 수정해보자. 코드를 조금 실행하다 보면 위와 같이 조건 검사 및 점프를 하는 코드를 확인할 수 있다. 해당 지점에서 원본 ..