Hallo zusammen,
seit kurzem setze ich mich mit DLL Injection auseinander. Leider ist C nicht gerade meine Stärke, deshalb hoffe ich, dass mir jemand weiterhelfen möchte.
Mein Vorgehen:
Ich versuche die advapi32.dll zu hooken. Hierzu habe ich eine badapi.c erstellt:
Die Funktionsumleitungen befinden sich in einer badapi.def:
Das ganze wird zur badapi32.dll compiliert. Die Header der "anzugreifenden" Executable hab ich gepatch, so dass statt advapi32.dll meine badapi32.dll aufgerufen wird. Funktioniert soweit alles einwandfrei, die MessageBox erscheint, aber dann crasht die Executable.
Nun zu meinen Fragen:
Leider bin ich in C ein totaler Noob. Nach Aufruf meiner gehookten Funktion _CryptDecrypt möchte ich den Inhalt von pbData per MessageBox ausgeben, anschließend advapi32.CryptDecrypt aufrufen und den neuen Inhalt von pbData ausgeben. Zu guter letzt müssen die erhaltenen Werte natürlich an die gehookte Executable zurückgegeben werden, damit diese nicht crasht. Wie mache ich das am Besten? Hab jetzt einige Stunden erfolglos gestestet und finde leider keine passenden Tutorials. Kann mir jemand weiterhelfen?
seit kurzem setze ich mich mit DLL Injection auseinander. Leider ist C nicht gerade meine Stärke, deshalb hoffe ich, dass mir jemand weiterhelfen möchte.
Mein Vorgehen:
Ich versuche die advapi32.dll zu hooken. Hierzu habe ich eine badapi.c erstellt:
Code:
#include <windows.h>
#pragma comment(lib, "user32")
#pragma comment(lib, "advapi32")
void
_CryptDecrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen)
{
MessageBox(0, "Test", "Decrypt wird aufgerufen", 0);
}
Code:
LIBRARY
EXPORTS
RegQueryValueExA=advapi32.RegQueryValueExA
RegOpenKeyExW=advapi32.RegOpenKeyExW
RegOpenKeyExA=advapi32.RegOpenKeyExA
CryptDecrypt=_CryptDecrypt
CryptEncrypt=advapi32.CryptEncrypt
CryptReleaseContext=advapi32.CryptReleaseContext
CryptDestroyKey=advapi32.CryptDestroyKey
CryptDestroyHash=advapi32.CryptDestroyHash
CryptDeriveKey=advapi32.CryptDeriveKey
CryptHashData=advapi32.CryptHashData
CryptCreateHash=advapi32.CryptCreateHash
CryptAcquireContextW=advapi32.CryptAcquireContextW
RegCloseKey=advapi32.RegCloseKey
Nun zu meinen Fragen:
Leider bin ich in C ein totaler Noob. Nach Aufruf meiner gehookten Funktion _CryptDecrypt möchte ich den Inhalt von pbData per MessageBox ausgeben, anschließend advapi32.CryptDecrypt aufrufen und den neuen Inhalt von pbData ausgeben. Zu guter letzt müssen die erhaltenen Werte natürlich an die gehookte Executable zurückgegeben werden, damit diese nicht crasht. Wie mache ich das am Besten? Hab jetzt einige Stunden erfolglos gestestet und finde leider keine passenden Tutorials. Kann mir jemand weiterhelfen?