- PDK 활용
OllyDBG의 플러그인 SDK에는 여러 가지 구조체가 선언되어 있다.
이 구조체와 OllyDBG API의 조합만 잘 살펴보면 복잡한 과정을 거쳐 구해야 하는 값이나 여러가지 번거로운 작업을 쉽고 다이나믹하게 처리할 수 있다.
t_dump, t_memory, t_disasm라는 이름의 3개의 구조체는 플러그인 개발에 매우 유용하게 쓰이며, 모두 t_접두사를 사용한다. 이 구조체들은 디버거 관련 사항이 대부분이고 메모리 처리에 대한 내용이 중심을 이룬다. 그렇기 때문에 이 구조체들을 제대로 응용할 수 있다면 대부분의 메모리 컨트롤이 가능하다.
- t_dump - 덤프 관련 구조체
- 위는 덤프관련 구조체로, 20개가 넘는 멤버 변수를 가지고 있지만 모두 사용되는 것은 아니다.
- 앞에서 작성한 ODBG_Pluginaction() 함수에 위치 값을 받아올 수 있는 코드를 추가하였다. 이 함수의 세 번째 인자로 void* 형의 변수가 넘어오게 되고, CheckStruct()라는 함수를 만들어 이 변수를 인자로 전달한다.
- Checkstruct()에서 전달받은 void* 형의 변수를 t_dump 구조체 형으로 형변환하면 해당 구조체에 맞게 값을 사용할 수 있다.
- 발생한 오류 및 해결 방법
<오류 1>
Start(), WriteLog(), End()에서 위와 같이 명시적 형식이 없다는 오류가 발생했다,
<해결 방법 1>
각각 반환 형식을 'int'로 지정해 해결했다.
- 아직 해결하지 못한 오류
'4-8. 2021-1 심화 스터디 > 리버싱을 활용한 디버거 플러그인 개발' 카테고리의 다른 글
[2021.05.22] 리버싱을 활용한 디버거 플러그인 개발6 (0) | 2021.05.22 |
---|---|
[2021.05.15]리버싱을 활용한 디버거 플러그인 개발5 (0) | 2021.05.15 |
[2021.05.01]리버싱을 활용한 디버거 플러그인 개발3 (0) | 2021.05.01 |
[2021.03.27]리버싱을 활용한 디버거 플러그인 개발2 (0) | 2021.03.27 |
[2021.03.20] 리버싱을 활용한 디버거 플러그인 개발 1 (0) | 2021.03.20 |