.dml_flow(링크가 포함된 Unasemmble)
.dml_flow 명령은 디스어셈블된 코드 블록을 표시하고 코드 흐름 그래프를 생성하는 데 사용할 수 있는 링크를 제공합니다.
.dml_flow Start Target
매개 변수
시작
대상 주소에 도달할 수 있는 명령의 주소입니다.
대상
디스어셈블할 코드 블록의 주소입니다.
설명
다음 예제에 표시된 호출 스택을 고려합니다.
0: kd> kL
Child-SP RetAddr Call Site
fffff880`0335c688 fffff800`01b41f1c nt!IofCallDriver
fffff880`0335c690 fffff800`01b3b6b4 nt!IoSynchronousPageWrite+0x1cc
fffff880`0335c700 fffff800`01b4195e nt!MiFlushSectionInternal+0x9b8
...
nt의 시작부터 모든 코드 경로를 검사한다고 가정해 보겠습니다. 반환 주소가 포함된 코드 블록에 대한 MiFlushSectionInternal 입니다 fffff800`01b3b6b4
. 다음 명령을 시작합니다.
.browse .dml_flow nt!MiFlushSectionInternal fffff800`01b3b6b4
명령 브라우저 창의 출력은 다음 이미지에 표시됩니다.
위의 이미지는 대상 주소 fffff800`01b3b6b4
가 포함된 코드 블록을 보여 줍니다. 이미지 맨 위에 링크(fffff800`01b3b681
)가 하나만 있습니다. 현재 코드 블록에 연결할 수 있는 코드 블록이 하나만 있음을 나타냅니다. 링크를 클릭하면 코드 블록이 디스어셈블된 것을 볼 수 있으며 코드 흐름 그래프를 추가로 탐색할 수 있는 링크가 표시됩니다.
이전 이미지의 맨 아래에 있는 두 개의 링크는 현재 코드 블록에서 연결할 수 있는 두 개의 코드 블록이 있음을 나타냅니다.