Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 07:10

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

Advertisement



MemoryScanner

Discussion on MemoryScanner within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jul 2008
Posts: 10
Received Thanks: 0
MemoryScanner

Huhu,

Ich hab ne kleine frage zu ein paar Mamorscannern wie T-Search, Cheat-Engine oder ArtMoney.

Wenn ich mit diesen Programmen den Ram eines bestimmten Programmes druchscanne geht das scannen von int werten wesentlich schneller als das von float werten .

Des weiteren sind diese Scanner extrem schnell und liefern Ergebnisse binnen sekunden.

Ich habe mir schon meinen eigenen MemoryScanner geschrieben und bediene mich dabei den WINAPI funktion read/writeprocessmemory , ich habe schon mehrere multithreads am laufen und laste auch bereits den gesamten prozessor damit aus komme aber nicht annähernd an die geschwindigkeit einen solchen oben beschriebenen tools ran...

Woran liegt das ??? verwenden diese ein bestimmte technik um den ram eine programms schneller zu durchsuchen das sie zumal das system kaum belasten oder steckt das etwas ganz anderes dahinter ...
geograman is offline  
Old 08/02/2009, 01:06   #2
 
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
Durchsucht den dein memory searcher den auch nur den teil wo die variablen abgelegt werden oder lässt du den kompletten speicherbereich des programms durchsuchen?
Akorn is offline  
Old 08/02/2009, 01:52   #3
 
elite*gold: 115
Join Date: Oct 2007
Posts: 9,390
Received Thanks: 12,345
Wahrscheinlich rufst du ReadProcessMemory() in einer Schleife auf. Du solltest ReadProcessMemory() jedoch nur einmal aufrufen und damit dann den gesamten Teil des Zielprozesses, den du nach Werten durchsuchen willst, in den Buffer laden.
ms​ is offline  
Old 08/02/2009, 13:19   #4
 
elite*gold: 0
Join Date: Jul 2008
Posts: 10
Received Thanks: 0
Ja richtig ich gehe alle variablen mit einer schleife durch , das sieht dann so aus ->


unsigned long int GU = 0x000000000;
unsigned long int o=0;

for(int z=0;z<0x90000000;z++){

GU += z;

ReadProcessMemory(hGame, (LPVOID)GU, &o, 8, 0);
printf("Objektinhalt: Adresse %p, Inhalt %d\n",GU,o);

}

Was meinst du mit nur einmal aufrufen ? ich habe mir einige tuts durchgelesen und da wurde es jedesmal so angewendet ...
geograman is offline  
Old 08/02/2009, 13:52   #5
 
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
Quote:
Was meinst du mit nur einmal aufrufen ? ich habe mir einige tuts durchgelesen und da wurde es jedesmal so angewendet ...
Du liest bei jedem schleifendurchlauf immer nur 8bytes aus dem prozessaus. Lies mit nur einem ReadProcessMemory den gesamten aus.
Akorn is offline  
Old 08/02/2009, 16:08   #6


 
Ende!'s Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 6,378
Received Thanks: 7,996
Ich bin mir nicht ganz sicher, aber ich glaube, dass Cheat Engine schon bei der Suche DLL- oder Code-Injection benutzt und eigenen Code injiziert welcher dann aus dem Zielprozess direkt den Memory dumpt. Bin mir aber nicht ganz sicher ^^
Ende! is offline  
Old 08/02/2009, 17:16   #7
 
elite*gold: 0
Join Date: Jul 2008
Posts: 10
Received Thanks: 0
Also ich hab jetzt mal ne ganze Menge rumprobiert und am Ende kahm das hier raus ...

Mein Versuch war es, einen bereich mit malloc dynamisch zu erzueugen der groß genug ist um darin die 50 Byte der read funktion zu speichern und dann in einer file zu sichern.

Leider stimmt da irgendwas ganz und garnicht :/

Code:

int *erg;

erg = (int *)malloc(sizeof(int)*100);

ReadProcessMemory(hGame, (LPVOID)0x00000000, erg, 50, 0);

pFile = fopen ("MB.txt","a");

for(int z2=0;z2<100;z2++){

if(erg[z2]!=0){
fprintf (pFile, "%d\n",erg[z2]);
}
}


fclose (pFile);
geograman is offline  
Old 08/02/2009, 21:14   #8
 
elite*gold: 20
Join Date: Dec 2006
Posts: 839
Received Thanks: 91
Vielleicht solltest Du dein (hoffentlich vorhandenes) Programmiergrundkenntnisse-Buch nochmal in die Hand nehmen und dir dazu die Dokumentation der WinAPI anschauen...
Assass1n is offline  
Old 08/02/2009, 21:31   #9
 
link's Avatar
 
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
Du solltest erst ab 400000h anfangen zu lesen (wobei es auch passieren kann, dass kurz davor Speicher alloziiert wird), da der Bereich darunter von Win32 benötigt wird und dir somit keine relevanten Informationen liefert.
Außerdem hast du auf [0x0] überhaupt keine Zugriffsrechte.

Code:
int WriteBytesToFile(HANDLE hProcess, DWORD dwStartAddress, DWORD dwSize, BYTE *byFileName, DWORD dwOutput)
{
	FILE		*fp = fopen(byFileName, "wb");
	DWORD		i, size = dwSize * sizeof(int);
	PDWORD		*bytes = (PDWORD)GlobalAlloc(GPTR, size);

	ReadProcessMemory(hProcess, (LPVOID)dwStartAddress, bytes, size, NULL);

	for (i = 0; i < dwSize; ++i)
		fprintf(fp, (dwOutput) ? (dwOutput == 2) ? "%X\n" : "%u\n" : "%d\n", bytes[i]);

	fclose(fp);
	GlobalFree((HGLOBAL)bytes);
	return 0;
}

WriteBytesToFile(GetCurrentProcess(), 0x400000, 100, "C:\\proc.txt", 2);
link is offline  
Old 08/15/2009, 00:59   #10
 
elite*gold: 0
Join Date: Mar 2009
Posts: 62
Received Thanks: 8
du sagst, dass du auch writememory benutzt. kommt zufaellig in deiner schleife ein virtualprotect vor? wenn du nur lesen willst, lass den befehl weg.
nimrod316 is offline  
Old 08/15/2009, 20:50   #11
 
elite*gold: 0
Join Date: May 2008
Posts: 489
Received Thanks: 210
CheatEngine ist OpenSource, los meine fleißigen Bienchen, fliegt!
schlurmann is offline  
Reply




All times are GMT +1. The time now is 07:12.


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.