[C++]NotePadDetour

12/31/2010 14:25 .BritainAndy#1
Hi ihr lieben Coders,
ich bin grad dabei ein wenig C++ zu lernen, bzw mich weiter zu bilden.

Dann sha ich auf gamedeception ein nettes tutorial zum Thema Detouring.

Als beispiel wurde notepad.exe genommen.

So dann hab ich das mal gemacht, nur ich bekomm halt einen error

HTML Code:
LINK : fatal error LNK1104: Datei "detours.lib" kann nicht geöffnet werden.
Dann googelte ich nach detours.lib, hab aber nichts gescheites gefunden. Könntet ihr mir helfen?

Hier meine main.cpp

[Only registered and activated users can see links. Click Here To Register...]

und hier die Detours.h

[Only registered and activated users can see links. Click Here To Register...]



LG

Edit:

Zur info (auszug aus IDA)

start address 0x0100978A

int __stdcall InsertDateTime(int x)
12/31/2010 15:37 Bot_interesierter#2
Du musst die detours.lib in einem Verzeichnis liegen haben dass in deinem Projekt als Librarydirectory angegeben ist, sonst findet der Linker sie natürlich nicht.
Aber nach deinem Text zuschließen hast du überhaupt keine detours.lib, also wird das auch nichts werden...
Nebenbei bemerkt würde es dir nicht schaden auch mal die Stickys zu lesen, denn dann hättest du schon längst diese Seite hier gefunden [Only registered and activated users can see links. Click Here To Register...]
12/31/2010 15:42 .BritainAndy#3
Quote:
15:38 <Disconnect> andy, ich glaube du musst detours.h zuerst als statische library (.lib datei) compilen und dann dein programm mit der lib verlinken
So, jetzt muss ich also googlen wie ich header dateien kompiliere
12/31/2010 15:53 Bot_interesierter#4
Quote:
Originally Posted by .BritainAndy View Post
So, jetzt muss ich also googlen wie ich header dateien kompiliere
Hast du dir eigentlich mal den Quelltext in der detours.h durchgelesen?
Von den entscheidenten Funktionen sind dort nur Prototypen, der Header alleine wird dir nichts nützen.
Da ich die Lizenzbedingungen von Detours 1.5 gerade nicht im Kopf habe werde ich dir die Datein nicht hochladen, mit Google müsstest du ohne schwierigkeiten den kompletten Quellcode von Detours 1.5 finden können.

Ich rate dir aber dringend dich ersteinmal über die Sprache die du benützt zu informieren und über deine IDE.
12/31/2010 17:22 .BritainAndy#5
Okay, vielen dank.
Hab jetzt alles.

Nur wenn ich jetzt als Release debuggen möchte und somit die DLL erstellen möchte, bekomm ich immer den Error das "Das Programm "PFAD\DeoutEditor.dll" kann nicht gestartet werden,
12/31/2010 18:06 Bot_interesierter#6
Quote:
Originally Posted by .BritainAndy View Post
Okay, vielen dank.
Hab jetzt alles.

Nur wenn ich jetzt als Release debuggen möchte und somit die DLL erstellen möchte, bekomm ich immer den Error das "Das Programm "PFAD\DeoutEditor.dll" kann nicht gestartet werden,
Versuchs mal mit erstellen statt debuggen ^^
Und lies bitte endlich das Handbuch zu VisualStudio.
Natürlich kann VisualStudio keine dlls ausführen, dlls sind keine Executables, sie müssen von einer Executable geladen werden, erst dadurch wird die DllMain aufgerufen.
01/01/2011 15:15 .BritainAndy#7
Vielen Dank!

Nur wenn ich injecte, passiert nichts wenn ich bei Notepad Bearbeiten --> Uhrzeit/Datum

Drücke.

Eigtl sollte dann ja die MSGBOX kommen wenn ich die DLL injectet habe und auf Bearbeiten --> Uhrzeit/Datum drücke.

Ist da was am Code falsch?

edit:

Ich habs nun.

Und es funkt.(erstmal nen einfahc detour gemacht - danke an ende :D mein compiler is cool :D)

PHP Code:
// dllmain.cpp : Definiert den Einstiegspunkt für die DLL-Anwendung.
#include "stdafx.h"
#include <detours.h>

//Original
typedef int(__stdcall *oMessageBoxA)(HWNDLPCTSTRLPCTSTRUINT);
oMessageBoxA pMessageBoxA NULL ;

//Unsere function
int __stdcall hkMessageBoxA(HWND hWndLPCTSTR szTextLPCTSTR szTitleUINT nType
{
    
MessageBox(NULLL"It works!"L"Yeah, it works"MB_OK);

    return 
pMessageBoxA(hWndszTextszTitlenType) ;
}

BOOL APIENTRY DllMainHMODULE hModule,
                       
DWORD  ul_reason_for_call,
                       
LPVOID lpReserved
                     
)
{
    switch (
ul_reason_for_call)
    {
    case 
DLL_PROCESS_ATTACH:
        
MessageBox(NULLL"It works!"L"Yeah, it works"MB_OK);
        
pMessageBoxA = (oMessageBoxA)DetourFunction((PBYTE)&MessageBoxA, (PBYTE)hkMessageBoxA) ;
        break;
    case 
DLL_PROCESS_DETACH:
        
DetourRemove((PBYTE)&MessageBoxA, (PBYTE)hkMessageBoxA) ;
        break ;
    }


    return 
TRUE;