asm berechnung in C++

11/07/2014 06:46 bloodx#1
Guten Morgen, ich sitze schon die ganze Nacht daran dieses stück asm:

Code:
mov edx, [ecx + eax * 4 + 8]
in C++ zu übersetzen... aber ich kriege einfach nicht den richtigen Wert..


ecx ist nen Pointer der auf nen Pointer Zeigt.

eax ist ne SkillID

ich dachte bisher eig .

Pointer + (SkillID*4) + 8...

aber es kommt nix bei raus..

am ende sollte das auf nen Pointer Zeigen.
11/07/2014 08:47 Dr. Coxxy#2
zeig mal was du bisher gemacht hast - biste überhaupt an der richtigen stelle reingehookt?
11/07/2014 15:12 bloodx#3
Quote:
Originally Posted by Dr. Coxxy View Post
zeig mal was du bisher gemacht hast - biste überhaupt an der richtigen stelle reingehookt?
bräuchte nichtmal nen Hook - ich kenne die gegebenen Parameter ja.


int* PointToPlayerBase;
int SkillID;


PointToPlayerBase Zeigt auf adresse 0x1CCDC37C
Der Wert von SkillID: 49

Die Stelle auf die PointToPlayerBase zeigt - enthält die Adresse von der PlayerBase -

am ende Zeigt der neue Pointer wieder auf einen Pointer -


Vielleicht beschreibe ich auch einfach schlecht was ich möchte :D:D


der asm part wäre ja Theoretisch PointToPlayerBase + SkillID * 4 + 8
11/07/2014 15:32 Jeoni#4
Sicher, dass du auch dereferenziert hast, wie es die asm instruction macht?
Das hier wäre das equivalent in C:
Code:
void* pointToPlayerBase = ...;
int skillId = 16;
void* /*typ anpassbar*/ edx /*name anpassbar*/ = *(void**)(((char*)pointToPlayerBase) + skillId * 4 + 8);
MfG
Jeoni