Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
0oFreako0
Anmeldungsdatum: 17.12.2011 Beiträge: 114
|
Verfasst am: 20.01.2012, 18:33 Titel: PE-File auslesen? |
|
|
Hi ich wollte mal ein bischen mich ins PE-Format einarbeiten und einen kleinen PE-Viewer schreiben.
Meine Frage ist nun brauche ich ein bestimmtes Typen Konstrukt?
Wegen den einzelnen Aufbauten der PE Datei?
habe jetzt mal so angefangen:
Code: |
Dim p_image_section_header As IMAGE_SECTION_HEADER
Dim p_image_nt_header As IMAGE_NT_HEADERS
Dim pimage_dos_header As IMAGE_DOS_HEADER
Dim f As Integer = FreeFile
Dim dbuff As Byte Ptr
Open "test.exe" For Binary As #f
dbuff = Allocate(Lof(f))
Get #f, , *dbuff,Lof(f)
Close #f
|
Wie komm ich nun an die einzelnen Infos heran?
den dbuff_pointer per header konstrukte ansteuern?
und dann auslesen? |
|
Nach oben |
|
 |
Sannaj
Anmeldungsdatum: 19.12.2010 Beiträge: 35
|
|
Nach oben |
|
 |
0oFreako0
Anmeldungsdatum: 17.12.2011 Beiträge: 114
|
Verfasst am: 26.01.2012, 16:03 Titel: |
|
|
So ich bin jetzt schon ein bischen weiter und bräuchte erneut einen kurzen denkanstoss wie kann ich aus einer Dll die Anzahl der Funktionen auslesen?
So weit bin ich schonmal:
Code: |
#Define WIN_INCLUDEALL
#Include "windows.bi"
Dim dll As String = "User32.dll"
Dim pdll_base As HMODULE
Dim dHead As IMAGE_DOS_HEADER Ptr
Dim ntHead As IMAGE_NT_HEADERS Ptr
Dim eData As IMAGE_EXPORT_DIRECTORY Ptr
Dim lExportOffset AS Long
Dim lExportLen AS Long
pdll_base = GetModuleHandle(dll)
If pdll_base = NULL Then pdll_base = LoadLibrary(dll)
dHead = Cast (IMAGE_DOS_HEADER Ptr, pdll_base)
ntHead = Cast (IMAGE_NT_HEADERS Ptr, @dHead + dHead->e_lfanew)
lExportOffset = ntHead->OptionalHeader.DataDirectory(0).VirtualAddress
lExportLen = ntHead->OptionalHeader.DataDirectory(0).Size
eData = Cast(IMAGE_EXPORT_DIRECTORY Ptr,pdll_base + lExportOffset)
Print hex( @eData->NumberOfFunctions) <-Wie geht es hier weiter?
Sleep
End
|
|
|
Nach oben |
|
 |
|