[c++]hooks

11/02/2009 12:54 Tyrar#1
brauche hilfe bei meinen hooks!
ms detours will ich nich benutzen (vorallem weil die nich für meine zwecke laufen :D), ausserdem um weiterzu lernen eigenes system schreiben!
mein problem is wenn ich in einer funktion die ersten 5 bytes mit jmp dword [subfunc] überschreibe, und z.b. das 2 byte auch nen jmp dword ist, bleibt am ende 1 byte über!
in meiner subfunc speicher ich die register mit pushad, call [hook], popad, den überschriebenen code hier einfügen, und dann jmp [originaladdy+5]....
11/02/2009 12:59 wurstbrot123#2
Meinst du es bleibt ein Byte über wo du den Jump zu deiner Funktion hinpackst ?
DH der original Code dort ist 6 Bytes groß ?
Wenn ja musst du den Byte der übrig bleibt noppen also das letzte Byte das übrig bleibt mit 0x90 überschreiben.
11/02/2009 13:34 Tyrar#3
Quote:
Originally Posted by wurstbrot123 View Post
Meinst du es bleibt ein Byte über wo du den Jump zu deiner Funktion hinpackst ?
DH der original Code dort ist 6 Bytes groß ?
Wenn ja musst du den Byte der übrig bleibt noppen also das letzte Byte das übrig bleibt mit 0x90 überschreiben.
joa das wär auch ne möglichkeit, aber dann is der code ja trotzdem corrupted....
jmp = 1 byte (0xE9), und dword = 4 byte!
das bedeutet also wenn ich an erster stelle nop (0x90) habe, an zweiter stelle jmp (0xE9), und dann nen dword, kopiere ich nur nop, jmp, und 3 von 4 bytes des dwords!
bedeutet also dass der kopiert jump dann das ganze programm verrecken lässt!
deswegen bräuchte ich ja nen disassembler der z.b. ne stuct zurückgibt:
Code:
struct opCode
{
char* name; // z.b. NOP
long len; // bei nop = 1
dword address; // long == dword?!
};