DLL이란?
-Dynamic Linking Library라는 의미로, LIB처럼 실행파일에 종속된 개념이지만 프로그램이 실행될 때 해당 DLL파일을 연결해서 실행하게 된다.
-> 즉, 파일이 수정 되더라도 해당 DLL파일을 사용하는 실행 파일은 수정하지 않아도 된다.
-플러그인은 기본적으로 DLL 형식으로 제작되어야 한다. DLL 프로젝트를 구성한 뒤, OllyDBG 라이브러리를 링크하고 필수적인 익스포트 펑션을 선언하여 기능을 구성하면 된다.
개발환경
Visual studio C++
DLL 생성
초기화 코드
-HelloOlly.cpp 기본 구조
-ODBG_Plugindata() 함수
- 플러그인의 이름을 지정하는 함수, 리턴값으로 플러그인의 버전을 반환함
-ODBG_Plugininit() 함수
- 플러그인 개발에 사용된 SDK 버전과 현재 OllyDBG의 버전을 비교해서 플러그인이 상위 버전이면 -1을 리턴하여 플러그인이 실행되지 않도록 함 (하위 버전을 호환됨), Addtolist() 함수로 로그를 뿌려주어 OllyDBG 내 로그 윈도우에서 “Hello Olly plugin v0.01 (test plugin)”, “made by window31” 문장을 확인할 수 있음
헤더파일
“plugin.h”
- “Plugin.h” 의 일부 내용 발췌
“HelloOlly.h”
- 플러그인은 DLL형태로 개발이 진행되어야 하므로 DLL프로젝트를 구성한 뒤 Plugin.h 파일을 포함하고 ollydbg.lib 파일도 링크한다.
오류 발생 부분
-초기화 코드를 수행하는 Plugininit 함수 부분에서, Log Window에 문자열을 출력하기 위한 Addtolist가 ‘함수에서 참조되는 확인할 수 없는 외부 기호’ 라는 오류 발생
-> https://pang2h.tistory.com/156 해당 링크를 참고하여 오류 해결하고자 하였으나 해결하지 못함
'4-8. 2021-1 심화 스터디 > 리버싱을 활용한 디버거 플러그인 개발' 카테고리의 다른 글
[2021.05.15]리버싱을 활용한 디버거 플러그인 개발5 (0) | 2021.05.15 |
---|---|
[2021.05.08]리버싱을 활용한 디버거 플러그인 개발4 (0) | 2021.05.08 |
[2021.05.01]리버싱을 활용한 디버거 플러그인 개발3 (0) | 2021.05.01 |
[2021.03.27]리버싱을 활용한 디버거 플러그인 개발2 (0) | 2021.03.27 |
[2021.3.13] 디버거 플러그인 개발 프로젝트 관련 개념 (0) | 2021.03.13 |