태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

후킹 기술 중 function entry point에 jmp 인스트럭션 삽입 방법

ⓢ Assembly 2007.11.29 15:29

출처 : http://fullc0de.egloos.com/3507292

후킹 기술 중 function entry point에 jmp 인스트럭션 삽입 방법

여러가지 후킹기술들이 많이 있다. 그 중에서 function entry point를 특정 5바이트의 코드로 치환하여 실행 흐름을 변경시키는 방식이 간간히 볼 수 있다.

jmp 코드를 삽입하는 어셈블리 코드는 아래와 같다. 코드브레이커즈 저널의 Hooking Windows API - Technics of hooking API functions on Windows 에서 발췌했다.



mov byte ptr [edi],0E9h ; E9는 jmp 인스트럭션 opcode 이다.
mov eax,offset new_sleep ; eax에 new_sleep 함수의 주소를 할당한다.
sub eax,edi ; 할당된 주소에서 후킹하고자 하는 위치[edi]의 주소를 뺀다. 상대주소 계산을 위해서다.
sub eax,5 ; 추가로 5bytes를 빼줌으로써 jmp 인스트럭션 길이(5bytes)를 감안해준다.
inc edi ; 삽입 된 E9 opcode 다음에 계산된 상대거리(offset)를 삽입하기 위해 1bytes 올려준다.
stosd ; 주소를 edi에 복사한다.



물론 이 코드 앞뒤로 메모리 프로텍션을 PAGE_EXECUTE_READWRITE로 풀어줬다가 원복시키는 코드가 존재해야 겠져..

후킹이 끝나고 나서 다시 원래되로 돌려주는 루틴도 필요합니다.~ -_-;;
Trackbacks 0 : Comments 0

Write a comment