Antwort schreiben

Online-tutorials.net Forenübersicht/C++ / C#/Speicherzugriff auf flyff

Antwort schreiben
Username: Username: Passwort: Password vergessen?
Beitragssymbol:   Kein Symbol    
Funktionen:
Weitere Smiley's
                       
Lachend attention cry keep cool question happy laugh tongue Lachend attention cry keep cool question happy laugh tongue
Betreff:
Keywords: (Stichworte, die das Thema beschreiben)
Beitrag:
Optionen: E-Mail Benachrichtigung
BBCode benutzen
Datei anhängen: Erlaubt: rar zip pdf txt gif bmp jpg jpeg png

Bearbeitungshilfe...
Schauen Sie am besten in der wikipedia nach, falls Sie sich über einen Begriff nicht im klaren sind.

Mit einem klick auf Send bestätigen Sie, das Sie die Nutzungsbedingungen gelesen haben, und das Sie damit einverstanden sind.

Themenübersicht
(absteigend nach Datum sortiert)
Author Beitrag
Simon HechtJa buffer ist der Wert, der gefunden wurde. Allerdings wird es je nach Speicherbedarf des Programms viele Werte finden. Darum gehst du so vor:

Im Spiel holst du dir deine Lebenspunktanzahl, du fragst buffer nach dem Wert ab. -> du findest einige Adressen die du dir in einer Liste merkst.

Jetzt gehst du wieder in das Spiel und änderst die Lebenspunktanzahl -> du durchsuchst die Adressen nochmal nach dem wert und filterst damit die Adressen die sich wieder geändert haben.

Das machst du so lange bis du nur noch eine Adresse hast. Normalerweise reicht ein durchgang.

Die Adresse kannst du jetzt verändern: char *adresse = start;
*adresse = 15; //neuer wert

Ich hoffe das hilft dir, tut mir leid das ich erst jetzt antworte.

Melanvielen dank jetz gehts.
Dann noch 2 fragen.
buffer ist der Wert für den gesucht wird sehe ich das richtig?
Wie kann ich das bewerkstelligen das ich z.b. machen kann
if (HP<50) then food. also food weiß ich aber Hp<50
muss ich dann die addresse auf der der wert der hp gefunden wurde
mit 50 vergleichen oder wie komm ich von der addresse
auf den wert, der auf dieser addresse liegt?
danke

Simon HechtHallo Melan,

Dein Programm schließt sich sofort weil es fertig ist.

[code]
cin.clear();
cin.ignore(cin.rdbuf()->in_avail());
cin.get(); [/code]

vor return 0; in der main Funktion sollte das Programm offen halten. Wenn es offen bleibt kannst du nachschauen was nicht in Ordnung ist, bei if(!hWnd) solltest du allerdings noch eine Fehlermeldung zurückgeben, und ebenfalls wie oben mit cin.get() einen Tastendruck abfragen damit das Programm nicht geschlossen wird.

Ich hoffe das hilft dir weiter.

Gruß,
Simon

MelanHuhu,
ich habe die tutorials gemacht und wollte dann
versuchen in flyff werte auszulesen z.b. die aktuellen Hp
flyff ist sowas ähnliches wie wow
hier der code:

[code]
#include <windows.h>
#include <iostream>

using namespace std;

typedef unsigned int uint;

void GetMemMinMax(void);
void ScanMem(DWORD start, DWORD end);

HANDLE hproc;
DWORD procid;

int main(void)
{
HWND hWnd;

hWnd = FindWindow(0,"FLYFF");
if(!hWnd)
return 0;

GetWindowThreadProcessId(hWnd, &procid);
hproc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procid);
GetMemMinMax();
CloseHandle(hproc);//<-- Wichtig!
return 0;
}

void GetMemMinMax(void)
{
MEMORY_BASIC_INFORMATION mbi;
unsigned int adress = 0x400000;
do
{
VirtualQueryEx(
hproc,
(void*)adress,
&mbi,
sizeof(MEMORY_BASIC_INFORMATION)
);

if((mbi.State == MEM_COMMIT)&&
(mbi.Protect == PAGE_READWRITE)&&
(mbi.Type == MEM_PRIVATE))
{
uint start = (uint)mbi.BaseAddress;
uint end = (uint)mbi.BaseAddress+mbi.RegionSize;

cout << "Bereich: " <<
hex << start << " - " <<
hex << end;

ScanMem(start,end);
}

adress += mbi.RegionSize;
} while(adress < 0x80000000);
}


void ScanMem(DWORD start, DWORD end)
{
cout << " Bereich wird gescannt... ";
DWORD read = 0;
int buffer = 0;
for(start;start<end;start++)
{
ReadProcessMemory(
hproc,
(void*)start,
&buffer,
sizeof(int),
&read
);
if(buffer == 15)
{
cout << "Wert an " << hex << start << " gefunden!";
char choice;
cout << "Abbrechen? [j,n]";
cin >> choice;
if(choice == 'j')
return;
}
}
}
[/code]

das problem ist es bleibt nur so 2 sekunden offen und dann schlisst sich das programm ohne das etwas da steht
wäre echt nett für die Hilfe
vielen dank