|
You last visited: Today at 06:00
Advertisement
C++ Pages
Discussion on C++ Pages within the C/C++ forum part of the Coders Den category.
12/15/2013, 17:42
|
#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
|
|
|
12/15/2013, 18:29
|
#2
|
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...).
|
|
|
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
|
|
|
12/15/2013, 19:34
|
#4
|
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.
|
|
|
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.
|
|
|
12/15/2013, 20:34
|
#6
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
Quote:
Originally Posted by Moritz99
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.).
|
|
|
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.
|
|
|
12/15/2013, 23:36
|
#8
|
elite*gold: 250
Join Date: Sep 2012
Posts: 5,269
Received Thanks: 1,447
|
Quote:
Originally Posted by Moritz99
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.
|
|
|
12/15/2013, 23:37
|
#9
|
elite*gold: 0
Join Date: Mar 2013
Posts: 4,917
Received Thanks: 1,379
|
Quote:
Originally Posted by Moritz99
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.
|
|
|
12/16/2013, 00:15
|
#10
|
elite*gold: 0
Join Date: Jan 2010
Posts: 140
Received Thanks: 6
|
Quote:
Originally Posted by burncode
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.
|
|
|
12/16/2013, 00:26
|
#11
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
Quote:
Originally Posted by Moritz99
@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.
|
|
|
12/16/2013, 00:36
|
#12
|
elite*gold: 250
Join Date: Sep 2012
Posts: 5,269
Received Thanks: 1,447
|
Quote:
Originally Posted by Dr. Coxxy
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.
|
|
|
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.
|
|
|
12/16/2013, 17:12
|
#14
|
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).
|
|
|
12/16/2013, 17:38
|
#15
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
Quote:
Originally Posted by MrSm!th
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.
|
|
|
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.
|
|