본문 바로가기

High Level Technique/Reversing

WinDBG명령어와 분석방법

WinDBG



WinDBG 명령어와 실제 분석 방법에 대해서 알아보도록 하겠습니다.





명령어





분석


Reversing을 처음 시작할 때 많이 하는 abexcm1.exe를 가지고 설명하도록 하겠습니다.


Windbg로 abexcm1.exe를 실행시키면 아래와 같이 int 3에 걸린 상태로 멈추게 됩니다.



abexcm1이 로딩된 주소를 확인해 보니 image00400000으로 되어있습니다.





EP 코드


EP 주소를 구합니다. !dh 명령어를 통해서 구할 수 있습니다. OllyDBG에서 Memory map에서 imagebase + sizeofimage를 확인하는 것과 같습니다.

main을 찾기 위한거죠.


 


Address of entry point를 확인해 보니 1000입니다.



주소 이동


그렇다면 실제 실행되는 주소로 이동해 보겠습니다.



WinDBG는 명령어를 기본적으로 한줄만 출력해줍니다.




명령어 출력


 


이렇게 명령어들을 더 출력할 수 있습니다.



위와 같이 OllyDBG에서 본 어셈블리어와 같게 나타납니다.




브레이크 포인트 설치


abexcm1을 풀어보신 분이라면 cmp eax, esi 부분에서 값을 비교하고 je 구분에서 같으면 점프를 한다는 것을 알고 있을겁니다.

그러면 cmp 명령어가 있는 부분에 break point를 설치하고 진행해 보도록 하겠습니다.



break point를 설치하고 진행시킨 결과 해당 주소에 정확히 걸려있는 것을 볼 수 있습니다.

eax와 esi의 값을 확인해봐야 하므로 레지스터를 확인합니다.





레지스터 확인


r 명령어를 통해서 레지스터를 확인 할 수 있습니다.


위와같이 레지스터 값도 변경할 수 있습니다.




'High Level Technique > Reversing' 카테고리의 다른 글

Session in Kernel 6  (0) 2016.07.26
Address Space Layout Randomization (ASLR)  (0) 2016.07.26
64비트에서 달라진 점  (0) 2016.07.26
API Hooking - API Code Patch, Global Hooking  (0) 2016.07.25
API Hooking - IAT Hooking  (3) 2016.07.25