DLL Injection 을 이용한 Win32 API Hooking (1)

컴퓨터 이야기/Reverse Engineering 2010. 9. 7. 01:55

후킹은 원래 진행되어야하는 프로세스를 중간에 낚아채서 내가 원하는 코드를 집어넣는 작업을 말합니다.      
        
다른 프로그램에서 MessageBox 를 호출 하는 순간을 잡을 수 있다. .!! 흥분되지 않습니까?
        
        
Win32 API 하에서 다른 프로세스나 전역적으로 호출되는 API 함수를 후킹하는것을        
        
API Hooking 이라고 함. 어디에 어떻게 쓰이느냐. 사람마다 응용하기 나름인데 디버깅 관점에서 보면         
API 함수로 호출되는 파라메터의 값을 뿌려줄 수도 있고,        
리버싱에서 보면 중간에 추가적인 기능을 다른 프로그램에 삽입할 수 있다는 것.        
        
전체적인 구조를 보면 MessageBox 가 호출이 되면 my.dll 에 있는 MyMessageBox 가 호출 되고         
MyMessageBox 의 형태는         
MyMessageBox { 내가 조작해야될 명령들, ..., call kernel32!MessageBox }         
같은 형태가 될거고         
MyMessageBox 가 리턴되면서 원래 있던 프로그램으로 입싹 닦고 유유히 사라지는거죠.        
        
API Hooking 하는 방법은 여러가지 방법이 있지만 저는 일반적인 방법인         
실행중인 프로세스의  DLL Injection 을 이용하여 Import Table 을 조작해 API Hooking 을 해보려고 합니다.         
        
다음 글에서는 기본적인 API Hooking 은 제외한 DLL injection 하는데 까지만 해보겠습니다.
: