• Trainer
  • Forums
  • Suche
  • Members
  • Kalender
  • Hilfe
  • Extras
Forum stats
Show team
Neue Beiträge ansehen
Heutige Beiträge ansehen
Home of Gamehacking - Archiv
Login to account Create an account
Login
Benutzername:
Passwort: Passwort vergessen?
 



  Home of Gamehacking - Archiv Gamehacking Gamehacking
« Zurück 1 ... 3 4 5 6 7 8 Weiter »
Command & Conquer Generäle - Die Stunde Null - Patch 1.4

Seiten (2): 1 2 Weiter »
Ansichts-Optionen
Command & Conquer Generäle - Die Stunde Null - Patch 1.4
darius83 Offline
Junior Member
**
Beiträge: 34
Themen: 2
Registriert seit: Sep 2012
Bewertung: 0
#1
30.09.2012, 17:56 (Dieser Beitrag wurde zuletzt bearbeitet: 30.09.2012, 19:39 von darius83.)
Ok, nach langen Diskussionen im Delphi-Bereich über eben dieses Spiel bin ich jetzt mal hierher gewechselt, da ich denke, dass es so langsam besser hier rein passt Wink

Hier nochmal der Verweis in die anfängliche Diskussion

Also, das Thema Gold ist hier erstmal abgehakt, mit den verfügbaren Generalsfähigkeitspunkten bin ich gerade am testen, aber ich hab Schwierigkeiten, eine Codestelle zu finden, in der das Generalslevel permanent überprüft wird... Alternativ wäre es denke ich eine Möglichkeit, die Stelle der Erfahrungspunkte rauszusuchen, aber auch da habe ich bisher noch nichts gefunden...

Hat da eventuell einen Tip oder eine Idee, wie man das ganze findet?

Soll im Endeffekt darauf hinauslaufen, dass man via Hotkey sein Generalslevel auf Stufe 5 bringt und genügend Generalspunkte zur Verfügung hat, um alle Fähigkeiten zu erlernen.

LG Darius83

Edit1:
Hier mal, was ich so gefunden habe...

[code=asm]
game.dat+3C91E0 - 8B 86 8C010000 - mov eax,[esi+0000018C] // [esi+0000018C] enthält die momentanen Erfahrungspunkte
game.dat+5BCDE - 8B 83 88010000 - mov eax,[ebx+00000188] // [ebx+00000188] enthält GeneralslevelWert
game.dat+5EAEC - 8B 81 90 01 00 00 - mov eax,[ecx+00000190] // [ecx+00000190] enthält GeneralspunkteWert
[/code]

5000 Erfahrungspunkte braucht man für Lvl 5. Wenn ich die allerdings einfach setze, erfolgt das Levelup erst nach dem nächsten Kill eines Gegners...
Anscheinend fehlt mir da noch irgendwo ein Flag oder ähnliches, um das Lvlup auszulösen...
Es gibt 10 verschiedene Typen von Personen, die, die ich mag und die, die ich nicht verstehen kann...
Suchen
Antworten
Chris Offline
Junior Member
**
Beiträge: 40
Themen: 1
Registriert seit: May 2010
Bewertung: 0
#2
30.09.2012, 21:07
Ja man könnte es mit einem Flag versuchen ungefähr so

PHP-Code:
1
2
3
4
5
6
7
8
pushad // push register auf stack
cmp [00587857],1 // Vergleiche ob Flag gesetzt
jne orginal code // Wen ja dann zum orginal code
mov [00587857],0 // wen nicht dann setze flag 0
push eax // Push eax auf stack
mov eax,1388 ( 5000 ) // Setze in eax den wert 1388 Hex ( 5000 Dezi )
add [esi+0000018C],eax // kopiere  den wert aus eax nach esi und addiere in hinzu
popad // hole register von stack


00587857 Ist einfach ein freies Cave.

