일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 물걸레자동세척로봇청소기
- 빅데이터
- 패턴인식
- 삼성소프트웨어멤버십
- Bidirectional Associative Memory
- 패턴 인식
- 파이썬
- 신경망
- 삼성전자 소프트웨어멤버십 SSM
- NarwalFreo
- 갤럭시탭S8울트라
- Python
- BAM
- 멤버십
- SSM
- Google App Engine
- Neural Network
- 나르왈프레오
- 증강현실
- 구글 앱 엔진
- 동아리
- 인공지능
- 신경회로망
- 삼성
- Friendship
- 가상화
- 고려대학교
- 물걸레로봇청소기추천
- hopfield network
- 하이퍼바이저
- Today
- Total
정보공간_1
[6기 대구 허정욱] EasyHook - Windows API Hooking 본문
[6기 대구 허정욱] EasyHook - Windows API Hooking
알 수 없는 사용자 2014. 10. 6. 20:1910여 년 전 후킹 기법은 고급 테크닉에 속하는 생소한 개념이였습니다.
이전에 했던 Detours는 32bit에서만 적용됩니다. 64bit에서 사용하려면, 유료 버전을 구매하여야합니다.
[블로그 참조 그림 1 : 다시 보는 후킹 기법]
[블로그 참조 그림 2 : 다시 보는 후킹 기법]
[블로그 참조 그림3 : http://yes.imhappyo.com/422]
LGPL은 GPL의 조건이 너무 엄격해서 사람들이 쓰는 것을 꺼려할까봐 이를 감안해서 만든 라이선스 입니다. 따라서 GPL과는 다르게 LGPL 라이브러리에 응용프로그램을 정적 혹은 동적으로 링크시킨다고 해도 응용프로그램의 소스코드를 공개할 필요가 없습니다. LGPL 전문에 있는 ”라이브러리의 복제본을 무상이나 유상으로 배포할 경우에, 당신은 우리가 당신에게 부여한 모든 권리를 수취인에게도 그대로 부여해야 한다.“라는 내용으로 요구 조건만 준수한다면 상업적인 유상 배포도 허용하고 있습니다. 따라서 자기가 만든 소스코드의 공개없이 가격을 받는 상용제품으로 판매하셔도 됩니다.
다만, LGPL 라이브러리의 소스코드를 수정하였을 때에는 2차적 파생 저작물에 해당하므로 라이브러리의 소스코드를 제공해야 합니다. (블로그 참조 : http://yes.imhappyo.com/422)
[그림 4. EasyHook 사이트]
easyhook 사이트에 가셔서, download를 합니다.
[그림 5. EasyHook 압축파일]
바탕화면이나 작업하려는 폴더에 압축을 풉니다.
그리고 Visual Studio 환경에서 작업을 시작해보겠습니다.
[그림 6. 64비트 설정]
위와 같은 작업 환경을 만듭니다.
EasyHook은 64ibt 환경에서 작업할 수 있도록 만들어줍니다.
프로젝트 속성에서 C/C++ 일반 속성란에, 추가 포함 디렉터리에 현재 다운로드 받은 폴더를 지정하고,
링커 속성에서 추가 라이브러리에 똑같은 폴더를 지정해줍니다.
[그림 7. dll 등록]
마지막으로 EasyHook64.dll을 자신의 실행 폴더 exe있는 곳으로 옮겨줍니다.
그래야 컴파일을할 때, dll을 실행시킬 수가 있게 됩니다.
위와 같이 시작할 수 있는 소스 파일을 실행시켜서 아무런 무리가 없이 실행이 되면 Easyhook을 이용할 준비가 된 것입니다.
[그림 8. EasyHook 함수 후킹 과정]
[그림 8]은 함수 후킹하는 과정을 간단하게 나타낸 것입니다.
위와 같은 과정은 아래와 같은 순서대로 실행프로그램에서 준비를 해주어야합니다.
1. 먼저 우리는 Inject 될 DLL을 구현을 합니다. (API_Hook DLL 구현)
2. 이 DLL은 우리가 후킹하려는 파일에서 실행할 수 있도록 CreateProcess 함수로 실행시킵니다.
3. CreateProcess 함수는 CREATE_SUSPENDED로 설정하여 호출합니다.
4. RhInjectLibrary 함수로 DLL을 실행 프로그램에 Injection 시킵니다.
5. ResumeThread 함수로 실행 프로그램을 재시작시킵니다.
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[6기 부산 정희록] Beautiful Soup #3 (0) | 2014.10.07 |
---|---|
[6기 강북 전영진] 리눅스 커널 심층 분석 #2 (0) | 2014.10.06 |
[6기 강남 송태현] android Framework Notifiacation & NotifyService 분석 (0) | 2014.10.04 |
[6기 강남 조유석] Union-Find (0) | 2014.09.21 |
[6기 강북 이보희] 디지털 영상처리 - Filter 편 #1 (1) | 2014.09.18 |