Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 20:04

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C++]Sections in einem PE File auflisten

Discussion on [C++]Sections in einem PE File auflisten within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
[C++]Sections in einem PE File auflisten

vorweg:
das ist ein tut für erfahrene user, und auch kein copy & paste tut
die vorraussetzungen hierfür sind:
grundkenntnisse über den aufbau des PE formats (wobei ich darauf nochmal kurz eingehe)
filemapping (auf bestimmte adressen zugreifen) ODER kompliziertes normales file handling.
etwas methematik wissen

was ihr besitzen solltet:
einen pc
eine gute IDE
windows.h, winnt.h
und eine test.exe

die theorie:
in der theorie ist alles wie immer ganz einfach.
man öffnet die datei, liest die wichtigen header ein (DOS, PE), und dann liest man die section header.
das wars sogar schon mit der theorie o.O

die praxis:
in der praxis ist es in diesem fall genau so einfach wie in der theorie.
als erstes muss die datei via CreateFile geöffnet, via CreateFileMapping gemappt, und mit MapViewOfFile der pointer geholt werden.
zum start der datei steht der MZ (DOS) header. den liest man ganz einfach mit
Code:
PIMAGE_DOS_HEADER dos = (PIMAGE_DOS_HEADER)ptr;
ein. (ptr = MapViewOfFile )
um zu prüfen ob das überhaupt eine "echte" datei ist, muss e_magic im header überprüft werden. (abgleich mit IMAGE_DOS_SIGNATURE)
am offset 0x3C steht ein DWORD mit dem offset des PE headers. (oder einfach nur e_lfanew aus dem dos header)
mit
Code:
PIMAGE_NT_HEADERS nt = (PIMAGE_NT_HEADERS)(ptr+dos->e_lfanew);
kommt man auch gleich an den pe header.
dieser wird ebenfalls überprüft. (nt->Signature==IMAGE_NT_SIGNATURE)
von nun an wird alles ganz einfach: es gibt ein macro, mit dem man den header der ersten section bekommt:
Code:
PIMAGE_SECTION_HEADER pSection = (PIMAGE_SECTION_HEADER)IMAGE_FIRST_SECTION(nt);
sobals man den hat, muss man nurnoch eine schleife starten, die alle sections abarbeitet. in nt->FileHeader.NumberOfSections steht die anzahl der sections.
mit pSection++ kann man direkt auf die nächste section zugreifen
pSection->Name ist ein 8 byte array mit dem namen der section

hoffe mal dass es wenigstens einer von euch versteht, und es auch geholfen hat XD
Tyrar is offline  
Thanks
3 Users
Old 07/22/2010, 10:31   #2
 
BestOfElite's Avatar
 
elite*gold: 33
Join Date: May 2010
Posts: 3,240
Received Thanks: 1,960
Hmm ma gucken nur leider kann ich kein c++ xD
BestOfElite is offline  
Old 07/24/2010, 11:47   #3
 
Jay Niize's Avatar
 
elite*gold: 0
Join Date: Oct 2009
Posts: 4,851
Received Thanks: 3,417
naja.. hab ich zwar nicht verstanden, sieht aber nützlich aus, für die die C++ können

#Added to list
Jay Niize is offline  
Old 08/11/2010, 19:41   #4
 
elite*gold: 0
Join Date: Aug 2010
Posts: 80
Received Thanks: 307
so erfahren muss man dafür nun wirklich auch nicht sein, das tutorial ist ohne kontext komplett sinnlos und anscheinend hast du auch gerade erst angefangen dich mit dem pe-header zu befassen
Mr0x90 is offline  
Old 10/13/2010, 20:28   #5
 
elite*gold: 0
Join Date: Nov 2009
Posts: 343
Received Thanks: 45
Sehr schön erklärt. Aber ich habe eine Frage, wie komme ich den die Infos her, wo ein JMP oder ein NOP in der Datei steht? Ich habe bis jetz erst den Entry Point herausgefunden.

Code:
	IMAGE_DOS_HEADER* DOSHeader = (IMAGE_DOS_HEADER*)myFile;

	IMAGE_NT_HEADERS* NTHeader = (IMAGE_NT_HEADERS*)(myFile + DOSHeader->e_lfanew);

	IMAGE_OPTIONAL_HEADER Header = NTHeader->OptionalHeader;

	DWORD MyEntryPoint = Header.AddressOfEntryPoint;

	DWORD MyImageBase = Header.ImageBase;

	DWORD MyEntry = MyImageBase + MyEntryPoint;

	cout << "Entry Point ist bei: " << hex << MyEntry << endl;
Ich hoffe mir kann jemand weiterhelfen.
yihaaa is offline  
Old 10/14/2010, 10:43   #6
 