Suchen
Antworten
darius83 Offline
Junior Member
**
Beiträge: 34
Themen: 2
Registriert seit: Sep 2012
Bewertung: 0
#3
30.09.2012, 21:22
Nein, so meinte ich das nicht... Flag für den Tastendruck ist klar... Ich meine eher, ich kann zwar die 5000 Erfahrung setzen, aber dadurch erhöht sich mein Level Ingame nicht... Dazu muss ich dann anschliessend irgendwo eine gegnerische Einheit töten. Da ich aber eigentlich sofort ein Levelup haben will, fehlt mir in der Spielmechanik noch irgendwo ein Ereignis, das durch den Kill der gegnerischen Einheit ausgelöst wird, welches ich bisher nicht finden konnte :/

LG Darius83
Es gibt 10 verschiedene Typen von Personen, die, die ich mag und die, die ich nicht verstehen kann...
Suchen
Antworten
iNvIcTUs oRCuS Offline
Super Moderator
****
Beiträge: 2.688
Themen: 529
Registriert seit: Aug 2010
Bewertung: 19
#4
30.09.2012, 21:39
Die sollte aber auch klar sein das es nicht in jedem Spiel IMMER eine permanent lesende Stelle im Code gibt.
Beispielsweise bei Rollenspielen ist es durchaus üblich das z.B. der Geldwert erst beim öfnnen de Inbentares gelesen/abgeglichen wird.
Und das wird wohl hier genauso der Fall sein. Im Endeffekt kannst Du da nicht viel machen als es so zu belassen, denn wenn Du über Pointer gehst würdest Du ebenfalls erst aufsteigen nachdem Du eine gegnerische Einheit erledigt hast.
Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer !!!

Traineranfragen per PM werden prinzipiell gelöscht...

[Bild: signatur6akm7.gif]
Suchen
Antworten
darius83 Offline
Junior Member
**
Beiträge: 34
Themen: 2
Registriert seit: Sep 2012
Bewertung: 0
#5
30.09.2012, 22:27
Ja das kann schon sein, aber jetzt mal rein theoretisch gesehen werden bei einem Kill einer gegnerischen Einheit mehrere Sachen ausgeführt, je nachdem, welche Seite man spielt, bekommt man z.B. Gold, Erfahrungspunkte, die Anzahl getöteter Einheiten erhöht sich... Wenn man jetzt im Code die Stelle findet, die die Erfahrungspunkte nach einem Kill erhöht, sollte man auch nachvollziehen können, was dabei abgefragt wird um zu prüfen, ob ein Levelup stattgefunden hat. Wenn man soweit ist, kann man das dann auch manuell aufrufen. Sogesehen, wäre es theoretisch möglich, ein Levelup manuell durchzuführen, wenn man die entsprechende Stelle im Code finden kann.

Bezogen auf dein Rollenspiel-Beispiel könnte man dem Programm z.B. vorgaukeln, dass sich das Inventar geöffnet hat, um die Aktualisierungsroutine zu starten und den aktuellen Wert zu bekommen.

Was mich wieder zum selben Problem führt, ich finde die entsprechende Stelle nicht :/

LG Darius83
Es gibt 10 verschiedene Typen von Personen, die, die ich mag und die, die ich nicht verstehen kann...
Suchen
Antworten
DNA Offline
Administrator
*******
Beiträge: 1.330
Themen: 123
Registriert seit: May 2010
Bewertung: 26
#6
30.09.2012, 22:39
Möglich wäre das rein theoretisch ...
Aber das rechtfertigt nicht den Aufwand/Nutzen Faktor Wink
Sagen wir mal so ... wenn du den cheat jetzt so lässt, muss der Benutzer
einen Gegner killen und bekommt dann LevelUP, XP, usw.

Wenn du aber das ganze anders haben möchtest, investierst du
z.B. 1,5 Std. darin nur damit der Benutzer den Gegner nicht killen
muss.

Wenn ich deinen Trainer nutzen würde, wäre die erste Variante
für mich vollkommen ok ... hauptsache ich bekomme das, was dein
Trainer verspricht Wink
ACHTUNG: Lesen gefährdet die Dummheit

[Bild: dna-sig.gif]
Suchen
Antworten
Chris Offline
Junior Member
**
Beiträge: 40
Themen: 1
Registriert seit: May 2010
Bewertung: 0
#7
30.09.2012, 22:45
Genau es reicht so volkommen. Nur ist es wohl bei im der reiz es so zu machen (probieren) es hinzubekommen wie er es sich vorstellt. Denke diejenigen von euch die mit unter trainer erstellen wissen was ich meine:sleepy:.

