C++ Adressen zusammenfügen??

02/27/2010 21:04 schnewin#1
Hey Leute,
ich hab da mal eine Frage, undzwar möchte ich gerne ein Hack für ein Spiel schreiben, nur man bekommt über CE keine Pointer raus, da es ein Privat-Server ist, aber wenn man oneHit Hack haben will, sind die letzten 4 Ziffer der Adresse IMMER gleich, nur nach jeden Neustart des spiels ändern sich die ersten 4 Ziffern.
Jetzt habe ich ein Programm geschrieben, das den gewünschten Wert an die Adresse, in einer While Schleife, schreibt.
Gibt es eine Möglkichkeit, das der User die ersten 4 Ziffer(0254) am Anfang des Programmes reinschreibt, dann wählt er Speedhack(0A00) aus und die ersten 4Ziffer von dem User(0254) werden dann zu den anderen 4 Ziffern des Speedhacks(0A00) gemacht(Adresse gesamt 02540A00)?


MFG
02/28/2010 00:35 Xereon#2
0x02540000 + 0xA00
02/28/2010 01:41 MrSm!th#3
Code:
DWORD MakeDWORD(WORD lo, WORD hi)
{
    DWORD ret = hi;
    ret = ret << 16;
    ret += lo;
    return ret;
}

DWORD addr = MakeDWORD(0x0A00,input);
02/28/2010 13:29 flo8464#4
Abgesehen davon, dass Endianess hier wohl niemanden interessiert, würde ich einfach Mist ein bischen reversen... ;)
02/28/2010 13:41 schnewin#5
Quote:
Originally Posted by Xereon View Post
0x02540000 + 0xA00
Hab hab deine Methode mal angewendet, und mein COde sieht so aus:
PHP Code:
        cout << "Bitte geben Sie die ersten 4 Ziffern ein, mit 0x davor und 4 mal 0 am Ende, z.B. 0x02650000: " << endl;
        
cin >> eingabe;
        
erg eingabe 0xA00;
        
cout << erg << endl;
        
system("PAUSE"); 
Aber das Ergebnis lautet: 2560, und nicht 0x02650A00 wie es eig sein sollte.

@MrSm!th: Deine Methode will irgendwie nicht funktionieren.

@flo: Wie würdest du das den reversen? Ich hab damit nicht so viel Ahnung. Meinst du mit OllyDbg die Adressen rausfinden??

Aber Danke für eure Hilfe
02/28/2010 14:01 MrSm!th#6
Quote:
Originally Posted by flo8464 View Post
Abgesehen davon, dass Endianess hier wohl niemanden interessiert, würde ich einfach Mist ein bischen reversen... ;)
dazu habe ich mal eine frage:
windows läuft doch normalerweise mit der little Endian darstellung oder nicht?
d.h. dieses verschieben der bits ist nicht nötig, da dies ja bei der big endian darstellung gemacht wird.
aber warum sind dann die makros wie MAKEWORD genau so mit bitverschiebung implementiert?


@TO:

wieso, was wird denn ausgegeben?
02/28/2010 14:21 schnewin#7
Diese Fehlermeldung bekomme ich.
Ich denke mal, dass ich deinen Code falsch anwende. Könntest du vllt erklären, was dein Code macht an den Stellen??

So sieht mein Code aus
02/28/2010 14:40 MrSm!th#8
Quote:
Originally Posted by schnewin View Post
Diese Fehlermeldung bekomme ich.
Ich denke mal, dass ich deinen Code falsch anwende. Könntest du vllt erklären, was dein Code macht an den Stellen??

So sieht mein Code aus
-.-"

Kannst du C++ überhaupt?
Ich würde mal sagen nein, sonst würdest du die Fehlermeldung verstehen.
Du kannst meine Funktion nicht in der Main definieren, du musst sie außerhalb der main definieren und dann in der Main aufrufen.
Noch dazu ist "input" pseudocode.
Da soll der Input vom user eingefügt werden


hier mal extra ein C&P code:

PHP Code:
DWORD MakeDWORD(WORD loWORD hi)
{
    
DWORD ret hi;
    
ret ret << 16;
    
ret += lo;
    return 
ret;
}

int main()
{
    
WORD input;
    
std::cin >> std::hex >> input;
    
DWORD addr MakeDWORD(0x0A00,input);

02/28/2010 14:46 schnewin#9
Öhm.. ich bin am lernen von C++, ich bin eig mit dem Buch nochnicht soweit. Das einzige was ich kann sind die Grund Sachen mehr aber auch nicht. :3
Aber ich danke euch, ich werde dein Code mal ausprobieren.
Hab den Code überarbeitet und er gibt mir die Adresse 2560 aus. o.o
02/28/2010 14:49 MrSm!th#10
Quote:
Originally Posted by schnewin View Post
Öhm.. ich bin am lernen von C++, ich bin eig mit dem Buch nochnicht soweit. Das einzige was ich kann sind die Grund Sachen mehr aber auch nicht. :3
Aber ich danke euch, ich werde dein Code mal ausprobieren.
Aber zumindest, dass man keine Funktion in einer Funktion definieren kann, solltest du doch wissen.
Ich hab übrigens meinen Post editiert und einen fertigen Code eingefügt.
Bin aber nicht sicher, ob std::cin den typ WORD unterstützt...
wenn nicht, nimm einfach unsigned short (ist das gleiche)