Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 06:00

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

Advertisement



C++ Pages

Discussion on C++ Pages within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jan 2010
Posts: 140
Received Thanks: 6
C++ Pages

Hallo,
ich habe aus dem Internet einen Code für ein Patternscan:
Functions.h
Code:
#include <iostream>
#include <Windows.h>
#include <tlhelp32.h>
#include <Psapi.h>


//Print our pattern scan results if necessary
void MsgBoxAddy(DWORD addy)
{
	char szBuffer[1024];
	sprintf(szBuffer, "Addy: %02x", addy);
	MessageBox(NULL, szBuffer, "Title", MB_OK);

}


//Get all module related info, this will include the base DLL. 
//and the size of the module
MODULEINFO GetModuleInfo( char *szModule )
{
	MODULEINFO modinfo = {0};
	HMODULE hModule = GetModuleHandle(szModule);
	if(hModule == 0) 
		return modinfo;
	GetModuleInformation(GetCurrentProcess(), hModule, &modinfo, sizeof(MODULEINFO));
	return modinfo;
}


void WriteToMemory(uintptr_t addressToWrite, char* valueToWrite, int byteNum)
{
	//used to change our file access type, stores the old
	//access type and restores it after memory is written
	unsigned long OldProtection;
	//give that address read and write permissions and store the old permissions at oldProtection
	VirtualProtect((LPVOID)(addressToWrite), byteNum, PAGE_EXECUTE_READWRITE, &OldProtection);

	//write the memory into the program and overwrite previous value
	memcpy( (LPVOID)addressToWrite, valueToWrite, byteNum);

	//reset the permissions of the address back to oldProtection after writting memory
	VirtualProtect((LPVOID)(addressToWrite), byteNum, OldProtection, NULL);
}


DWORD FindPattern(char *module, char *pattern, char *mask)
{
	//Get all module related information
	MODULEINFO mInfo = GetModuleInfo(module);

	//Assign our base and module size
	//Having the values right is ESSENTIAL, this makes sure
	//that we don't scan unwanted memory and leading our game to crash
	DWORD base = (DWORD)mInfo.lpBaseOfDll;
	DWORD size =  (DWORD)mInfo.SizeOfImage;

	//Get length for our mask, this will allow us to loop through our array
	DWORD patternLength = (DWORD)strlen(mask);

	for(DWORD i = 0; i < size - patternLength; i++)
	{
		bool found = true;
		for(DWORD j = 0; j < patternLength; j++)
		{
			//if we have a ? in our mask then we have true by default, 
			//or if the bytes match then we keep searching until finding it or not
			found &= mask[j] == '?' || pattern[j] == *(char*)(base + i + j);
		}

		//found = true, our entire pattern was found
		//return the memory addy so we can write to it
		if(found) 
		{
			return base + i;
		}
	}

	return NULL;
}
source.cpp
Code:
#include <Windows.h>
#include <iostream>  
#include "Functions.h"

using namespace std;
char AmmoOpCode[] = "\x90\x90\x90\x90\x90\x90\x90\x90\x90";


void InitiateHooks()
{

	///*-----UNLIMITED AMMO--------*/
	//SCAN FOR THIS IN CHEAT ENGINE SEARCH
	DWORD ammoAddy = FindPattern("plugin-container.exe", 
		"\xD9\x58\x58\xD9\x45\xE4\xD9\x58\x50", "xxxxxxxx");
	//ammoAddy+=8;

	MsgBoxAddy(ammoAddy);
	WriteToMemory(ammoAddy, AmmoOpCode, 9);
	
}
#pragma endregion




BOOL WINAPI DllMain(
    HINSTANCE hinstDLL,  // handle to DLL module
    DWORD fdwReason,     // reason for calling function
    LPVOID lpReserved)     // reserved
{
    // Perform actions based on the reason for calling.
    switch(fdwReason)
    {
        case DLL_PROCESS_ATTACH:
            // Initialize once for each new process.
            // Return FALSE to fail DLL load.
            //MessageBoxA(NULL, "Attached successfuly", "", 0);
			InitiateHooks();
            break;
    }
    // Successful DLL_PROCESS_ATTACH.
    return TRUE;
}
so diesen code habe ich auch verstanden.
Jetzt ist es so, dass das Pattern das gefunden werden soll, nicht in einem Modul vorhanden ist.
Ein bekannter gab mir als Tipp, Pages zu durchsuchen mit VirtualQuery(Ex)
Kann mir einer erklären wie ich das auf den Code anwenden kann?

