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.
Czymsymbole?
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órezaprojektowanedoodnajdywaniawczasie
wykonania.
UwagaPlikiwykonywalneładowaneprzezprocesytrybuużytkownikawogólności
alboplikamiEXE,któreumożliwiająrozpoczęcienowegoprocesu,alboplikamiDLL,któ-
reładowanedojużistniejącychprocesów.Wartozauważyć,żeplikitypówEXEiDLL
niemusząkoniecznieużywaćtychwłaśniedwóchrozszerzeńnazw.Plikizrozszerzeniami
COMlubSCRwrzeczywistościplikamiEXE,podczasgdyACM,AX,CPL,DRVczyOCX
przykładamialternatywnychrozszerzeńnazwdlaDLL-i.Ponadtoprogramyinstalacyjne
częstorozpakowująiuruchamiająplikiEXEzrozszerzeniemTMP
.
Przytworzeniuplikówwykonywalnychkompilatoryilinkerymogąrównieżtworzyć
odpowiadająceimplikisymboli(zdomyślnymrozszerzeniemPDB).Plikisymboli
przechowująrozmaitedane,którenieniezbę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ędziaSysinternalswstanieużyćtylkonatywnych(niezarządzanych)
plikówsymboliprzyanaliziestosówwywołań.Niewstanieraportowaćnazwfunkcji
wskompilowanychprzyużyciuJITasemblacjach.NET
.