[Codeproblem] LC Offsets

12/04/2015 12:43 Recency#1
Hallo zusammen,

ich wollte mich nach Jahren noch mal damit befassen und versuche, einen mehr oder minder sinnvollen Hack&/Bot schreiben.

Aktuell habe ich das Problem, dass sich sowohl das Offset des z.B. Angriffspeeds immer verändert, ebenfalls das Offset an dem der Code steht, welcher den Atkspeed wieder zurücksetzt(muss ich ja überschreiben).

Kann mir jemand sagen wie sich diese Adressen dynamisch berechnen lassen bzw. wie es normalerweise in Hacks gemacht wird?
Denkanstöße würden mir schon reichen.


MfG
12/04/2015 14:45 Elongate#2
Multilevelpointer?
12/04/2015 15:26 Recency#3
Quote:
Originally Posted by Offensivkrieger View Post
Multilevelpointer?
Ein paar mehr Informationen würden mir dann doch noch weiterhelfen, aber schon mal danke.
12/04/2015 21:45 ZaTii#4
Du hast eine Base Adress die immer gleich ist. von dort aus Werten immer die gleichen Offsets addiert um zum gewünschten Wert zu gelangen, zbs Attackspeed.

Im fall von Attackspeed ist es bei Ep3

PNetwork + Level 1 + Level 2 + Level 3 + Level 4

Jedeslevel ist eine offset addierung. Musst soweit ich weiss aber nach jedem addieren das Offset neu auslesen und auf diesen dann den neuen adden.


Falls ich falsch liege liegt das daran das ich mich damit 1 Std beschäftigt habe und das gerade alles ausm Kopf aufschreibe :D

Offensivkrieger müsste dir sehr viel mehr da sagen können und mich berichtigen falls ich Bis Später erzähle :D


Haut rein bin feiern ihr suchtis.
12/04/2015 22:44 Recency#5
Besten dank schon einmal.

Ich versuche mich gerade am Skillspeed, aber mein Pointer zeigt bei einer 4Byte Value eine andere Adresse an, als dort "eigentlich" stehen müsste.

Der Pointer ist jedoch richtig, via CE lässt sich Skillspeed problemlos aktivieren.

Eventuell kann mir hier jemand ja einen Crashkurs in dem Bereich geben, ich hab leider wirklich kaum Wissen in dem bereich, programmiertechnisch sollte das ganze jedoch wenige Probleme bereiten.
12/05/2015 01:14 ZaTii#6
Quote:
Originally Posted by Recency View Post
Besten dank schon einmal.

Ich versuche mich gerade am Skillspeed, aber mein Pointer zeigt bei einer 4Byte Value eine andere Adresse an, als dort "eigentlich" stehen müsste.

Der Pointer ist jedoch richtig, via CE lässt sich Skillspeed problemlos aktivieren.

Eventuell kann mir hier jemand ja einen Crashkurs in dem Bereich geben, ich hab leider wirklich kaum Wissen in dem bereich, programmiertechnisch sollte das ganze jedoch wenige Probleme bereiten.


Hab am anfang den fehler gemacht das ich die Pointer von oben nach unten geaddet habe, musst von unten nach oben so wie sie in CE stehen vielleicht ist das dein Problem
12/05/2015 15:25 bambamtyran#7
wenn du ihn fertig hast sag bescheid ich teste gerne ^^
12/06/2015 18:11 wurstbrot123#8
kleines einfaches Beispiel:

Baseaddresse 0x10032482 Offset 1: 0x520 Offset 2: 0x39 Offset 3: 0x10

// Base auslesen

DWORD temp = *(DWORD*)0x10032482;

// Offset addieren

temp += 0x520;

// Erneut auslesen

temp = *(DWORD*)temp;

// Nextes offset addieren...

temp += 0x390:

// Erneut auslesen...

temp = *(DWORD*)temp;

temp += 0x10:

// einen wert zuweisen

*(DWORD*)temp = 1;

// Auslesen

DWORD value = (DWORD*)temp;

Geht alles natürlich auch mit einer Zeile aber so ists denke ich einfacher
zu verstehen. Achja....diese Methode klappt so natürlich nur mit einer DLL
im Prozess aber ich denke du verstehst das Prinzip.
12/06/2015 20:05 Recency#9
Besten Dank, damit komme ich schon mal ein Stück weiter.

Mal sehen wie weit ich am Wochenende kommen werde, hab leider unter der Woche keine Zeit.
12/09/2015 19:49 PizzaGuy#10
You can use base addresses and pointers to find addresses that you're looking for. Although once you step towards EP4 then you really should be doing signature scans. In fact I would use signature scans in general as they will work across every version as long as the signature is not varied by much (generally it's not).