windows - Break på Win32-API for at inspicere processens adfærd

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg fejler 'smartgit til windows'.
Jeg vil gerne vide, hvordan det påberåber 'git' (kommando det overgår til git). Jeg starter VS og vedhæfter processen med smartgit.


Jeg formoder, at det kommunikerer med git ved windows pipe og andre API'er som ReadFile og WriteFile og så videre, så sæt brydepunkter på disse funktioner.


Når nogle indstillinger er indstillet, afkrydsker jeg 'Just My Code' og sletter alle ekskluder moduler I symbolindstillinger downloader jeg symboler. og jeg kan sikre, at 'Kernel32.pdb' blev indlæst.
'smartgit.exe' (Win32): Loaded 'Q:Program Files (x86)SmartGitinsmartgit.exe'. Module was built without symbols. 'smartgit.exe' (Win32): Loaded 'C:WindowsSysWOW64 tdll.dll'. Symbols loaded. 'smartgit.exe' (Win32): Loaded 'C:WindowsSysWOW64kernel32.dll'. Symbols loaded. 'smartgit.exe' (Win32): Loaded 'C:WindowsSysWOW64KernelBase.dll'. Symbols loaded. 'smartgit.exe' (Win32): Loaded 'C:WindowsSysWOW64user32.dll'. Symbols loaded.


\_ReadFile@20: 765EF0C0 8B FF mov edi,edi
765EF0C2 55 push ebp
765EF0C3 8B EC mov ebp,esp
765EF0C5 6A FE push 0FFFFFFFEh
765EF0C7 68 C0 52 68 76 push 766852C0h

men stadig fik jeg disasm kodevisningen, da bps blev udløst. Jeg er sikker på, at jeg har markeret 'Show Source Code' mulighed.


HVORFOR? og hvordan man ser C-kode på ReadFile, vil jeg vide, hvad det (smartgit) læser og skriver. Så jeg inspicerer gennem lpBuffer.

Bedste reference


pdb filer uden kildekode. den kan indeholde oplysninger hvordan kortlægge RVA adresse til kildefil/linje. men disse oplysninger er kun nyttige, hvis du har disse kildefiler. fordi du ikke har nogen kildefiler til windows system dlls (ntdll, kernel32, kernelbase ..) du og kan ikke se det c/c ++ kode i debugger. og sædvanlige oplysninger om kildefiler/linjer fjernes fra system pdbs - fordi kildefiler alligevel ikke findes til download. men med pdb filer kan du se interne funktioner og symboler navne (ikke kun eksporterede symboler) - allerede stor fordel, som meget hjælper med debugging.


i tilfælde ReadFile - for hvad du har brug for kildekoden her? når du kan se lpBuffer adresse i [esp + 8] ved første instruktion (765EF0C0 i dit dump) og derefter i [ebp+0xc]?