본문 바로가기

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

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

t_memory - 메모리 관련 구조체






 

Findmemory(): 인자가 1개인 함수, 살펴보고 싶은 메모리 번지를 지정하면 해당 영역에 대한 각종 값을 t_memory 구조체에 채워주는 역할

Findmemory()에 넣은 메모리 번지에는 t_dump 구조체의 sel0 멤버 변수가 가리키고 있음

 

 base는 401000으로 t_dump에서 구한 값과 동일한 값이다. 우리가 선택한 영역은 0x402D09 번지부터 0x402D26번지까지이므로 그 영역에 대한 PE를 구해서 역시 마찬가지로 BaseofCode와 ImageBase를 더한 값을 보여준다. size도 이와 마찬가지이다.



t_disasm - 디스어셈블 구조체

 

t_disasm 구조체는 실제 코드를 디스어셈블하는 역할을 한다.  따라서 각종 어려운 옵코드를 다 해석한다.
-> ‘PDK가 라이브러리가 맞다’고 알 수 있게 됨

 

 

 가장 크기가 큰 구조체이지만, 실제로는 위에 표시되어 있는 대여섯 개만 봐도 충분하다. 이 구조체에 값을 채우려면 Readmemory()와 Disasm()이라는 OllyDBG API를 사용해야만 한다.



디버거 플러그인 해결한 오류

 

C4996

 

상단에 #define _CRT_NONSTDC_NO_DEPRECATE 정의해주었음

 

참고: https://m.blog.naver.com/PostView.nhn?blogId=madosa3000&logNo=221008730319&proxyReferer=https:%2F%2Fwww.google.com%2F



아직 해결하지 못한 오류

 

외부 참조 오류로만 7개 발생. 

 

- 시도한 방법

https://olidang.tistory.com/102 

https://m.blog.naver.com/PostView.nhn?blogId=bogri5520&logNo=220242272338&proxyReferer=https:%2F%2Fwww.google.com%2F 

(VS 버전이 달라 해결되지 않는 것으로 추정됨)




출처 : 리버스 엔지니어링 바이블