ich bin aktuell dabei meine ganzen autoit botfunctions in c++ umzusetzen.
aktuell habe ich ein problem mit der memory. das auslesen und schreiben geht generell schon.
Beispielaufruf
Code:
m_objFenster.MemoryRead(adr_death, sizeof(int));
Funktion
Code:
int Window::MemoryRead(unsigned adress, short size) {
int value;
ReadProcessMemory(m_processHandle, (LPCVOID)adress, &value, size, NULL);
return value;
}
Das Problem ist, dass ich jetzt einen Pointer benutzen muss.
Der dazu passende Autoit Code ist
Code:
Func HPEP ()
Local $adr_HPEP = IniRead("Memory.ini", "CHAR", "HP_EP", "")
Local $mem_p = _MemoryRead(_MemoryRead($adr_HPEP, $hprocess) +0x104, $hprocess)
Local $HPEP[2][2]
$HPEP[0][1] = _MemoryRead($mem_p + 0x2C, $hprocess) ; HP MAX
$HPEP[1][1] = _MemoryRead($mem_p + 0x18, $hprocess) ; EP MAX
; relativ zu absolut
$HPEP[0][0] = Floor($HPEP[0][1] * _MemoryRead($mem_p + 0x28, $hprocess, "float")) ; HP CUR
$HPEP[1][0] = Floor($HPEP[1][1] * _MemoryRead($mem_p + 0x14, $hprocess, "float")) ; EP CUR
Return $HPEP
EndFunc
Mein Ansatz das jetzt in c++ umzuseten ist
Code:
unsigned Character::HPEP() {
unsigned adr_HPEP = 0x_____;
unsigned pointer = m_objFenster.MemoryRead(adr_HPEP, sizeof(long));
pointer = m_objFenster.MemoryRead(pointer + 0x104, sizeof(long));
return pointer;
}
int Character::GetHP() {
unsigned pointer = Character::HPEP();
int max = m_objFenster.MemoryRead(pointer + 0x2C, sizeof(int));
int cur = m_objFenster.MemoryRead(pointer + 0x28, sizeof(float)) *max;
cur = floor(cur);
return cur;
}
int Character::GetEP() {
unsigned pointer = Character::HPEP();
int max = m_objFenster.MemoryRead(pointer + 0x18, sizeof(int));
int cur = m_objFenster.MemoryRead(pointer + 0x14, sizeof(float)) *max;
cur = floor(cur);
return cur;
}
Das Problem ist 1. ich weiß nicht was ich als bitgröße angeben soll... long ist logischerweise falsch. beim aufruf wurde der typ weggelassen, laut nomadmemory.au3 ist der typ dann dword (?). was ja UDINT- 32 bit enspricht ?
und ja... allgemein etwas unsicher bei diesem fall
denk einfach an adressen, die sind 4 bytes lang.
und ein pointer ist nichts anderes als eine variable die die adresse einer anderen enthält.
also liest du den wert aus, der in dieser variable gespeichert ist, addierst das offset und hast die adresse, von der du auslesen willst (lässt sich natürlich beliebig oft für multi lvl pointer wiederholen)
entschuligung, dass ich so spät antworte, hatte bisher keine möglichkeit dazu. vielen dank für die schnelle und gute hilfe
ja ich kam wie auch ihr drauf, dass die referenz fehlte. zmd beim lesen, beim schreiben wäre dies ja im endeffekt egal. Vielen dank nochmal
folgend der final code, falls den noch wer braucht.
beispielaufruf
Code:
unsigned int adr_death = 0x0000;
int death = 0;
m_objFenster.MemoryRead(adr_death, death);
return death;
memory pointer 09/10/2012 - General Gaming Discussion - 5 Replies hi, i was wondering if any1 got the latest memory pointer for hero online schlatterbot becuz i had a few friends who were familiar with cheat engine and they still can't figure out the code for it. any help would be great thank you
[VB.NET] Need help - memory reading from pointer 09/03/2010 - .NET Languages - 2 Replies Hi,
i'm kinda beginner in memory editing, the only experience i got is vb6 and vb.net - and basic CE skills. However i could get the pointer and the offset for a memory address, it works, tested.
Next step is the reading of this value with a vb.net application. I have been googleing for 2 days, got some codes, wrote some by myself, but none of them seems to work.
Could anyone help me a bit?
Thank you,
Regards
Memory Read + Pointer 10/14/2009 - AutoIt - 6 Replies Mit meinem derzeitigen SourceCode kann ich nur die dynamische Adressen auslesen... http://img243.imageshack.us/img243/7495/ce1.jpg -> http://img243.imageshack.us/img243/3381/45455181.j pg
Wenn ich aber versuchen den Pointer auszulesen http://img517.imageshack.us/img517/2683/13945157.j pg(Pointer + Offset) kommt ein völlig anderes Ergebniss raus...
Kann mir jemand weiterhelfen? ;)