본문 바로가기

4-8. 2021-1 심화 스터디/리버싱을 활용한 디버거 플러그인 개발

[2021.05.01]리버싱을 활용한 디버거 플러그인 개발3

- 메뉴 핸들러 작성 - ODBG_Pluginaction()



 

 

  • 메뉴의 각 기능에 대한 핸들러를 작성. 메뉴를 만들 때 0,1,2 등의 식별자 를 지정했다. 그 숫자에 해당하는 값이 각 메뉴에 해당하는 루틴인데 헷갈리지 않도록 전처리문으로 처리해 놓았다.

 

  • Hello Olly Dialog를 선택하면 다이얼로그가 생성되게 하는 코드인데 계속 GetStatus 부분에서 오류가 발생한다. 그래서 주석 처리를 하고 빌드하면 성공은 되지만 별다른 기능 수행은 하지 못하는 상황이다.

 



<실행화면>

 

Test를 클릭했을 때 나타나는 결과

 

About을 클릭했을 때 나타나는 결과



- 종료처리

 

앞선 코드 작성들로 메뉴 추가, 팝업 출력, 각 메뉴에 대한 핸들러 작성을 완료하였고, 마지막으로 생각해야할 처리는 종료함수이다.

 

플러그인 사용이 끝난 뒤 추가로 종료 처리 함수를 별도로 작성할 수 있다. 사용한 메모리가 있으면 메모리 해제 코드를 넣을 수도 있고, MessageBox()를 이용해 종료 로그를 추가할 수도 있다.

 

종료 펑션은 ODBG_Pluginclose()를 이용해 작성할 수 있으며, 강제 종료되는 경우도 ODBG_Plugindestroy()로 처리할 수 있다.

 

<실행화면>

올리디버거를 종료할 때 나타나는 결과

 

<발생한 오류>

아래와 같이 Getstatus를 인식할 수 없다는 오류가 발생함, 해당 식별자는 Plugin.h에 정의된 식별자로 어떠한 이유로 식별할 수 없는지 알아보고 해결하고자 노력하고 있음



<참고자료>