windbg를 같은 뭔가 당신이 DWORD와 QWORD을 평가하기 위해 필요에 따라) 당신이
kd> bl
kd> !process 0 0 calc.exe
Failed to get VAD root
PROCESS 8113d528 SessionId: 0 Cid: 07a0 Peb: 7ffde000 ParentCid: 043c
DirBase: 03d27000 ObjectTable: e15ba240 HandleCount: 28.
Image: calc.exe
kd> bp /p 8113d528 nt!KiSwapContext "?? (char *)(@$proc->ImageFileName)"
kd> g
char * 0x8113d69c
"calc.exe"
nt!KiSwapContext:
804db828 83ec10 sub esp,10h
kd> g
char * 0x8113d69c
"calc.exe"
nt!KiSwapContext:
804db828 83ec10 sub esp,10h
사용 DWO()와 qwo (GS 및 FS 레지스터와 일 처리해서는 안 process specific breakpoints with /p
설정할 수 있습니다
kd> ? qwo (ffb9cda8 + 70)
Evaluate expression: -9142252815570161280 = 81203180`81203180
kd> ? dwo (qwo (ffb9cda8 + 70))
Evaluate expression: -4600296 = ffb9ce18
confirmation
kd> dd 81203180 l1
81203180 ffb9ce18
kd> dd ffb9cda8+70 l1
ffb9ce18 81203180
편집
,363,210
나는 캔트 표현식
하지만 귀하의 경우
절대적으로 필요한 경우가 아니면 일반적으로 당신이 필요하지 않습니다 하드 코딩을하지 않도록해야
를 WinDBG에서 오류가 무엇인지를 알려 기압 있도록 x64 시스템에 액세스하지 못할 하드 코딩을하는 사람에게 의사 레지스터를 제공합니다.
$thread to c++ Expression for CurrentThread * ie (nt!_ETHREAD *)
.
그래서 $thread->Cid.UniqueProcess
당신이 당신의 gsexxxxx이
BP NT를 같이 중단 점을 설정할 수 있습니다 염두에두고
으로 평가하는 것입니다! KiSwapContext "R? $ T0 = @ $ 스레드 -> 시드 .UniqueProcess; .if (@ $ t0! = 0x740) {? @ $ t0; ?? (char *) @ $ proc-> ImageFileName; gc} "
이 조건부는 calc에서만 중단됩니다.exe는 매우 뜨거운 경로에 조건을 평가하는 것은 당신이 그것을 NT
에 의해 크롤보고 참을 수없는 고통을 감내 할 것
kd> g
Evaluate expression: 404 = 00000194
char * 0x81105c84
"csrss.exe"
XXXXXXXXXXX
Evaluate expression: 4 = 00000004
char * 0x8129196c
"System"
xxxxxxxxxxxxxxxxxxxxxxxxxxx
Evaluate expression: 1404 = 0000057c
char * 0x8114a4bc
"vpcmap.exe"
Evaluate expression: 480 = 000001e0
char * 0x8112a98c
"services.exe"
Evaluate expression: 492 = 000001ec
char * 0x811cc9ac
"lsass.exe"
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Evaluate expression: 1116 = 0000045c
char * 0xffaf9da4
"explorer.exe"
Evaluate expression: 644 = 00000284
char * 0xffb74f14
"svchost.exe"
nt!KiSwapContext: <---------------------------Conditional broke here
804db828 83ec10 sub esp,10h
kd> ? @$t0;?? (char *)@$proc->ImageFileName
Evaluate expression: 1856 = 00000740
char * 0x8110e76c
"calc.exe"
명심 현재 프로세스입니다! kiSwapContext가 몇 초 당신을에 수백 번이라고 당신의 세션에서 매우 눈에 띄는 성능 저하를 볼 수있을 것입니다
가능한 공정을 이용하고 특정 또는 특정 중단 점을 스레드 평가하지 않는 조건
아니요 일부 치트 시트를 사용하지 않습니다. (Google에서 사용할 수있는 정보가 거의 없음) 직접 또는 경우에 따라 온라인 msdn 설명서를 선호합니다.
정말 고마워요! Windows 커널 디버거에 대한 많은 문서를 읽었으며 이와 같은 정보를 찾는 데 어려움을 겪고 있습니다. 당신은 좋은 치트 쉬트 참조를 알지 못했을까요? 왜 내 명령을 받아들이지 않을 것인가에 대한 생각? 거기에 오타가 있습니까? 아니면 내 프로세서 번호 해킹을 사용하여 문제를 찾으려는 것일뿐입니다. – Dakusan
다시 한 번 감사드립니다. 실제로 커널 디버깅에 대한 MSDN의 전체 섹션을 읽었습니다. 어쨌든 내가 알아야 할 가장 중요한 것들은 당신이 내게 준 모든 것입니다! 변수 및 명령에 익숙해지기까지 잠시 동안 귀하의 대답을 다시 언급 할 것입니다. – Dakusan
또한 새 코드에서'@ $ t0! = 0x740'을 생각하면'=='으로 사용했을 것입니다. 그리고 나는 이제는 bp를 KiSwapContext에 넣는 대신에 "bu PROCESSNAME! *"(나는 구문이라고 생각합니다)을 사용해야 만한다는 것을 알았습니다. – Dakusan