Chris
Suchen
Antworten
darius83 Offline
Junior Member
**
Beiträge: 34
Themen: 2
Registriert seit: Sep 2012
Bewertung: 0
#8
30.09.2012, 23:50
Tja das ist der Nachteil bei Perfektionisten :/ Machen sich immer mehr Arbeit als nötig XD Naja Perfektionist bin ich zwar nicht, deswegen versuche ich aber trotzdem alles so gut wie möglich zu machen, wenn es denn möglich ist Wink

LG Darius83
Es gibt 10 verschiedene Typen von Personen, die, die ich mag und die, die ich nicht verstehen kann...
Suchen
Antworten
iNvIcTUs oRCuS Offline
Super Moderator
****
Beiträge: 2.688
Themen: 529
Registriert seit: Aug 2010
Bewertung: 19
#9
01.10.2012, 01:11
In deinem Falle wie Du es versuchst zu handlen würde ich davon abraten und nicht erst weiter versuchen eine entsprechende Funktion zu finden.
Erstens... DNA hats bereits angesprochen, der Aufwand ist einfach zu groß.
Zweitens... Wenn Du versuchst die Funktion manuel aufzurufen stehst Du vor einem weiteren Problem... Du müsstest die Funktion nur die Adresse/Werte etc. durchlaufen lassen die mit dem Level UP, oder was Du eben versuchst zu manipulieren, zusammenhängen. Und das dürfte auch einen ehrfahrenen Hacker aus der Bahn werfen.
Sicher, es wird manche Spiele geben bei denen das einfach funktioniert, aber bei einem Strategietitel wohl eher weniger. Das sind zu viele Variablen...

Es steht Dir natürlich frei es zu versuchen. Du müsstest z.B. mit Hilfe von Cheat Engine einen Befehl mittels "Find out what accesses..." finden. Den ersten Befehl musst Du folglich im Debugger nachvollziehen. Logischerweise wird wohl irgendwo im Code-Nirvana ein oder mehrere Call(s) übersprungen die dafür sinnvoll sind.
Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer !!!

Traineranfragen per PM werden prinzipiell gelöscht...

[Bild: signatur6akm7.gif]
Suchen
Antworten
Acubra Offline
Trainermaker
****
Beiträge: 904
Themen: 127
Registriert seit: Oct 2010
Bewertung: 6
#10
01.10.2012, 16:43
Hey,
ich glaube du müsstest eine bestimme Funktion hooken und von der aus dann die "Level Up" Routine mit den jeweiligen Parametern callen.
Allein das Thema hooken ist extrem kompliziert und meiner Meinung nach nur etwas für extrem Fortgeschrittene, denn: Command & Conquer wurde ja auch ganz normal programmiert. Du musst für einen Hook nun erst einmal die richtige Funktion finden (erfordert schon einiges an Reversing Skills). Dann musst du die komplette Funktion analysieren und nachvollziehen, um auf die richtigen Paramter (theoretisch könnte man auch alle als DWORD deklarieren), Rückgabewert (void, 4bytes, 8bytes u.s.w) und Calling Conventions (__thiscall, __stdcall, __fastcall, __cdecl) zu kommen. Außerdem müsstest du dann noch von da aus ne andere Funktion callen.
Außerdem müsstest du dafür eine .dll injizieren.
"Auf dieser Welt gibt es mehr Scheisse als auf Festivalklos"
[Bild: hoglogo_smalpxga.jpg]
Homepage Suchen
Antworten
Share Thread:            
Seiten (2): 1 2 Weiter »


  • Druckversion anzeigen
  • Thema abonnieren


Benutzer, die gerade dieses Thema anschauen:
1 Gast/Gäste

  • Kontakt
  • Forum team
  • Forum stats
  • Nach oben
 
  • RSS-Synchronisation
  • Lite mode
  • Home of Gamehacking - Archiv
  • Help
 
Forum software by © MyBB - Theme © iAndrew 2014



Linearer Modus
Baumstrukturmodus