Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 16:31

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

Advertisement



[C++]Problem bei anzeigen von Calls

Discussion on [C++]Problem bei anzeigen von Calls within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Lazeboy's Avatar
 
elite*gold: 0
Join Date: Jun 2008
Posts: 451
Received Thanks: 410
[C++]Problem bei anzeigen von Calls

Hey,
ich versuche gerade alle calls eines programmes aufzulisten. Ich lese halt die komplette ".text" section ein und überprüfe dann byte für byte ob es ein 0xE8 ist, aber da ist auch mein Problem. Es werden mir halt alle Calls ausgegeben(vermute ich), aber auch die Adressen wo es keine Calls gibt sonder einfach nur 0xE8 steht. Kann ich irgendwie überprüfen ob das nun wirklich ein Call ist, weil die selben Probleme werden ja auch bei anderen Befehlen auftreten wenn ich z.b alle mov auslesen möchte.

Code:
ofile.open("C:/BLAA.txt");
	GetPeInfo(myProcessInfos.szExeName,&myPeInfo);
	unsigned char *lpCode = (unsigned char*)malloc(myPeInfo.dwImageSize);
	ReadProcessMemory(hProcess,(LPVOID)(myPeInfo.dwImageBase + myPeInfo.dwBaseOfCode),lpCode,myPeInfo.dwEndOfCode,0);
	for(int i = 0; i <myPeInfo.dwEndOfCode;i++)
	{
		if(lpCode[i] == 0xE8)
		{
			DWORD dwCallAdress;
			ReadProcessMemory(hProcess,(LPVOID)(myPeInfo.dwImageBase + myPeInfo.dwBaseOfCode + i + 1),&dwCallAdress,4,0);
			ofile << "Position: " << hex << myPeInfo.dwImageBase + myPeInfo.dwBaseOfCode + i << "    " << "Call zu: " <<myPeInfo.dwImageBase + myPeInfo.dwBaseOfCode+i+5+dwCallAdress << endl;
		}

	}
Lazeboy is offline  
Old 08/22/2011, 18:07   #2


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Ist klar, wenn du jedes Byte auf E8 überprüfst, wird auch jedes E8 Byte ausgegeben.

Brauchst eine Disassembling Library dafür, damit du die einzelnen Opcodes voneinander trennen und dann auf Calls überprüfen kannst.

E8 ist btw nicht der einzige Call.

Und welchen Sinn hat das bitte? Oo
MrSm!th is offline  
Old 08/22/2011, 18:37   #3
 
elite*gold: 0
Join Date: Nov 2009
Posts: 343
Received Thanks: 45
Ich hoffe du weißt das E8 auch ein teil einer Adresse etc sein kann.
Wie Smith schon sagt du brauchst die Library.
yihaaa is offline  
Old 08/22/2011, 19:47   #4
 
Lazeboy's Avatar
 