Danke schonmal
Mit freundlichen Grüßen
Moritz
Moritz99 is offline  
Old 12/15/2013, 18:29   #2
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
speicher ist in windows in pages unterteilt, eine page hat eigenschaften wie z.b. ob sie readable, writable oder executable ist, mit virtualquery kannst du abfragen, was für einen status eine page hat.
einfach über den gesamten adressbereich pageweise iterieren, mit virtualquery abfragen ob die page lesbar (executable wenn du code suchst) ist, wenn ja, die page nach deinem pattern durchsuchen.
implementieren darfste das selber, das wird dir hier niemand machen (was du wahrscheinlich nicht schaffen wirst, wenn das nach deinem namen dein geburtsjahr ist und du dir das hier net zusammengooglen konntest...).
Dr. Coxxy is offline  
Thanks
1 User
Old 12/15/2013, 19:13   #3
 
elite*gold: 0
Join Date: Jan 2010
Posts: 140
Received Thanks: 6
also.
Nein ich habe ihn mir nicht zusammengegoogelt habe ihn von einer Reihe von Video.
Ich habe ihn außerdem verstanden, weil ich auch ein C++ Buch besitze und fleisig am lernen bin. Außerdem finde ich es nicht ganz fair, nur wegen meinem Alter zu sagen, dass ich das nicht schaffen kann.
Achja, ich verstehe es leider echt nicht, aber nur, weil ich mit Pages noch NIE was gemacht habe. Da man durch Sehen lernt, habe ich ja gefragt, ob mir jemand das ganze in den Code implementieren kann. Ich möchte es einfach nur verstehen und das kann ich leider nicht, wenn ich kein Beispiel habe.

Danke
Moritz99 is offline  
Old 12/15/2013, 19:34   #4

 
マルコ's Avatar
 
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
Für manche Sachen benötigt man eine gewisse Menge Wissen, die man aus ganz praktischen Gründen mit 14 noch nicht haben kann (außer man ist inselbegabt oder so). Da hilft es auch nichts, dass du ein C++ Buch hast.
In diesem Fall ist es zum Beispiel so, dass dir jemand zeigen kann, wie man mit Pages arbeitet. Aber um damit richtig arbeiten zu können und zu verstehen, warum die so funktionieren (was grundlegend für viele Dinge ist) musst du die Theorie dahinter kennen.
Ich bin Student im 5. Semester Ingenieurinformatik. Ich habe letztes Semester eine Vorlesung namens "Betriebssysteme" gehabt, in der wir u.a. Pages durchgenommen haben. Ich denke nicht, dass du mit deinem lückenhaften Basiswissen und fehlender Mathematik in der Lage bist, es anhand von ein paar Beispielen zu verstehen, wenn nichtmal ich mir anmaße, ohne eine weitere umfangreiche Recherche korrekt damit umgehen zu können.
Das einzige, was du in deinem jezzigen Zustand machen kannst ist entweder copy&past oder fleißig zur Schule gehen und nebenher ein wenig Fachliteratur über Betriebssysteme lesen.
Auch viel C++ üben kann nicht schaden.

Ich hoffe du verstehst, dass mein Text dich nicht herunter machen soll, sondern dir aufzeigen soll, dass du nicht über Nacht etwas lernen kannst, was viele schlaue Köpfe über Jahrzehnte entwickelt haben.
マルコ is offline  
Thanks
2 Users
Old 12/15/2013, 19:42   #5
 
