Hey guys,
I've got two beginner questions about cheat engine, which should be just understanding problems.
1) Am I right, that the base address (which will change every start of the application) is calculated just by e.g. the instruction address (71DBF9) and the
corresponding offset (Bejeweled3.dll+31DBF9), so that it is after subtraction 400000?
If yes, what's that "Base" in the memory viewer? ("Protect=Read/Write Base=32FD1000 Size=87000").
And because this 400000 is that even, is that a predefined address by windows?
2) I'm messing around a bit with Bejeweled 3.
Everytime you're combining 3+ gems, the highscore gets increased by 100, 200, ...
So I set a breakpoint on that instruction and if I'm combining 3 gems, the register, which gets moved to the highscore, contains 0x14 (= 20 decimal).
And this instruction gets called five times, which makes sense: 5 calls * 20 points (in the register) = 100 points.
But how can I find out, how it is determined how many times the instruction gets called? Just go back in the instructions and check it somehow?
And I also would like to find out the "check"-instruction, which even checks whether 3 or more gems are combined.
Should I also go back in the instructions and set breakpoints..? Or how should I go on here?
Thanks for reading and your time! Cheers
DE:
Guten Morgen zusammen
Ich habe mal zwei kleine Fragen bzgl. Cheat Engine, was lediglich Verständnisfragen sein dürften.
Sehe ich das grundsätzlich richtig, dass sich die Basisadresse (die sich ja nach jedem Neustart ändert) schlichtweg durch Subtraktion der bspw. Instruktionsadresse (wird mir als 0071DBF9 angezeigt) und dem jeweiligen Offset (Bejeweled3.dll+31DBF9) und damit also 00400000 ergibt?
Wenn ja, was ist dann die "Base" im Memory Viewer? ("Protect=Read/Write Base=32FD1000 Size=87000").
Und da diese 00400000 so glatt sind, ist das irgendwie schon von Windows eine vordefinierte Adresse, die für Prozesse belegt werden kann?
Testweise frickel ich gerade ein bisschen mit Bejeweled 3 rum... Beim Highscore schreibt eine Instruktion insgesamt bei jedem (korrekten) Zug 5 Mal und der Highscore erhöht sich um 100.
Habe dann mal einen Breakpoint beim Aufrufen der Instruktion gesetzt und im Register, das letztendlich in die Highscore-Adresse geschoben wird, ist "14" (= Dezimal 20) enthalten. Was ja auch Sinn ergibt, denn 5 * 20 = 100.
Jetzt ist ja aber eins klar - auch diese Instruktion muss aufgerufen werden und insbesondere festgelegt werden, dass sie 5 Mal aufgerufen wird.
Dazu mal eine weiterführende Frage: Bei der besagten Instruktion wird in Abhängigkeit der kombinierten Steine (keine, 3, 4, 5) entsprechend die Punkte vergeben bzw. der Call dementsprechend oft ausgeführt (einmal ausgeführt: 20 Punkte und dementsprechend wird die Anzahl angepasst).
Wenn ich jetzt zu der "Prüf"-Instruktion gelangen will, ob überhaupt mindestens 3 Steine kombiniert sind, bleibt mir nichts anderes übrig, als stichprobenartig vor der Highscore-Instruktion immer wieder Breakpoints zu setzen..oder wie geht man da am besten vor?
Danke fürs Lesen und viele Grüße






