Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Stosywywołańisymbole
39
msvcrt!malloc+0x2a
crypt32!CryptEncryptMessage+0x9f
HelperFunctions!EncryptThisText+0x43
MyApp.exe+0x25d8
Jakmożnazauważyć,stoswywołańnietylkopokazuje,jakifragmentkodujestwyko-
nywany
,alerównieżwyjaśnia,jakprogramdotarłdotegopunktu.
Czymsąsymbole?
Wtrakciesprawdzaniaadresustartowegowątkulubadresupowrotnegonastosie
wywołańdebugermożełatwoustalić,dojakiegomodułuonnależy
,analizująclistę
załadowanychmodułówiichzakresyadresów.Jednakgdykompilatorprzekształca
kodźródłowyprogramistynainstrukcjekomputera,niezachowujeoryginalnychnazw
funkcji.JedynymwyjątkiemjestDLL,zawierającytabelęeksportu,którawymienia
nazwyorazoffsetyfunkcji,któredanabibliotekaudostępniainnymmodułom.Tym
niemniej,tabelaeksportuniewyliczanazwwewnętrznychfunkcjibibliotekianilisty
nazwpunktówwejściowychCOM,któresązaprojektowanedoodnajdywaniawczasie
wykonania.
UwagaPlikiwykonywalneładowaneprzezprocesytrybuużytkownikasąwogólności
alboplikamiEXE,któreumożliwiająrozpoczęcienowegoprocesu,alboplikamiDLL,któ-
resąładowanedojużistniejącychprocesów.Wartozauważyć,żeplikitypówEXEiDLL
niemusząkoniecznieużywaćtychwłaśniedwóchrozszerzeńnazw.Plikizrozszerzeniami
COMlubSCRsąwrzeczywistościplikamiEXE,podczasgdyACM,AX,CPL,DRVczyOCX
sąprzykładamialternatywnychrozszerzeńnazwdlaDLL-i.Ponadtoprogramyinstalacyjne
częstorozpakowująiuruchamiająplikiEXEzrozszerzeniemTMP
.
Przytworzeniuplikówwykonywalnychkompilatoryilinkerymogąrównieżtworzyć
odpowiadająceimplikisymboli(zdomyślnymrozszerzeniemPDB).Plikisymboli
przechowująrozmaitedane,któreniesąniezbędnedouruchamianiakoduwykony-
walnego,alemogąbyćprzydatnepodczasdebugowania,wtymnazwyioffsetypunk-
tówwejściowychfunkcjizawartychwmodule.Dziękityminformacjomdebugermoże
dlaokreślonegoadresuwpamięciłatwozidentyfikowaćfunkcjęonajbliższymadre-
siepoprzedzającym.Bezsymbolidebugerograniczonyjestdowykorzystaniafunkcji
wyeksportowanych,oileistnieją,któreniemusząmiećwogólepowiązaniazaktualnie
wykonywanymkodem.Wogólności,imwiększyjestoffsetadresupowrotnego,tym
mniejszejestprawdopodobieństwo,żezgłaszananazwafunkcjijestwłaściwa.
UwagaNarzędziaSysinternalssąwstanieużyćtylkonatywnych(niezarządzanych)
plikówsymboliprzyanaliziestosówwywołań.Niesąwstanieraportowaćnazwfunkcji
wskompilowanychprzyużyciuJITasemblacjach.NET
.