elite*gold: 0
Join Date: Jan 2010
Posts: 140
Received Thanks: 6
Wo du recht hast hast du recht aber:
Diesen Code den ich gepostet habe, habe ich schließlich auch verstanden und nicht nur C&P betrieben. Außerdem denke ich, dass das ein 14 Jährigee genauso lernen kann wie ein 20 Jähriger. Ich kann nunmal nur durch Beispiele lernen. So ist das halt.
Moritz99 is offline  
Old 12/15/2013, 20:34   #6
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
Quote:
Originally Posted by Moritz99 View Post
Wo du recht hast hast du recht aber:
Diesen Code den ich gepostet habe, habe ich schließlich auch verstanden und nicht nur C&P betrieben. Außerdem denke ich, dass das ein 14 Jährigee genauso lernen kann wie ein 20 Jähriger. Ich kann nunmal nur durch Beispiele lernen. So ist das halt.
du wirst aber wie du selber merkst nicht zu jedem mist beispiele finden, wäre ja auch sinnlos, dann müsstest du ja nichts mehr programmieren wenn es alles schon als fertigen code gibt.
am besten liest du dich erstmal ein, was paging überhaupt ist:
https://en.wikipedia.org/wiki/Paging
(weiteres problem bei deinem alter ist, dass du vermutlich kein/kaum englisch kannst, was ein sehr großes problem ist, da fast ausschließlich in englisch programmiert wird).
dann guckste dir an wie dein copypaste code funktioniert, dann überlegst du dir welchen code du damit nicht durchsuchen kannst (nämlich den, der nicht in einem modul liegt), dann überlegst du dir, wie du denn codestellen im virtual memory finden könntest der nicht in einem modul liegt.
du wirst zu dem schluss kommen, dass du einfach alle adressen durchsuchst die in frage kommen, was du z.b. mit virtualquery abfragen kannst (geht auch anders, das ist aber relativ easy zu implementieren.).
Dr. Coxxy is offline  
Thanks
1 User
Old 12/15/2013, 21:17   #7
 
elite*gold: 0
Join Date: Jan 2010
Posts: 140
Received Thanks: 6
Warum genau sollte ich kein englisch können?
Ich habe schließlich in der Schule englisch.
Naja in dem C&P Code ist als Modul plugin-container.exe angegeben.
Also wird darin auch nach dem Codestück gesucht. Da das Codestück aber in keinem Modul liegt wird es auch nichts finden. Deswegen muss ich in den Pages danach suchen.
Aber wie schon gesagt, ich verstehe einfach nicht wie ich das mache.
, deswegen fände ich es klasse, wenn jemand den code ergänzen könnte, damit ich es verstehe.
Moritz99 is offline  
Old 12/15/2013, 23:36   #8



 
burncode's Avatar
 
elite*gold: 250
The Black Market: 138/0/0
Join Date: Sep 2012
Posts: 5,269
Received Thanks: 1,447
Quote:
Originally Posted by Moritz99 View Post
Warum genau sollte ich kein englisch können?
Ich habe schließlich in der Schule englisch.
Naja in dem C&P Code ist als Modul plugin-container.exe angegeben.
Also wird darin auch nach dem Codestück gesucht. Da das Codestück aber in keinem Modul liegt wird es auch nichts finden. Deswegen muss ich in den Pages danach suchen.
Aber wie schon gesagt, ich verstehe einfach nicht wie ich das mache.
, deswegen fände ich es klasse, wenn jemand den code ergänzen könnte, damit ich es verstehe.
Code ergänzen = Copy&Paste = 100% wirst du es nicht ohne Erklärung verstehen

Schulenglisch hilft nicht immer.

Regards.
burncode is offline  
Old 12/15/2013, 23:37   #9
 
Czer0™'s Avatar
 
elite*gold: 0
Join Date: Mar 2013
Posts: 4,917
Received Thanks: 1,379
Quote:
Originally Posted by Moritz99 View Post
Außerdem denke ich, dass das ein 14 Jährigee genauso lernen kann wie ein 20 Jähriger. Ich kann nunmal nur durch Beispiele lernen. So ist das halt.
Diese Aussage ist falsch. Your arguments are invalid.
Czer0™ is offline  
Old 12/16/2013, 00:15   #10
 
elite*gold: 0
Join Date: Jan 2010
Posts: 140
Received Thanks: 6
Quote:
Originally Posted by burncode View Post
Code ergänzen = Copy&Paste = 100% wirst du es nicht ohne Erklärung verstehen


