Api-Hooking -- Schreibt keinen Code in die Funktion (Es gibt keine Fehlermeldung )



  • Wenn Du so "schwierige" Sachen machen willst, dann musst Du Dich da halt etwas einarbeiten und am besten noch die Doku zu den Funktionen lesen... ich sag nur: "Pages".
    Und mein Hinweis mit den "5 bytes" kopieren ohne den ASM-Code zu analysieren hast Du auch noch nicht befolgt... wenn es je gehen sollte, dann ist es zufall und kann sich beim nächsten ServicePack/Hotfix ändern bzw. bei anderen OS-Versionen wird es nicht gehen.



  • Jede API Funktion fängt afaik mit 2x2 bytes und 1x1 byte an 😉
    Naja ich werd mal schaun!



  • Xalon_ schrieb:

    Jede API Funktion fängt afaik mit 2x2 bytes und 1x1 byte an 😉

    😕



  • Na es passt also einfach die ersten 5 Bytes zu sichern 😉
    Man reißt dadurch keine Befehle auseinander!
    Aber Back to Topic:
    Ich find im Netz nichts!Anscheinend klappt bei jedem anderen VirtualProtect...
    Wär echt nett von dir wenn du mir weiterhelfen könntest!

    Danke im voraus,
    Xalon



  • Xalon_ schrieb:

    Na es passt also einfach die ersten 5 Bytes zu sichern 😉

    Nein.

    Xalon_ schrieb:

    Ich find im Netz nichts!Anscheinend klappt bei jedem anderen VirtualProtect...
    Wär echt nett von dir wenn du mir weiterhelfen könntest!

    Eigentlich ist es ja ganz simpel. Man liest sich die MSDN-Doku dazu durch, und dann würdest Du sofort sehen, was Du falsch machst...

    lpAddress
    [in] Pointer to the base address of the region of pages whose access protection attributes are to be changed



  • if(!VirtualQuery((void*)temp_addr2,&mbi,sizeof(MEMORY_BASIC_INFORMATION)))
        MessageBox(GetForegroundWindow(),"VirtualQuery","VirtualQuery",MB_OK); 
    
      if(!VirtualProtect((void*)mbi.BaseAddress, mbi.RegionSize, PAGE_EXECUTE_READWRITE, &dwOldProtect))
        MessageBox(GetForegroundWindow(),"VirtualProtect","VirtualProtect",MB_OK);
    

    Das hab ich leider auch schon versucht 😞
    VirtualQuery wird auch ausgeführt...
    Aber VirtualProtect nicht!

    Warum passt es denn nicht einfach die ersten 5 Bytes zu nehmen?

    Xalon

    P.S:Danke das du mir hilfst 🙂



  • Xalon_ schrieb:

    Warum passt es denn nicht einfach die ersten 5 Bytes zu nehmen?

    Da es einige Routinen gibt, die nicht mit 5 "passenden" ASM-Bytes anfangen... (schau einfach mal z.B. mittels windbg nach)...
    Bsp:
    - DbgPrint
    - GetStartupInfoA
    - GetEnvironmentStringsW
    - InterlockedExchange
    - InterlockedExchangeAdd



  • Das ist mir schon klar aber ich will ja nur eine Funktion Hooken 😉
    Und da schau ich dann immer mit OllyDBG nach!

    Du weißt nicht warum VirtualProtect immernoch nicht funktioniert,oder?

    Danke im voraus,
    Xalon



  • Mach es doch zuerst mal mit Deinem eigenen Prozess und dann kannst Du schön debuggen und du kannst auch GetLastError auswerten...



  • Ahh...GetLastError von VirtualProtect gibt mir

    487
    ERROR_INVALID_ADDRESS

    Loadlibrary und GetProcAddress funktionieren aber einwandfrei!
    Ich hab die zurückgegebene Adresse sogar nochmal mit Olly geprüft und es ist definitiv die von MessageBoxA!

    Der Fehler muss also im ersten Parameter von VirtualProtect liegen!
    mbi.BaseAddress0 = 0x7777b000
    mbi.RegionSize = 4608000 !
    Ich kann leider keinen Fehler finden 😞
    VirtualQuery funktioniert übrigens auch (laut Rückgabewert 😉 )
    oder ... hmmm ... daran könnte es doch liegen,aber da finde ich leider auch
    keinen Fehler!

    Ich hab jetzt hier im Forum und in Google gesucht aber leider nichts gefunden
    warum VirtualProtect ERROR_INVALID_ADDRESS zurückgibt ... 😞

    Ich hoffe du kannst mir helfen und das deine Nerven nicht an mir ... verrecken 😃

    Danke im voraus,
    Xalon



  • *push*
    Will mir keiner helfen?



  • Jochen Kalmbach schrieb:

    Mach es doch zuerst mal mit Deinem eigenen Prozess

    Hast du das mal gemacht? Wenn das dann klappt weisst du wenigstens schon mal daß es irgendwas mit dem anderen Prozeß zu tun hat und nicht ein grundsätzliches Problem in deinem Code ist.



  • Ja,das hab ich schon ,ich hab quasi meine eigene Funktion gehookt!
    Hat auch gefunzt,nur VirtualProtect...will nicht 😞

    Danke im voraus,
    Xalon



  • Xalon_ schrieb:

    Ja,das hab ich schon ,ich hab quasi meine eigene Funktion gehookt!
    Hat auch gefunzt,nur VirtualProtect...will nicht 😞

    Ja was jetzt? Hat´s lokal gefunzt oder nicht?
    Was für ein OS?



  • Ja Lokal hats unter WinXP geklappt!
    Drum mein ich ja das mich (hoffentlich) nur noch VirtualProtect hindert!

    Xalon

    P.S:Das war auch nicht lokal...Ich hab mit OpenProcess und Write/Readprocessmemory gepatcht!



  • PS: Warum verwendest Du nicht was fertiges?
    http://research.microsoft.com/sn/detours/



  • Hmm ja das hab ich auch schon in Google gefunden,und nicht nur das somdern noch
    einige mehr,aber ich würde mir das ganze trotzdem lieber selber schreiben,dann
    kann ich wenigstens sagen :"Ich beherrsche API Hooking" und nicht "Ich kann DLLs
    einbinden o.O"
    Das is überhaupt einer der Gründe warum ich programmier,die meisten Programme gibts
    auch im Netz aber wenn ichs selber mach weiß ich wenigstens was ich hab!
    Ich glaube das ist überhaupt für viele ein Grund warum sie Programmieren.

    Danke im voraus,
    Xalon



  • Nach dem Thread zu Urteilen, machst es nicht Du, sondern ich... :p



  • Hmm ja...jein 😃
    Lokal hab ich ja alles geschafft,aber bei dem Virtual Protect bin ich wohl auf
    Hilfe angewiesen 😞

    Danke im voraus,
    Xalon


Anmelden zum Antworten