Réglage manuel des points d'arrêt dans WinDBG

Je suis en train d'examiner l'assemblée pour un exécutable à l'aide de WinDBG, mais je vais avoir du mal à arriver à elle. Je veux mettre un point d'arrêt à la première instruction dans mon programme, mais lorsque j'essaie de le faire manuellement (à l'aide de l'adresse du module), WinDBG me dit qu'il est "impossible d'insérer un point d'arrêt" à cet endroit en raison d'un "accès non Valide à l'emplacement de la mémoire."

J'ai remarqué que lorsque je créer un point d'arrêt à la source de code interface utilisateur, l'adresse n'est pas la même que la première partie de mon module (Dans mon exemple: "Win32FileOpen", un simple programme que j'ai écrit.) Est-il un en-tête de quelque sorte que nécessite l'ajout d'un décalage à l'adresse de mon module?

Dans un autre question, j'ai vu la suggestion: "je voudrais tenter de calculer le point d'arrêt adresse: Module de départ + code de début + code offset", mais n'était pas certain où obtenir ces valeurs. Quelqu'un peut-il donner des précisions sur ce point?

La raison pour laquelle je ne l'utilise pas seulement la source de l'interface graphique, c'est que je veux être en mesure de le faire avec un programme que je ne peut pas avoir la source/symboles pour.

Si il y a un moyen plus facile de commencer à travailler immédiatement avec l'exécutable je l'ai ouvert, s'il vous plaît laissez-moi savoir. (par exemple, l'Ouverture d'un .exe Olly immédiatement me montre de l'assemblée pour que .exe, recherche pour référencées chaînes me donne les résultats de ce module, etc. WinDBG semble commencer à m'en ntdll.dll qui n'est généralement pas utile pour moi.)

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.pdbEB43E23B12409C84E3CC7635BAF5A32\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