Cheat-Engine Trainer erstellen... mit pointer

09/20/2006 22:28 reijin#1
hi!!!
Ich hab mich mal etwas mit CE befasst und mir vorgenommen einen Trainer zu machen...
Nur leider ist da das Problem mit den "Pointern".

Ich habe:
1. Die Adresse des Wertes für die Muni ermittelt (diese ist NICHT statisch).
2. dann über "find out what writes to this addres" den Code gefunden, der die muni verringert:
Code:
02769f33 - ff 8e 98 00 00 00 - dec [esi+00000098]
3. mit tutorials... hab ich versuch den pointer zu ermitteln.. aber ich glaub da hab ich schon fehler gemacht....

wie ermittle ich den pointer?
und wie gehe ich danach vor, wenn ich nen Patch/Trainer erstellen will, der verhindert, dass der Muni-wert verringert wird?
Hoffe jemand kann die zeit aufwenden mir zu helfen... oder ist so nett und gibt eine gute (oder ausführliche) antwort.

Viiiielen Dank :)

[img]text2schild.php?smilienummer=1&text=Karma up - für alle guten Antworten' border='0' alt='Karma up - für alle guten Antworten' />
09/20/2006 22:33 Dodge#2
hast du mal die tutroial.exe von cheatengine druch gemacht? da wirds dir erklärt^^


weiß grad net mehr wie es ging ^^"
versuchs einfach ma :) war ganz easy


Mfg
09/20/2006 22:49 Maybe It's Maybelline#3
Ja, die tutorial.exe als erstes zu machen wäre optimal, und dann mal hier vorbei schauen [Only registered and activated users can see links. Click Here To Register...].
09/21/2006 09:48 Lowfyr#4
static pointer zu finden kann je nach game ziemlich hart sein, ich würd zuerst mit dma stealing anfangen, dabei lernst auch nochn bisschen asm
09/21/2006 14:42 reijin#5
Quote:
Originally posted by Lowfyr@Sep 21 2006, 09:48
static pointer zu finden kann je nach game ziemlich hart sein, ich würd zuerst mit dma stealing anfangen, dabei lernst auch nochn bisschen asm
die abkürzung sagt mir was... ich google mal ;)
meinst du es ist einfacher auf diesem weg??
Die TUtorial.exe wird aber wohl keine Trainer-erstellung mit Pointern erklären oder? :? das währ aber doch relativ wichtig für mich...

auf jedenfall schonmal:
Danke :)
09/21/2006 15:45 Maybe It's Maybelline#6
Quote:
Originally posted by Reijin+Sep 21 2006, 14:42--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (Reijin @ Sep 21 2006, 14:42)</td></tr><tr><td id='QUOTE'> <!--QuoteBegin--Lowfyr@Sep 21 2006, 09:48
static pointer zu finden kann je nach game ziemlich hart sein, ich würd zuerst mit dma stealing anfangen, dabei lernst auch nochn bisschen asm
die abkürzung sagt mir was... ich google mal ;)
meinst du es ist einfacher auf diesem weg??
Die TUtorial.exe wird aber wohl keine Trainer-erstellung mit Pointern erklären oder? :? das währ aber doch relativ wichtig für mich...

auf jedenfall schonmal:
Danke :) [/b][/quote]
Was du suchst nennt sich DMA, Dynamic Memory Allocation.


Und doch, die Tutorial.exe erklärt auch wie man die Pointer macht.
09/21/2006 19:12 reijin#7
Quote:
Originally posted by Maybe It's Maybelline@Sep 21 2006, 15:45
Was du suchst nennt sich DMA, Dynamic Memory Allocation.


Und doch, die Tutorial.exe erklärt auch wie man die Pointer macht.
Also hab jetzt mal das Tutorial gemacht ist echt gut.
Nur Wie man mit CE Trainer erstellt ist mir immernoch unklar...
Und dieses DMA kann man das auch mit CE machen oder muss ich da was anderes Benutzen/Downloaden?

POST 100!!!! :nice: zwar noch nix im vergleich zu den Proz hier aber ich finds nich schlecht :ohps:
09/21/2006 20:58 Maybe It's Maybelline#8
lol ich spare mir jetzt das amusement.

Wenn du bitte das Tutorial gemacht hast, wo liegt dann das Problem? Du machst rechtsklick auf die Adresse -> Add to Codelist. Dann auf Advanced -> Create Standalone Trainer -> Add entry -> Deine Adresse.
10/04/2006 14:15 Lowfyr#9
dma macht man nicht, dma ist dein feind :p

