Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 01:03

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

Advertisement



Bioshock Infinite "Trainer" - Pointer??

Discussion on Bioshock Infinite "Trainer" - Pointer?? within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1

 
PRiiMEx's Avatar
 
elite*gold: 10
Join Date: Sep 2007
Posts: 427
Received Thanks: 67
Question Bioshock Infinite "Trainer" - Pointer??

Hallo!

Da ich mit C++ angefangen habe vor kurzem, Bioshock Infinite schon durch habe und etwas zum üben brauche wollte ich einen kleinen Trainer schreiben.

Am Anfang habe ich mit der Cheat Engine die Base Pointer aller Werte rausgesucht die ich brauche. (Leben, Schild, Schnelligkeit, Sprunghöhe, Geld, Salze, Lockpicks.. )

Nehmen wir als beispiel den Base Pointer vom Geld:

"BioShockInfinite.exe"+012BCC1C
Offset: 50C
Offset: 398

Cheat Engine zeigt mir an:

"BioShockInfinite.exe"+012BCC1C = 13ECA494
13ECA494 + 398 = 1EBD5400
1EBD5400+ 50C = 1EBD590C

Da ich nicht weiß wie ich in C++ die Pointer mit den Offsets schreibe, nehme ich an das ich für Geld diese Adresse verwenden kann: 1EBD590C

Der Eintrag wäre folgender:

Code:
unsigned adress = 0x1EBD590C;
Die Value von dem Geld ist momentan 1017.
Um herauszufinden ob ich überhaupt bei der richtigen Adresse bin, habe ich folgenden befehl eingebaut:

Code:
ReadProcessMemory(ProcessHandle,(void*)adress,&value,sizeof(int),0);
Und mir dann ausgeben lassen:

Code:
cout << value << endl;
Das Problem ist das mir aber -2 als value ausgegeben wird und nicht 1017.
Auch schreiben kann ich nichts.

Code:
int fallsErfolgreich = WriteProcessMemory(ProcessHandle,(LPVOID)adress,&value,sizeof(int),NULL); 
                                                      
    if (fallsErfolgreich > 0) {
        cout << "Wert geschrieben" << endl;
        } else {
        cout << "Wert konnte nicht geschrieben werden." << endl;
        }

Dann kommt "Wert konnte nicht geschrieben werden."
Ich denke das Problem liegt an der Adresse / dem Pointer.
Die Pointer sind aufjedenfall richtig, nur weiß ich nicht genau wie ich sie in C++ übernehme.

Wäre super wenn jemand weiter weiß.

Vielen Dank

/E: Das gleiche widerfährt mir auch wenn ich die "normale" Adresse von der Munition z.B. nehme:

24ED9EBC

also 0x24ED9EBC, das gleiche Problem.
PRiiMEx is offline  
Old 05/02/2013, 16:26   #2

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,479
Received Thanks: 3,318
Du verwendest keinen Pointer, du nimmst eine statische Adresse.
[[[BaseAddress + 0x012BCC1C] + 0x398] + 0x50C] - hier liegt dein Wert, nicht bei 1EBD590C, das wird sich wahrscheinlich bei jedem Start ändern.

Schau dir mal noch mal das Prinzip der Pointer an.

Und bist du dir sicher, dass int bei dir 4 Byte hat?
snow is offline  
Old 05/02/2013, 18:12   #3

 
PRiiMEx's Avatar
 
elite*gold: 10
Join Date: Sep 2007
Posts: 427
Received Thanks: 67
Tatsächlich ändert sich 1EBD590C bei jeden Start..
Aber kann ich "[[[BaseAddress + 0x012BCC1C] + 0x398] + 0x50C]" so in C++ übernehmen?

Auch wenn ich mir nicht ganz sicher bin worauf es hinausläuft, int müsste 4 Byte haben.
PRiiMEx is offline  
Old 05/02/2013, 20:03   #4
 
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
Ja kannst du, google am besten mal die Folgenden Begriffe

Pointer, Dynamic Memory allocation, memoryread

Damit solltest du einen besseren Überblick bekommen und kannst dann eine etwas konkreter Fragestellung machen
dready is offline  
Old 05/02/2013, 21:28   #5
 
elite*gold: 5
Join Date: Feb 2013
Posts: 50
Received Thanks: 11
Der Vollständigkeit halber verlinke ich hier mal einen Thread, der mir geholfen hat das Ganze zu verstehen:
[B]roghurt™ is offline  
Thanks
1 User
Old 05/02/2013, 23:34   #6
 
elite*gold: 104
Join Date: Oct 2012
Posts: 2,720
Received Thanks: 593
Das was du in deinem Code machst ist es ja nur die Statische Addy zu nutzen,was du machen musst ist aber die Offsets zur Base dazuzurechnen.
Pseudocode:

