Open API와 DLL Injection을 이용한 Click-Free Dictionary의

Download Report

Transcript Open API와 DLL Injection을 이용한 Click-Free Dictionary의

졸업 실험 보고서
Open API와 DLL Injection을 이용한
자동 검색 사전의 설계 및 구현
Design & Implementation of an Automatic Search Dictionary
Using Open API & DLL Injection
성명 : 홍 준 기
지도교수 : 조 영 석
연구실 : S E R A
목적 및 필요성

기존 사전검색의 불편함
• 포털 사이트를 통한 사전 검색
• 여러 차례 Page 이동이 요구
• HTML page loading 지연 (배너, 광고 등의 추가 정보 로딩이 필요)
• 임시파일의 생성으로 인한 추가적이 메모리가 소요
• 사전 검색 프로그램
• 정적인 검색내용만 출력 (다양한 검색 불가 ex. 한글 사전)
• Web 기반이 아닌 프로그램에서는 사전 내용 설치가 필요 (ex. 한글 사전)
• 툴바를 이용한 검색
• 지원하는 단어의 정보 제한, HTML 페이지 내부에서만 동작

추가 기능
• DLL Injection을 이용한 API Hooking 기능(마우스 위치 텍스트 감지)
• 기존 사전검색 기능에 사용자의 편의성을 고려한 기능 추가
• Open API를 통해 확장된 검색과 빠른 접근을 제공
• 검색 정보의 보안성 제공
개발 범위 및 목표

DLL Injection
• DLL Injection?
• 실행중인 프로세스로 DLL Code를 삽입하는 기법
• DLL에서 실행중인 프로세스를 감시하여 메시지를 가로채는 역할

API Hooking
• API Hooking?
• DLL 내부에서 모든 프로세스에서 발생하는 Win32 API 함수의 호출을 감지
• GDI32.DLL 내부의 TextOutA/W() 계열 API 함수 호출을 감지
• Windows OS Mechanism을 이용한 설계
• Windows application을 개발 시 다양한 언어와 도구를 통해 제작이 가능
• 다른 언어와 도구로 작성된 프로그램에서 작업을 수행하기 위한 방법은 다름
• 텍스트 출력의 각 언어별로 방법이 다름
•
MFC에서는 CDC::DrawText
Delphi에서는 TCanas::TextOut
내부를 살펴보면 Windows 운영체제에서 제공하는 TextOut() API함수를 호출
개발 범위 및 목표 (cont’d)


텍스트 감지
• Windows OS에 따른 처리
• ANSI, UNICODE 에 따른 처리
감지 가능 OS와 Program
• OS
• Windows 2000 / XP / Vista
• Windows Server 2003
• Windows 계열에서 동작 가능
• Program
• 메모장, 한글, 엑셀, 워드, 웹 브라우저 등에서 인식 가능
• Power Point, 메뉴 바 감지 불가
개발 범위 및 목표 (cont’d)

Open API
• Open API?
• Google, Naver, Daum, Yahoo 등 포털 사이트에서 자사의 API를 외부에 공개한
•
•
검색 서비스
개발자나 일반 프로그래머가 작게는 운영사이트의 활용성을 도모하고, 넓게는
창조적이고 다양한 어플리케이션을 개발하도록 지원
개발자가 포털 사이트의 방대한 정보에 쉽게 접근 가능
(ex. 한/영 사전검색, 블로그 / 지식인 / 웹 문서 / 백과사전 검색 등)
• Open API의 활용
• 기존 Database에 저장된 사전의 내용을 가져오는 방식과 다르게 Open API
•
•
를 통한 사전 검색의 기능을 제공
다양한 Open API 사용을 통해 검색의 범위를 확장
한/영 키의 오타변환, 추천 검색 기능을 통해 확장된 검색기능을 제공
개발 범위 및 목표 (cont’d)



Open API
Open API를 통해 제공되는 방대한 데이터에 개발자의 아이디어를 더해 새로운 서
비스를 생성
변해가는 웹 사이트와 같이 사용자가 정적인 서비스를 제공받는 것에서 다양한 서
비스를 선택적으로 제공 받을 수 있는 기회를 제공
동작 과정
② 마우스 움직임 감지
① DLL load
⑤ TextOutA/W()
API의 출력
문자열을 리턴
④ TextOutA/W() API
함수 호출
DLL Injection
⑧ XML Page의 URL
로 접근
⑩ 출력
⑥ API Query
요청
⑦ XML Page
리턴
Naver Server
⑨ Parsing을 통해
검색 정보 추출
③무효화 영역 지정
XML / HTML Parsing
Demonstration
검색
③ Parsing된 URL로 접근
① API Query 요청
② XML page 내부
URL Parsing
④ 검색 정보 Parsing후
출력
실험 결과
영어 사전 검색

오타 변환
사전 검색



국어 사전 검색
일반 사전 검색의 경우 한글 / 영문을 판단하여 그에 따른 사전검색을 제공
영어 사전 검색의 경우 해당 단어의 발음듣기 기능 제공
오타변환


한 / 영키 설정 오류로 인한 오타를 수정
한글 -> 영문, 영문 -> 한글로 자동 변환
실험 결과 (cont’d)
추천 검색

지식IN 검색
환경설정
추천 검색


웹 문서 검색
추천 검색 API를 통해 검색 내용과 연관된 단어를 콤보 박스에 대입
지식인, 블로그, 웹 문서, 백과사전 검색


제목, 내부의 간단한 Description과 정보가 있는 Page의 URL을 나열
포털 사이트 Naver와 동일한 검색결과 출력
결론 / 향후 과제

결론
• Open API를 통한 직접적인 접근을 통해 검색 지연시간 감소
• 검색에 대한 추가적인 메모리 소요 없음
• 확장된 검색기능을 제공
• 사용자의 편의성을 고려한 기능 제공
• 검색 정보에 대한 보안성 제공

향후 과제
• 여러 포털 사이트에서 제공하는 Open API를 결합하여 추가된
•
•
기능을 제공가능
HTML, XML page의 출력 방식 변경 시 변경에 따른 Parsing 방
법이 필요
API Hooking의 추가적인 작업이 필요