nochmal zu dma stealing: [Only registered and activated users can see links. Click Here To Register...] da wird gezeigt wie du dma besiegst und anschließend einen trainer mit tmk (glaub ich) machst
10/04/2006 20:37 Maybe It's Maybelline#10
Quote:
Originally posted by Lowfyr@Oct 4 2006, 14:15
dma macht man nicht, dma ist dein feind :p

nochmal zu dma stealing: [Only registered and activated users can see links. Click Here To Register...] da wird gezeigt wie du dma besiegst und anschließend einen trainer mit tmk (glaub ich) machst
Da Lwy so schön den Thread gebumpt hat und ich den Debugger Wert oben erst jetzt bemerkt habe mach ich schnell ein tutorial mit CE.


Also, du hast "02769f33 - ff 8e 98 00 00 00 - dec [esi+00000098]" rausbekommen,
wenn du ein Doppelklick darauf machst siehst du noch mehr Adressen. Was wichtig ist sind die Sachen die in den [] Klammern stehen, die ESI Adresse steht etwas unten, diese musst du dir merken, außerdem ist die 98 auch wichtig. Indem Fall musst du eine Neue Suchen starten indem du Hex makierst und die ESI Adresse eingibst... Normalerweise solltes du jetzt eine oder mehrere Adressen haben. Nun gehst du auf "Add Adress Manual" und drückst auf Pointer, in der ersten Spalte kommt der Offset rein den du gerade eben gefunden hast (Und nicht die ESI die als Value jetzt steht) und in der rechten spallte kommt der 98 Offset rein. Fertig ist der Pointer.

Das ganze kann aber schwieriger werden wenn in der Klammer der Offset als Rechnung steht.
10/21/2006 21:49 reijin#11
ok, ich danke vielmals!!
(sry für die späte antwort - dachte das währe schon verloren ;) )
werd ich gleich mal testen
Lowfyr, ich habe Probleme mit dem Link, ich kann nix downloaden :cry: - würde mir aber zugerne das Tutorial mal anschauen.... :)

bitte um Update - danke :)

//EDIT//
Ich habe jetzt einen Pointer erstellt... und den pointer, kann ich den auch mit dem Trainermaker Kit benutzen?
außerdem hab ich das Problem das ich glaub ich immernoch nicht verstanden habe, WAS Pointer sind :rolleyes:
sind das Adressen (die hoffentlich statisch sind) und die man benutzen kann um auf die eigentliche Adresse zurück zu schließen?
Den Pointer muss ich in den Trainer einbauen oder? (nur den pointer?)
Bitte hilf mir, ich will doch das alles so gern lernen :cry:
01/02/2007 13:36 Bot_interesierter#12
Static Pointer sind Variablen die eine ram Adresse gespeichert haben und immer an der gleichen stelle sind, so hab ich des zumindest verstanden :-)
Ich hab selber aber noch keinen Trainer mit CE gemacht, weil die in WoW detectable sind und ich sonst nix zogge.
07/02/2009 22:42 TOG#14
Hi,
wie ich sehe ist dieses Thema schon etwas älter, aber ich hoffe ihr könnt mir dennoch helfen. Es mag sein das es zu meiner Frage schon einige Antworten im Forum gibt, aber bei der Menge an Themen möchte ich nicht die nächsten 3 Tage am PC sitzen und danach suchen ;-)
Außerdem glaube ich das meine Frage auch ganz gut hier rein passt.

Es geht also mal wieder um CE und um das schon oben von euch beschriebene Thema.

Ich versuche im Moment gerade einen Trainer für Demigod mit CE zu erstellen, leider stellt sich das für mich mich als ein großes Problem dar^^
Ich bin zwar kein unbedingter Anfänger in sachen Hex und programmieren, ( hab selber vor paar Jahren mal bissel mit VisualBasic rum gealbert), aber bei CE stoße ich gerade bei Demigod an meine Grenzen.

Folgender Sachverhalt -> Ich möchte einen +25000 Credits Trainer für Demigod erstellen.

Ich habe also Demigod gestartet, danach in CE den Prozess geladen (Kindergarten^^)
Danach ein Spiel gestartet, pausiert, und den Creditsbetrag in CE eingefügt (immernoch)
Im Suchmuster "Exact Value" und "4 Byte" -> nix gebracht (Grundschule^^)
Rumgetüfftelt bis ich 2 Addressen im Binär Addressbereich gefunden habe,
auf beide greift der gleiche Code zu. Ich also erstal zum testen halber den Wert auf
25000 gesetzt -> hat gefunzt wie erwünscht.

Wie ihr euch sicher denken könnt, sind das natürlich dynamische Adds gewesen und nur in Echtzeit zum Hexen geeignet, was mir und meinen Trainer nicht besonders viel bringt ;-) (ab hier wurde es schon schwer für mich )
Ich also ab ins Googlenet und hier gelandet, habe ich dieses Thema hier gefunden,
das mir schonmal wertvolle Tips geben konnte wegen der Sache mit dem
"Find out what accesses this address" und "Find out what write to this addresses"

