|
You last visited: Today at 21:58
Advertisement
[C++]NotePadDetour
Discussion on [C++]NotePadDetour within the C/C++ forum part of the Coders Den category.
12/31/2010, 14:25
|
#1
|
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
|
[C++]NotePadDetour
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
und hier die Detours.h
LG
Edit:
Zur info (auszug aus IDA)
start address 0x0100978A
int __stdcall InsertDateTime(int x)
|
|
|
12/31/2010, 15:37
|
#2
|
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
|
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
|
|
|
12/31/2010, 15:42
|
#3
|
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
|
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
|
#4
|
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
|
Quote:
Originally Posted by .BritainAndy
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
|
#5
|
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
|
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
|
#6
|
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
|
Quote:
Originally Posted by .BritainAndy
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
|
#7
|
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
|
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  mein compiler is cool  )
PHP Code:
// dllmain.cpp : Definiert den Einstiegspunkt für die DLL-Anwendung.
#include "stdafx.h"
#include <detours.h>
//Original
typedef int(__stdcall *oMessageBoxA)(HWND, LPCTSTR, LPCTSTR, UINT);
oMessageBoxA pMessageBoxA = NULL ;
//Unsere function
int __stdcall hkMessageBoxA(HWND hWnd, LPCTSTR szText, LPCTSTR szTitle, UINT nType)
{
MessageBox(NULL, L"It works!", L"Yeah, it works", MB_OK);
return pMessageBoxA(hWnd, szText, szTitle, nType) ;
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
MessageBox(NULL, L"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;
}
|
|
|
All times are GMT +1. The time now is 22:00.
|
|