windows - Virtual Address tildelt en importeret funktion

Indlæg af Hanne Mølgaard Plasc

Problem



Overvej en instruktion som CALL DWORD PTR 44244100, der importerer og bruger en DLL-funktion i et samlingsprogram. Vi ved, at adressen, der bruges af instruktionen, er en relativ virtuel adresse (RVA).


1.So hvorfor når jeg en anden VA-værdi i Thunk-værdifeltet i LordPE-softwaren, når jeg sporer det pågældende stykke kode ved det?


2.Hvis DLL'er som User32 eller Kernel32 altid er indlæst i en bestemt VA eller ikke nødvendigvis?
Hvis ikke, hvordan genkender Loader hvilken DLL den ovenfor nævnte adresse tilhører? ved at søge i Name Table ?!
Jeg mener, at denne adresse er invariant, så hvis den indlæste dlls placering er fast, skal en anden VA først tildeles denne adresse.


Tak, alle sammen.

Bedste reference


Jeg forstår ikke det første spørgsmål. Hvis du mener thunk som for funktionen, importerer de ikke RVA'er, det er flade adresser. Også adressen, der bruges ved instruktion, hvis kodeadressering altid er i forhold til den aktuelle instruktionspegerværdi. RVA'er bruges kun af loader stort set (og fungerer som LoadLibrary, GetProcAddr og disse). Jeg tror. x86 Processor kender ikke begrebet RVA Det er sikkert. Måske vidste du det, det var ikke meget klart for mig, hvis det var tilfældet, undskyld foredrag.
Spørgsmål to! Ingen! Det er ikke rettet! Loaderen går faktisk gennem importbordet af din exe og udfylder pladsholdere. Fastbelastningsadresser er ikke mere noget siden Windows XP SP3. Håber dette hjælper. Hvis ikke, hjalp det mig, da jeg var lille kartoffel https://msdn.microsoft.com/en-us/library/ms809762.aspx[1]