Also hab ich erstmal mit diesen Pointer rum Experimentiert die ja auch im Tutorial beschrieben werden, ich muss allerdings gestehen das ich bis jetzt immernoch nicht so richtig weis, was die dinger nun machen und für was sie gut sind. Auf diese Frage hier im Thread wurde ja noch nicht geanu eingegangen.
Ich hab das mit den piontern erstmal aufgegeben und mit dem " Find out what write to this address" weiter gemacht. Bin dann auch auf einen Code gestoßen...

Um das alles jetzt ein wenig übersichtlicher zu gestalten werde ich euch das jetzt mal anhand eines Beispiels aufzeigen. Es wäre sehr sehr lieb wenn mir jemand sagen könnte wo mein Fehler liegt und meine Wissenslücken schließt :-))

Also->

Credits Add 1 12649329^3 Binär(13) 1000010100000
Credits Add 2 2ACBD125^3 Binär(13) 1000010100000

dann "Find out whats write to this address" (nur bei der ersten gemacht)
(spiel wieder aufgenommen und wieder pausiert) (Es sei gesagt das man im Spiel automatisch jede Sekunde bissel Credits bekommt...vll hilft das ja)

-> 00ad69f3 - 89 53 04 - mov (ebx+04),edx

Dann "More information" dann "Show disassembler" dann Sprung auf HexAdd 00AD69F3 vom "Extra info" Fenster dann "Strg+A" dann "Template" dann "Code injection" als Add wieder 00AD69F3 vom "More information"Fenster.Dann neuen Code rein.
Soweit bis hierher... (war garantiert schon iwas falsch^^)

Das ganze sah dann so aus ->
-------------------------------------------------------------------------------------
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)

00AD69F3:
jmp newmem
returnhere:

newmem:
Add [12649324],100

originalcode:
mov [ebx+04],edx
pop ebx
pop ecx

exit:
jmp returnhere
-------------------------------------------------------------------------------------
Das daraus kein +25000 Credits Trainer mehr wird ist mir klar nur ich dachte das dann ein Effeckt eintritt das man egal wieviel Credits man pro Sec bekommt, man immer nochmal 100 dazu.

So das funz nicht aus irgend einem Grund.
Ich vermute mal sehr stark das es nicht an meinem Wissen über Assembler und solchen Codes liegt, -> da ich keins habe^^

Ziel dieser ganzen Übung ist es für mich das ich etwas über die verwendung von CE lernen kann das nicht nur mit Sinnlosen Java Highscore Hexen zu tun hat^^
sondern ich auch iwann mal einige nützliche Trainer erstellen kann.
(Hab ich mit CE auch schon, war aber auch keine so Umfangreiche App wie hier)

So ich hoffe jemand kann mirhelfen wo der Fehler liegt.
Liegt es ->
a, an meinem Code
b, an den Binären Adds, das da iwas anders ist das man beachten muss
c, hab ich mir iwo ne falsche HexAdd zusammen gesucht
oder
d, an a, b und c ^^

PS: Am besten weis ich über meine eigene Unwissenheit bescheit, also bitte nehmt es mir nicht übel das bei mir alles HexAdd und Code heist, auch wenn das "Offset",String und "Hau mich Blau" heisen müsste^^

Mfg TearOfGaia
07/02/2009 23:24 schlur#15
Ich verstehe ehrlich gesagt nicht alles was du da schreibst, du verwirrst mich, aber ich denke ich sehe so in etwa was du möchtest.

Empfehlung 1: CE ist ein tolles Programm, aber man sollte es nicht als User Mode Debugger Ersatz sehen (ich empfehle OllyDbg). Notiere dir wo geschrieben/darauf zugegriffen wird und mache den Rest im Debugger.


Code:
mov [ebx+04], edx
Diese Zeile kopiert den Inhalt des EDX Registers an die Adresse die sich aus [EBX + 4] zusammensetzt.

Ich müsste mehr Code sehen um sicher zu sein, aber ich vermute, EBX ist die Baseadresse einer Klasse/Struct. Wo sie liegt (ich verdächtige den Heap) kann ich dir aufgrund fehlender Informationen nicht sagen. Mit "+ 4" wird vermutlich auf eine der Membervariablen der Klasse/Struct zugegriffen.

Ich empfehle dir im Debugger einen Breakpoint zu setzen und weitere Informationen zu sammeln (zum Beispiel welche Werte EDX enthält, was also für Werte gesetzt werden).

Falls ich etwas falsch verstanden hab musst du es mir noch einmal darlegen, den unteren Teil empfand ich als sehr verwirrend. :P