Manuelles setzen von breakpoints in WinDBG

Ich versuche zu prüfen, die Montage für eine ausführbare Datei mit WinDBG, aber ich habe eine harte Zeit zu bekommen, um es. Ich will setzen Sie einen Haltepunkt bei der ersten Anweisung in meinem Programm, aber wenn ich versuche zu tun, die manuell (mit der Adresse des Moduls), WinDBG sagt mir, dass es "unable to insert breakpoint" an dieser Stelle durch ein "Ungültiger Zugriff auf Speicherbereich."

Ich merke, dass wenn ich einen breakpoint durch die source-code-GUI, die Adresse ist nicht die gleiche wie der erste Teil meines Moduls (In meinem Beispiel: "Win32FileOpen", ein einfaches Programm, das ich schrieb.) Gibt es einen header von einer Art, erfordert das hinzufügen von offset zu der Adresse von meinem Modul?

In einem anderen Frage, sah ich den Vorschlag: "ich würde versuchen, berechnen Sie die breakpoint-Adresse: Modul start - + - code start + code offset", aber war sich nicht sicher, wo zu erhalten, diese Werte. Kann bitte jemand etwas näher erläutern?

Der Grund, warum ich nicht einfach den source-GUI ist, dass ich möchte in der Lage sein, dies zu tun mit einem Programm, kann ich nicht die Quelle/Symbole für.

Wenn es eine einfachere Möglichkeit gibt, um sofort zu arbeiten beginnen, mit der ausführbaren Datei, die ich öffne, lassen Sie es mich bitte wissen. (z.B. Öffnen eines .exe-Olly sofort zeigt mir die Montage .exe-Datei, die auf der Suche nach referenzierten strings gibt mir Ergebnisse aus diesem Modul, etc. WinDBG scheint zu beginnen me off in ntdll.dll,, das ist in der Regel nicht nützlich für mich.)

0:000> lm
start             end                 module name
00000000`00130000 00000000`0014b000   Win32FileOpen C (private pdb symbols)  C:\cfinley\code\Win32FileOpen\Debug\Win32FileOpen.pdb
00000000`73bd0000 00000000`73c2c000   wow64win   (deferred)            
00000000`73c30000 00000000`73c6f000   wow64      (deferred)            
00000000`74fe0000 00000000`74fe8000   wow64cpu   (deferred)            
00000000`77750000 00000000`778f9000   ntdll      (pdb symbols)          c:\symbols\mssymbols\ntdll.pdb\15EB43E23B12409C84E3CC7635BAF5A32\ntdll.pdb
00000000`77930000 00000000`77ab0000   ntdll32    (deferred)            
0:000> bu 00000000`00130000
0:000> bl
 0 e x86 00000000`001413a0     0001 (0001)  0:**** Win32FileOpen!main              <-- One that is generated via GUI
 1 e x86 00000000`00130000     0001 (0001)  0:**** Win32FileOpen!__ImageBase       <-- One I tried to set manually
0:000> g
Unable to insert breakpoint 1 at 00000000`00130000, Win32 error 0n998
    "Invalid access to memory location."
bp1 at 00000000`00130000 failed
WaitForEvent failed
ntdll!LdrpDoDebuggerBreak+0x31:
00000000`777fcb61 eb00            jmp     ntdll!LdrpDoDebuggerBreak+0x33 (00000000`777fcb63)

InformationsquelleAutor Chris Finley | 2012-05-25

Schreibe einen Kommentar