Regards.
sag ich schon.
da bin ich mir sogar fast 100% sicher. ich hab diesen code auch verstanden und hab die kommentare nicht angeschaut.

@Chrizz
okay aber in sachen Programmierung schon.
Moritz99 is offline  
Old 12/16/2013, 00:26   #11
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
Quote:
Originally Posted by Moritz99 View Post
@Chrizz
okay aber in sachen Programmierung schon.
ich hab das ganze auch hinbekommen ohne fragen in foren zu stellen, per google, bücher und msdn findest du alles was du wissen musst.
Dr. Coxxy is offline  
Old 12/16/2013, 00:36   #12



 
burncode's Avatar
 
elite*gold: 250
The Black Market: 138/0/0
Join Date: Sep 2012
Posts: 5,269
Received Thanks: 1,447
Quote:
Originally Posted by Dr. Coxxy View Post
ich hab das ganze auch hinbekommen ohne fragen in foren zu stellen, per google, bücher und msdn findest du alles was du wissen musst.
^This.

Dr. Coxxy hat es erfasst.
burncode is offline  
Old 12/16/2013, 12:50   #13
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Nur mal so :
Die Start Adresse muss nicht unbedingt die eines Moduls sein. Genauso wenig ist das bei Size der Fall. Wenn du den Code so Super toll verstanden hast dürfte es ein leichtes sein Code zu finden der sich in keinem Modul befindet. Solltest halt nur Start Adress und Länge der Page kennen.
th0rex is offline  
Old 12/16/2013, 17:12   #14


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Wie wäre es, wenn ihr dann jetzt mal euren unnötigen Streit über die Sinnhaftigkeit von seiner Lernmethode beilegt und ihm entweder helft oder es lasst.
Man muss nicht Informatik studiert haben, um die nötigen WinApi Funktionen zu kennen, die einem das Auslesen von Pages ermöglichen.
Ein paar Stichwörter für Google dürften wohl drin sein, wenn keiner einen fertigen Code bereitstellen will (was ich wiederum vollkommen unterstütze: hier wird nicht gespoonfeedet).
MrSm!th is offline  
Old 12/16/2013, 17:38   #15
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
Quote:
Originally Posted by MrSm!th View Post
Wie wäre es, wenn ihr dann jetzt mal euren unnötigen Streit über die Sinnhaftigkeit von seiner Lernmethode beilegt und ihm entweder helft oder es lasst.
Man muss nicht Informatik studiert haben, um die nötigen WinApi Funktionen zu kennen, die einem das Auslesen von Pages ermöglichen.
Ein paar Stichwörter für Google dürften wohl drin sein, wenn keiner einen fertigen Code bereitstellen will (was ich wiederum vollkommen unterstütze: hier wird nicht gespoonfeedet).
soweit ich das sehe wurden entsprechende stichwörter und auch schon ein lösungsweg beschrieben, trzd. scheint der TE nicht weiterzukommen - was wiederum zweifel an der sinnhaftigkeit seiner "lernmethode" aufkommen lässt.
Dr. Coxxy is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
Still one of the best pages
09/24/2012 - Say Hello - 5 Replies
Just want to say hello and thank you for the good work here :)
[B]3 FB Fan Pages [S]?
03/10/2012 - elite*gold Trading - 19 Replies
hey, ich biete folgende drei Facebook Fan pages: => | Facebook 5.977Likes Wir sind gegen Acta! Bist du es auch? | Facebook 2.278Likes Wie viel % Charlie steckt in dir? | Facebook 3.693Likes Alles bleibt so wie es jetz ist, dh alle apps bleiben drauf:). Regards me.
Bag Pages
03/11/2010 - EO PServer Hosting - 0 Replies
Is there a way to make more space in your bag. Ex- instead of only holding 12 demons you can make it hold 16 or whatever number you want.
IPs,Pages
03/13/2008 - SRO Private Server - 2 Replies
can some1 let me kno more pages for ips...other than this one Anonymous proxy test,socks5 list,anonymous proxy,Free proxy for game,- IP free of china and there is not ip working right?



All times are GMT +1. The time now is 06:01.


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