Quote:
DWORD base = Get_Baseaddy("spiel");
DWORD money = base+0x00; //Offset halt dazurechnen
int cash = WertAuslesen(money);
Wie das ganze in C++ ausschaut musst selbst nachschaun, tipp -> ReadProcessMemory

Grüße
Cambios is offline  
Old 05/03/2013, 06:22   #7
 
elite*gold: 0
Join Date: Jun 2011
Posts: 265
Received Thanks: 50
Was vielleicht noch zu erwähnen wäre ist, dass mann nach jedem addieren des offsets zu einer Adresse, die Memory auslesen muss.
D.h. :
Pseudocode
Code:
DWORD tmpAddress;
DWORD ammo[3] = { OxBASE, 0xOFFSET, 0xOFFSET }; //ADRESSE + OFFSETS DEKLARIEREN

ReadProcessMemory(ammo[0], &tmpAddress[0]); //MEMORY AUSLESEN
tmpAddress[0] = tmpAddress[0] + ammo[1]; //OFFSET ADDIEREN
ReadProcessMemory(tmpAddress[0], &tmpAddress[1]); //MEMORY ERNEUT AUSLESEN
tmpAddress[1] = tmpAddress[1] + ammo[2]; //OFFSET ADDIEREN
Mfg,
Kosic
Kosic is offline  
Thanks
1 User
Old 05/03/2013, 13:21   #8
 
elite*gold: 104
Join Date: Oct 2012
Posts: 2,720
Received Thanks: 593
Quote:
Originally Posted by Kosic View Post
Was vielleicht noch zu erwähnen wäre ist, dass mann nach jedem addieren des offsets zu einer Adresse, die Memory auslesen muss.
D.h. :
Pseudocode
Code:
DWORD tmpAddress;
DWORD ammo[3] = { OxBASE, 0xOFFSET, 0xOFFSET }; //ADRESSE + OFFSETS DEKLARIEREN

ReadProcessMemory(ammo[0], &tmpAddress[0]); //MEMORY AUSLESEN
tmpAddress[0] = tmpAddress[0] + ammo[1]; //OFFSET ADDIEREN
ReadProcessMemory(tmpAddress[0], &tmpAddress[1]); //MEMORY ERNEUT AUSLESEN
tmpAddress[1] = tmpAddress[1] + ammo[2]; //OFFSET ADDIEREN
Mfg,
Kosic
stimmt, hatte ich ganz vergessen zu erwähnen, aber klar is ja nen Pointer..sollte dem TE klar sein wenn er sich kurz eingelesen hat was ein Pointer ist und wie sie funktionieren..hoffe ich
Cambios is offline  
Old 05/03/2013, 17:37   #9

 
PRiiMEx's Avatar
 
elite*gold: 10
Join Date: Sep 2007
Posts: 427
Received Thanks: 67
Ok, habs jetzt raus. Danke nochmal!
PRiiMEx is offline  
Reply

Tags
bioshock infinite, c++, hilfe, trainer


Similar Threads Similar Threads
Verkaufe "Bioshock Infinite" Steam Account !
04/03/2013 - Steam Trading - 0 Replies
Moin Moin , Verkaufe hier einen Steam Account mit Bioshock Infinite . Nehme nur Paysafecard :) . Bietet einfach mal . Screen _ http://s3.imgimg.de/uploads/Unbenannte3ade2c7png. png
Steam Keys , Bioshock Infinite &Resident Evil 6 "PSC ONLY" .
03/27/2013 - Trading - 4 Replies
Topic regelt , Verkaufe hier 2 Steam key's , 1x Bishock Infinite 1x Resident Evil 6 Macht mir Angebote :) .
Bioshock Infinite: "1999" durch Konami-Cheat freischalten
03/27/2013 - User Submitted News - 2 Replies
http://img577.imageshack.us/img577/6429/headerqmt. jpg Cheats bei Bioshock Infinite, noch nie gehört? Es soll sowas geben, laut dem Eurogamer Magazines. Freischaltung des Hardcore-Modus "1999" in Bioshock Infinite, der Ego-Shooter 2013, muss man lediglich das Spiel einmal durchspielen und somit erhält man Zugang zu diesem Modus. Laut einem Bericht des Eurogamer Magazines gibt es auch einen anderen Weg. Mit einer leichten Tastenzuweisung kann man als Spieler im Hauptmenü ganz einfach...
[Selling] Verkaufe "Bioshock Infinite STEAM cd-key EU" Keys [35€ Paypal]
03/26/2013 - Trading - 3 Replies
Hey Ho, Wie im Topic schon steht verkaufe ich "Bioshock Infinite STEAM cd-key EU" für 35€ Und einen Steam Account mit "Bioshock Infinite" auch 35€ Grüße Schlabberkeks1 ;)



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


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.