Api-Hooking -- Schreibt keinen Code in die Funktion (Es gibt keine Fehlermeldung )
-
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_ADDRESSLoadlibrary 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