memcpy

  • Hey, ich habe ein Prob, was ich nicht verstehen wieso es nicht geht,
    Ich habe ein Byte array


    Code
    1. BYTE ITA_MessageBox[ 5 ] = { 0xE9, 0x00, 0x00, 0x00, 0x00 };



    wo ich die letzen 4 byten mit
    der adresse von messagebox füllen will


    Code
    1. HMODULE hMod = LoadLibrary( "user32.dll" );FARPROC MessageBox_Addr = GetProcAddress( hMod, "MessageBoxA" );dann kopiere ich dieseDWORD NewAddr = ( DWORD )MessageBox_Addr;memcpy( ( void* ) ( ( DWORD )( &ITA_MessageBox ) + 1 ), &MessageBox_Addr, 4 );



    dann lasse ich diese in den
    client schreiben, und es kommt aus, dass der jmp nicht stimmt


    wo ist der
    fehler?



    mfg

  • Du weist, dass 0xE9 für einen relativen jmp steht? Da kann danach nicht einfach die Adresse folgen, zu der du springen willst. Die Adresse muss relativ zum nächsten Befehl zu sein. Ein absoluter jmp wäre "0xFF 0x25 Adresse des Objekts, welches die Adresse enthält, zu der gesprungen werden soll"


    Ich hoffe, dass ich dein Problem richtig verstanden habe und du damit was anfangen kannst.

  • Du weist, dass 0xE9 für einen relativen jmp steht? Da kann danach nicht einfach die Adresse folgen, zu der du springen willst. Die Adresse muss relativ zum nächsten Befehl zu sein. Ein absoluter jmp wäre "0xFF 0x25 Adresse des Objekts, welches die Adresse enthält, zu der gesprungen werden soll"


    Ich hoffe, dass ich dein Problem richtig verstanden habe und du damit was anfangen kannst.

    stimmt :tot:


    danke kann closed werden

  • Ich kann mir schon denken, was du machen willst, deswegen guck mal hier rein:
    Detour Function


    MfG

    ich brauche kein Detour



    Code
    1. BYTE* FunctionDATA = new BYTE[ Size + 5 ];BYTE ITA_MessageBox[ 5 ] = { 0xE9, 0x00, 0x00, 0x00, 0x00 };// I think this is the errormemcmp( FunctionDATA, ITA_MessageBox, 5 );





    ich will die ITA_MessageBox gerne in die FunctionData schreiben