mydoom's Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
Quote:
Originally Posted by yihaaa View Post
[...] wo ein JMP oder ein NOP in der Datei steht?
NOP (No Operation) - 0x90
JMP (Jump) - {0xE9 || 0xEB || 0xFF}
mydoom is offline  
Old 10/14/2010, 11:26   #7
 
elite*gold: 0
Join Date: Nov 2009
Posts: 343
Received Thanks: 45
Ja das weiß ich, ich meite wie findet man das heraus, wo welcher befehl steht, wenn man die Datei wenn ich das einlese.
yihaaa is offline  
Old 10/14/2010, 16:12   #8
 
mydoom's Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
Ja du hast die Datei doch binär eingelesen oder nicht. Dann kannste doch auch auf die einzelnen Bytes selbiger zugreifen?!
mydoom is offline  
Old 10/14/2010, 17:34   #9
 
elite*gold: 0
Join Date: Nov 2009
Posts: 343
Received Thanks: 45
Muss man das nicht auch wie mit den Headern machen?
So ist mein Code im Moment.
Code:
	char* Path = "C:\\test.exe";
	LARGE_INTEGER largefilesize;

	HANDLE hwnd = CreateFile(Path, FILE_SHARE_READ, NULL, NULL, OPEN_EXISTING, NULL, NULL);

	GetFileSizeEx(hwnd, &largefilesize);

	DWORD dwSize;
	dwSize = (DWORD)largefilesize.QuadPart;

	BYTE* myFile = new BYTE[ dwSize ];

	DWORD dwBytesRead;
	if(ReadFile(hwnd, (LPVOID)myFile, dwSize, &dwBytesRead, NULL) == TRUE)
	{
		cout << "Datei konnte gelesen werden!" << endl;
	}
	else
	{
		cout << "Fehler beim lesen der Datei!" << endl;
		return -1;
	}

	IMAGE_DOS_HEADER* DOSHeader = (IMAGE_DOS_HEADER*)myFile;

	IMAGE_NT_HEADERS* NTHeader = (IMAGE_NT_HEADERS*)(myFile + DOSHeader->e_lfanew);

	IMAGE_OPTIONAL_HEADER Header = NTHeader->OptionalHeader;

	DWORD MyEntryPoint = Header.AddressOfEntryPoint;

	DWORD MyImageBase = Header.ImageBase;

	DWORD MyEntry = MyImageBase + MyEntryPoint;

	cout << "Entry Point ist bei: " << hex << MyEntry << endl;

	IMAGE_SECTION_HEADER* sectionTable = (IMAGE_SECTION_HEADER*)((BYTE*)&NTHeader->OptionalHeader + NTHeader->FileHeader.SizeOfOptionalHeader);


	/*for (int i = 0; i < 10; i++)
	{
		cout << &sectionTable[ i ] << endl;
	}*/

	return 0;
Aber wie komme ich den jetz an den Code?
yihaaa is offline  
Reply


Similar Threads Similar Threads
Auflisten was gleich!
08/27/2010 - elite*gold Trading - 7 Replies
Also ich gebe euch 25 E*gold wenn ihr: 68 Codes für mich Prüft! Also indem ihr: z.b. bei diesen beiden codes guckt was sich am meisten ähnelt 257B2AF0-2878-455E-9A96-73FD99F50CD0 815C0705-05A2-40C6-B36B-10A36D41DCF2 das z.b. in der 7. zeile fast nur ein F oder eine 3 vorkommt!
Bitte hier gute WII Spiele auflisten.
08/07/2010 - Consoles - 12 Replies
Hallo Leute, ich habe vor ein paar Tagen meine WII gehackt. Und ich habe jetzt dir möglichkeit Spiele zu laden. Nur ich wess nicht welche, deshalb frage ich ob ihr welche gute Wii Spiele auflisten könnt. Für jede Anntwort gibt es en THX. MFG 4Story Hackerzz
Wer kann mir alle /ski befehle auflisten?
06/07/2010 - Metin2 Private Server - 37 Replies
überschrift sagt alles..
suche programm zum gegenstände auflisten
05/06/2010 - Diablo 2 - 1 Replies
huhu habe das prob das ich keine lust habe von 8 vollen mules die items selber auf zu schreiben suche ein programm was das für mich erledigt!! liebe grüße und vielen dank im vorraus ein dl link oder ein direkter hinweis wäre echt cool :-) funktionierend auf 1.13
Könntet ihr mal alle 4Story bots die ihr kennt auflisten ???
01/10/2010 - 4Story - 2 Replies
Hi ich brauche wenn der Hack schon nicht geht unbedingt einen guten lvl bot oder so also wollte ich mal einen Thread auf machen zum Thema Bots . Also ladet eure bots hoch und wer will bekommt auch ein THX :D PLS :handsdown::handsdown::handsdown::handsdown::hands down::handsdown::handsdown::handsdown::handsdown:: handsdown::handsdown:



All times are GMT +1. The time now is 20:04.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.