Wenn es dir nur um "call 0x11223344" geht, könntest du wie folgt vorgehen:
Du schreibst dir eine Funktion, die als Parameter den Anfang des Codes und die Länge entgegen nimmt. Dann überprüfst du das erste Byte des Codes auf 0xE8, um bei Übereinstimmung die nächsten vier Bytes auf die momentane Adresse + 5 zu addieren und sie dann mit deiner gesuchten Adresse vergleichen zu können. Wenn es sich nicht um 0xE8 handelt oder die Adresse nicht die gesuchte ist, rufst du einen Length Disassembler wie z.B. mlde32 mit der momentanen Adresse auf, der dir dann die Länge der Instruktion zurückgibt, sodass du diese überspringen kannst und an der nächsten landest, die du dann wieder auf 0xE8 überprüfst.
Bei statischer Analyse kannst du halt auch nur mit statischen Adressen arbeiten und sowas wie "call eax" oder "call [eax]" fällt dann natürlich direkt aus den Möglichkeiten..
"call [0x11223344]" könntest du noch mit einbeziehen, indem du das erste Byte auf 0xFF und das zweite auf 0x15 (disp32-addressing, reg=2) überprüfst, die nächsten vier Bytes dann als absolute Adresse nimmst, aus dieser dann die Adresse, die gecallt wird, und sie mit deiner vergleichst.
Solch ein Call könnte allerdings auch mit dem SIB-Byte kodiert werden, sodass du das zweite Byte auf 0x14 und das dritte noch auf 0x25 überprüfen müsstest und erst dann die Adresse als DWORD kommt. Ist aber eher ungewöhnlich, da der Befehl halt unnötigerweise ein Byte größer ist.
Du könntest aber auch OllyDbg und dann Strg + R (Find References) benutzen.
Wenn es dir nur um "call 0x11223344" geht, könntest du wie folgt vorgehen:
Du schreibst dir eine Funktion, die als Parameter den Anfang des Codes und die Länge entgegen nimmt. Dann überprüfst du das erste Byte des Codes auf 0xE8, um bei Übereinstimmung die nächsten vier Bytes auf die momentane Adresse + 5 zu addieren und sie dann mit deiner gesuchten Adresse vergleichen zu können. Wenn es sich nicht um 0xE8 handelt oder die Adresse nicht die gesuchte ist, rufst du einen Length Disassembler wie z.B. mlde32 mit der momentanen Adresse auf, der dir dann die Länge der Instruktion zurückgibt, sodass du diese überspringen kannst und an der nächsten landest, die du dann wieder auf 0xE8 überprüfst.
Bei statischer Analyse kannst du halt auch nur mit statischen Adressen arbeiten und sowas wie "call eax" oder "call [eax]" fällt dann natürlich direkt aus den Möglichkeiten..
"call [0x11223344]" könntest du noch mit einbeziehen, indem du das erste Byte auf 0xFF und das zweite auf 0x15 (disp32-addressing, reg=2) überprüfst, die nächsten vier Bytes dann als absolute Adresse nimmst, aus dieser dann die Adresse, die gecallt wird, und sie mit deiner vergleichst.
Solch ein Call könnte allerdings auch mit dem SIB-Byte kodiert werden, sodass du das zweite Byte auf 0x14 und das dritte noch auf 0x25 überprüfen müsstest und erst dann die Adresse als DWORD kommt. Ist aber eher ungewöhnlich, da der Befehl halt unnötigerweise ein Byte größer ist.
Du könntest aber auch OllyDbg und dann Strg + R (Find References) benutzen.
Er will kein Tool zum Suchen schreiben bzw. eins haben, sondern ein Tool, das ihm die Call Instruction in Opcodes übersetzt, damit er die per CheatEngine suchen kann.
Achso, um mit CE dann nach den Hex-Werten zu suchen.
Aber da ein Call ja relativ ist, wird das nicht möglich sein. Deswegen entweder ein eigenes Tool schreiben oder z.B. OllyDbg verwenden.
Ich find es ohnehin irgendwie unnötig, dafür extra ein eigenes Tool zu schreiben, gibt doch schon genug Tools wie Olly Plugins etc.
Ansonsten, wie du schon sagtest, wird eine eigene Dll notwendig sein, die den Speicher nach Calls zur Adresse durchsucht.
Ok leute ich habs jetzt rausgefunden.
Pinki hat mir nen gedankenstoß gegeben.
Bei Jumps: Addy Des jumps - Addy zu der gejumpt wird -5. Und bei dem ergebnis alle bytes umdrehen.
Bei Mov: Addy die beschrieben wird einfach umdrehen. Und dahinter den wert auch umdrehen.
Bei Call: Ähnlich wie bei Jumps
WPE PRO 500 byte limit. 12/27/2011 - Off Topic - 0 Replies Hi.
Ich arbeite im moment mit Packeten in einem Game.
Ich möchte ein Packet bearbeiten, welches ca. 2000 bytes lang ist.
Im PacketChanger von WPE Pro ist aber ein Limit von 500 bytes gesetzt.
Kennt einer eine alternative zu WPE Pro, womit ich ein Packet dieser größe modifizieren kann?
Byte, Bit 12/07/2011 - Off Topic - 2 Replies was ist der unterschied zwischen bit und byte ?
Mega Byte, Pls Help me, Pls 12/07/2011 - 12Sky2 - 20 Replies MegaByte, I tried to follow step by step your tutorial about attack speed, but there are people like you who are enlightened to this area of informatica and people like me who are simply turned off
if I'm right, the new direction of Attack Speed Buff is: 011A1B78
Please, Please, Please, could you tell me the two directions that we should put in 90 90
date? please please please. I thank you and really admire very much your ability! and good,
say you're a genius and have all my admiration!...
Tchar to byte 02/22/2011 - General Coding - 2 Replies Hey,
can anyone help me to convert TCHAR to BYTE in C++?=/
mfg