elite*gold: 0
Join Date: Jun 2008
Posts: 451
Received Thanks: 410
1. ja ist mir schon kla die Frage ging eher in die Richtung wie ich das unterscheiden kann und mit 0xFF kann auch noch gecallt werden...
2. im endeffekt möchte ich den nen pointer scaner bauen wie cheat engine es macht und um ein bisschen an dese art des scanen mich ran zu tasten dachte ich ich versuche mal was einfaches. Wenn ihr mir tipps für den pointer scaner geben könnt wäre das cool xD ich werde mich mal nach einer diassembling libary umsehen. Danke schonmal
Könnt ihr mir ne Libary empfehlen `?
Lazeboy is offline  
Old 08/22/2011, 20:37   #5
 
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
distorm
Bot_interesierter is offline  
Old 08/22/2011, 20:59   #6
 
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
Hier haste z.b. eine Disassembler library .
Akorn is offline  
Thanks
1 User
Old 08/22/2011, 21:10   #7


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Der Pointer Scanner muss aber keine Calls disassemblen o.ô

Wie gesagt, du brauchst eine Library zum Disassemblieren, wenn du Calls von gewöhnlich E8 Bytes unterscheiden willst.

Zb. BeeEngine (oder war es Bea? :O) oder die Library von OllyDbg, die steht auch open-source zur Verfügung.
Dann gehst du eben jeden Opcode durch; aber eben nur jeden Opcode, nicht jedes Byte.
MrSm!th is offline  
Old 08/22/2011, 22:40   #8
 
Lazeboy's Avatar
 
elite*gold: 0
Join Date: Jun 2008
Posts: 451
Received Thanks: 410
vielen dank schonmal nen schöner anhaltspunkt

EDIT:
Ich kann das machen wie ich will ob ich ich das aus dem file lese oder den memory einlese es kackt immer an der gleiche stelle ab, weil ein paar bytes vorher fehler gemacht werden und dann das ganze UNKOWN_OPCODES ergibt.....

Code:
int _tmain(int argc, _TCHAR* argv[])
{
	MYPROCESSINFORMATION myProcessInfos;
	MYPEINFOS myPeInfo;
	HANDLE hProcess = GetProcHandle("cheatengine-i386.exe",&myProcessInfos);
	GetPeInfo(myProcessInfos.szExeName,&myPeInfo);
	unsigned char *lpCode = (unsigned char*)malloc(myPeInfo.dwEndOfCode);
	ReadProcessMemory(hProcess,(LPVOID)(myPeInfo.dwImageBase + myPeInfo.dwBaseOfCode),lpCode,myPeInfo.dwEndOfCode,0);	

	DISASM MyDisasm;
	int iLen = 0;
	memset(&MyDisasm,0,sizeof(DISASM));

	MyDisasm.EIP = (int)lpCode;
	MyDisasm.VirtualAddr = myPeInfo.dwImageBase + myPeInfo.dwBaseOfCode;
	MyDisasm.Archi = 0;

	int Error = 0;
	DWORD dwEndOfCode = (DWORD)(lpCode + myPeInfo.dwEndOfCode);
	cout << hex << dwEndOfCode << endl;
	cin.get();


	while(!Error)
	{

		MyDisasm.SecurityBlock = dwEndOfCode - MyDisasm.EIP;
		iLen = Disasm(&MyDisasm);
		if(iLen == OUT_OF_BLOCK || iLen == UNKNOWN_OPCODE)
		{
			(void) printf("Fehler! \n");
			Error = 1;
		}
		else
		{

				cout  << hex <<  MyDisasm.VirtualAddr << "      " << MyDisasm.CompleteInstr << endl;
				MyDisasm.EIP += iLen;
				MyDisasm.VirtualAddr+= iLen;
		
				if (MyDisasm.EIP >= (int)dwEndOfCode) 
				{
					(void) printf("End of buffer reached ! \n");
					Error = 1;
				}
			
		}

	}
	cin.get();
	return 0;
}
Lazeboy is offline  
Reply


Similar Threads Similar Threads
Chat-Anzeigen Problem
09/18/2010 - Metin2 Private Server - 3 Replies
habe ein Problem mit der Chat-Anzeige... wenn ich z.B. etwas schreibe müsste eig 6-8sek dass geschriebene über dem Kopf sein. In meinem Fall aber nicht bei mir bleibt es höchstens 2sek und da wollt ich jetzt fragen ob ihr mir sagen könnt wie ich dass ändern kann(bekommt ein thx):D
Problem Mit Inventar anzeigen Bei V15
06/28/2010 - Flyff Private Server - 4 Replies
Hallo Liebe Leute Ein Kumpel Von Mir Sieht Weder Das Inventar Fenster Weder Noch Den Actions Slot weis einer wie ich das beheben kann weil alle anderen sehen action slot und inventar aber nur der 1 net why ??? ich freue mich auch eure antworten lg Capitain Winters
How to find calls
12/16/2009 - Dekaron - 8 Replies
I know how to find things using CE that have a number value, like skills and hp and shield, etc. But how do you find things that don't have number values, like animations or agro and vac values?



All times are GMT +2. The time now is 16:31.


Powered by vBulletin®
Copyright ©2000 - 2024, 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 ©2024 elitepvpers All Rights Reserved.