110 likes | 317 Views
졸업 실험 보고서. Open API 와 DLL Injection 을 이용한 자동 검색 사전의 설계 및 구현. Design & Implementation of an Automatic Search Dictionary Using Open API & DLL Injection. 성명 : 홍 준 기 지도교수 : 조 영 석 연구실 : S E R A. 목적 및 필요성. 기존 사전검색의 불편함 포털 사이트를 통한 사전 검색 여러 차례 Page 이동이 요구
E N D
졸업 실험 보고서 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을 이용한 APIHooking 기능(마우스 위치 텍스트 감지) • 기존 사전검색 기능에 사용자의 편의성을 고려한 기능 추가 • 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::DrawTextDelphi에서는 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 리턴 ⑨ Parsing을 통해 검색 정보 추출 Naver Server
XML / HTML Parsing Demonstration 검색 ① API Query 요청 ③ Parsing된 URL로 접근 ② XML page 내부 URL Parsing ④ 검색 정보 Parsing후 출력
실험 결과 영어 사전 검색 국어 사전 검색 오타 변환 • 사전 검색 • 일반 사전 검색의 경우 한글 / 영문을 판단하여 그에 따른 사전검색을 제공 • 영어 사전 검색의 경우 해당 단어의 발음듣기 기능 제공 • 오타변환 • 한 / 영키 설정 오류로 인한 오타를 수정 • 한글 -> 영문, 영문 -> 한글로 자동 변환
실험 결과 (cont’d) 추천 검색 웹 문서 검색 지식IN 검색 환경설정 • 추천 검색 • 추천 검색 API를 통해 검색 내용과 연관된 단어를 콤보 박스에 대입 • 지식인, 블로그, 웹 문서, 백과사전 검색 • 제목, 내부의 간단한 Description과 정보가 있는 Page의 URL을 나열 • 포털 사이트 Naver와 동일한 검색결과 출력
결론 / 향후 과제 • 결론 • Open API를 통한 직접적인 접근을 통해 검색 지연시간 감소 • 검색에 대한 추가적인 메모리 소요 없음 • 확장된 검색기능을 제공 • 사용자의 편의성을 고려한 기능 제공 • 검색 정보에 대한 보안성 제공 • 향후 과제 • 여러 포털 사이트에서 제공하는 Open API를 결합하여 추가된 기능을 제공가능 • HTML, XML page의 출력 방식 변경 시 변경에 따른 Parsing 방법이 필요 • API Hooking의 추가적인 작업이 필요