2016-06-04 8 views
0

Ich habe eine Datei, die Adresse pro Zeile enthält. Jetzt möchte ich einen bestimmten CDB-Debugger-Befehl (eigentlich SOSEX refs) auf jede Adresse in der Datei anwenden.Wie wird ein CDB-Debugger-Befehl auf jede Zeile in der Datei angewendet?

Ich kann ein Skript erzeugen, wobei jede Zeile der Form ist:

!refs <address> -target 

Also, wenn meine ursprüngliche Datei 10.000 Adressen enthält, dann würde das Skript 10.000 Anrufungen des !refs Befehl enthalten.

Gibt es einen besseren Weg?

+0

https://blogs.msdn.microsoft.com/debuggingtoolbox/2009/03/11/special-commandparsing-strings- files-and-commands-output-foreach/ –

+0

'.foreach' könnte auch funktionieren, aber seine Syntax ist nicht so einfach, so dass IMHO in diesem Fall keinen Vorteil bringt. –

+1

Mein Vorschlag würde die Notwendigkeit von 10.000 Aufrufen des Befehls sowieso nicht beseitigen, daher vermute ich, dass die Antwort auf die Frage ist, dass es wirklich keinen besseren Weg gibt als das, was Sie tun. –

Antwort

2

annehmend sammelte ich ein paar Adresse wie diese in einer Datei

.shell -ci "uf calc!WinMain" awk "{print $1} 

Ich habe 623-Adresse in der Datei

wc -l someaddr.txt 
623 someaddr.txt 

head -n 5 someaddr.txt 
00211635 
00211637 
00211638 
0021163a 
00211640 

tail -n 5 someaddr.txt 
0023779c 
002377a2 
002377a7 
002377ac 
002377b0 

lässt i zwei Befehle jeder einzelnen Adresse zerlegen nehmen wollen

Ich würde etwas wie diese tun

.foreach /f (place "e:\someaddr.txt") { u place l2 } 

führt

Kopf

0:000> .foreach /f (place "e:\someaddr.txt") { u place l2 } 
calc!WinMain: 
00211635 8bff   mov  edi,edi 
00211637 55    push ebp 
calc!WinMain+0x2: 
00211637 55    push ebp 
00211638 8bec   mov  ebp,esp 
calc!WinMain+0x3: 
00211638 8bec   mov  ebp,esp 
0021163a 81ec580d0000 sub  esp,0D58h 
calc!WinMain+0x5: 
0021163a 81ec580d0000 sub  esp,0D58h 
00211640 a164402600  mov  eax,dword ptr [calc!__security_cookie (00264064)] 
calc!WinMain+0xb: 
00211640 a164402600  mov  eax,dword ptr [calc!__security_cookie (00264064)] 
00211645 33c5   xor  eax,ebp 

tail

calc!WinMain+0x772: 
0023779c ff0 call dword ptr [calc!_imp__InvalidateRect (00211300)] 
002377a2 e92ba4fdff  jmp  calc!WinMain+0x778 (00211bd2) 
calc!WinMain+0x778: 
002377a2 e92ba4fdff  jmp  calc!WinMain+0x778 (00211bd2) 
002377a7 a1ac402600  mov  eax,dword ptr [calc!calcSQM (002640ac)] 
calc!WinMain+0x7fb: 
002377a7 a1ac402600  mov  eax,dword ptr [calc!calcSQM (002640ac)] 
002377ac 83482004  or  dword ptr [eax+20h],4 
calc!WinMain+0x800: 
002377ac 83482004  or  dword ptr [eax+20h],4 
002377b0 e993a4fdff  jmp  calc!WinMain+0x804 (00211c48) 
calc!WinMain+0x804: 
002377b0 e993a4fdff  jmp  calc!WinMain+0x804 (00211c48) 
002377b5 90    nop