Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 03:14

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Tutorial] Microsoft Detours

Discussion on [Tutorial] Microsoft Detours within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old 05/20/2009, 19:09   #16
 
elite*gold: 0
Join Date: May 2008
Posts: 489
Received Thanks: 210
Tut doch nicht so, ihr kranken Gestalten hängt doch selbst 24/7 auf /b/ ab.
schlurmann is offline  
Old 05/21/2009, 23:37   #17
 
LemoniscooL's Avatar
 
elite*gold: 0
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 395
Danke Schlurmann .. hat mir wenigstens beim verstehen geholfen .. allerdings bekomm ich einen komischen fehler wenn ich deinen dll code in Dev-Cpp compilen will...
und zwar:

Quote:
ISO C++ forbids casting between pointer-to-function and pointer-to-object
weisst du warum? die dll die dabei ist funktioniert ja und ich denke mal dass das der selbe code is oder? xD

greetz
LemoniscooL is offline  
Old 05/22/2009, 00:34   #18
 
elite*gold: 0
Join Date: May 2008
Posts: 489
Received Thanks: 210
Sieht aus, als ließe dich DevCpp nicht von einem elementaren Datentyp in einen Funktionszeiger casten.

Probiere mal das hier:

Code:
#include <windows.h>
#include <detours.h>

#pragma comment(lib, "detours.lib")

DETOUR_TRAMPOLINE(int WINAPI origMBox(HWND hWnd, char* lpText, char* lpCaption, UINT uType), MessageBoxA);

int WINAPI MyMBox(HWND hWnd, char* lpText, char* lpCaption, UINT uType)
{
	return origMBox(hWnd, "I've been detoured :(", ":(", uType);
}

BOOL WINAPI DllMain(HANDLE HDllHandle, DWORD Aufrufgrund, LPVOID Reserved)
{
	if(DLL_PROCESS_ATTACH == Aufrufgrund)
		DetourFunctionWithTrampoline((PBYTE)&origMBox, (PBYTE)&MyMBox);
	return TRUE;
}
schlurmann is offline  
Old 05/22/2009, 00:45   #19
 
LemoniscooL's Avatar
 
elite*gold: 0
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 395
hm .. da kommen noch viel mehr fehler xD

Quote:
In function `void* _Detours_GetVA_MessageBoxA()':
invalid conversion from `int (*)(HWND__*, const CHAR*, const CHAR*, unsigned int)'

function `int origMBox(HWND__*, char*, char*, unsigned int)':
syntax error before `{' token

At global scope:
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
syntax error before `{' token
( ja da stehen so viele "syntax error before `{' token" im error log )

als fehlerzeile wird folgende angezeigt:
Code:
DETOUR_TRAMPOLINE(int WINAPI origMBox(HWND hWnd, char* lpText, char* lpCaption, UINT uType), MessageBoxA);
//Edit
in nem anderen forum heisst es:

Quote:
Depends on what Dev-cpp installation you are talking about. If
you had downloaded Dev-cpp with MinGW ,(4.9.9.0) the binaries
(lib files) are not compatible with the linker distributed with Dev-cpp.
ich hab diese detours.h und .lib:


//Edit2

hm .. also ich bin mittlerweile soweit dass ich mir nen anderen compiler & linker geholt und configuriert hab .. nu hab ich nen anderes problem .. lol wie sollte es auch anders sein -.-
es scheint so als wäre meine detours.lib beschädigt -.-"
@schlurmann kannst du mal deine detours files uppen? ...
LemoniscooL is offline  
Old 05/22/2009, 10:18   #20
 
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
Wen du mit dem DevC++ arbeitest solltest du das
Code:
#pragma comment(lib, "detours.lib")
weglassen.

Zudem würde ich nicht mehr mit dem DevC++ arbeiten da der seit 4jahren nicht mehr aktualiesert wurde und oftmals gibt der fehler in den simplesten code aus wo keine sind. Deswegen kann ich dir nur empfehlen lade dir ne neue version vom MinGw Compiler und benutze als IDE Blocks.
Akorn is offline  
Old 05/22/2009, 11:44   #21
 
LemoniscooL's Avatar
 
elite*gold: 0
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 395
danke Akorn ich probiers mal .. wusste garnich dass DevCpp so veraltet ist .. habs nur ma im Cpp kurs benutzt und dann damit weiter gemacht .. hat bisher alles funktioniert ^.^

//Edit
hm .. die angezeigten fehler sind bei Code::Blocks immernoch die selben ....
ich hab mich, da ich denke es nun verstanden zu haben mal hingesetzt und selbst was geschrieben ..
aber .. wie solls auch anders sein .. wieder nen anderer fehler -.-

der Code:
Code:
#include <windows.h>
#include "detours.h"


int (__stdcall* InsertDateTime)(int x); //Originale Funktion

int MyInsertDateTime(int x) //Meine Funktion
{
    //Messagebox
    MessageBox(NULL, "lol", "lol", MB_OK);
    return InsertDateTime(x);
}

BOOL APIENTRY DllMain(HANDLE hInst, DWORD reason, LPVOID lpReserved)
{
    switch (reason)
    {
        case DLL_PROCESS_ATTACH:
            InsertDateTime = (int (__stdcall*)(int))DetourFunction((PBYTE)0x01006F10, (PBYTE)MyInsertDateTime);
            break;
        case DLL_THREAD_ATTACH:
            break;
        case DLL_THREAD_DETACH:
            break;
        case DLL_PROCESS_DETACH:
            DetourRemove((PBYTE)0x1006F10, (PBYTE)InsertDateTime);
            break;
    }
    return TRUE;
}

die Fehler:
Quote:
warning: ignoring #pragma comment
warning: extra tokens at end of #endif directive
In function `_Z7DllMainPvmS_':
undefined reference to `_DetourFunction@8'
undefined reference to `_DetourRemove@8'
||=== Build finished: 2 errors, 2 warnings ===|
ne dll kommt dabei trotzdem nich raus -.-"
LemoniscooL is offline  
Old 05/22/2009, 12:22   #22
 
elite*gold: 0
Join Date: May 2008
Posts: 489
Received Thanks: 210
Du kannst auch Microsoft Visual C++ Express benutzen. Das ist im Grunde, was ich im Video benutze, nur ist es kostenlos.



Detour Lib im Anhang.
Attached Files
File Type: rar Detours.rar (517.0 KB, 77 views)
schlurmann is offline  
Thanks
1 User
Old 05/22/2009, 12:47   #23
 
LemoniscooL's Avatar
 
elite*gold: 0
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 395
-.-" ich komm mir echt verarscht vor xD
also .. ich hab mir MsVC++ Express 08 geladen .. fehler bleiben immernoch die selben .. ich hab nochmal nen anderen compiler versucht (borland) da kommt wieder nen anderer fehler -.- ich glaub ich lass es .. das is mir echt zu blöd das muss doch noch anders gehen als mit detours -.-
LemoniscooL is offline  
Old 05/22/2009, 13:22   #24
 
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
Als was compilierst du das eigentlich? Als "C" oder "C++" ?

Wen man z.b. eine C++ quelldatei ".cpp" versucht mit einem C compiler zu compilieren dan kommen auch ein haufen fehlermeldungen.

kannst ja mal kucken ob es daran liegt.
Akorn is offline  
Old 05/22/2009, 13:27   #25
 
LemoniscooL's Avatar
 
elite*gold: 0
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 395
ich compilier als cpp .. daran kanns eig nich liegen
en freund meinte dass die fehler in code blocks daran liegen dass die lib nich richtig gelinkt wäre ..
könnte es daran liegen?
LemoniscooL is offline  
Old 05/22/2009, 13:37   #26
 
elite*gold: 0
Join Date: May 2008
Posts: 489
Received Thanks: 210
Ich glaube Code::Blocks oder DevCpp erlauben kein Linken über #pragma comment. Versuch's in den Projekteinstellungen oder eben mit VsC++.

Was gibt dir denn VsC++ für Errors? Ich kann mir das nicht vorstellen. Wenn du Hilfe brauchst schreib mich mal in MSN () bzw. ICQ 250173498 an, und ich gucke ob ich dir helfen kann.
schlurmann is offline  
Thanks
1 User
Old 05/22/2009, 14:00   #27
 
Atheuz's Avatar
 
elite*gold: 81
Join Date: Jul 2005
Posts: 1,921
Received Thanks: 2,239
Quote:
Originally Posted by schlurmann View Post
Was gibt dir denn VsC++ für Errors? Ich kann mir das nicht vorstellen. Wenn du Hilfe brauchst schreib mich mal in MSN () bzw. ICQ 250173498 an, und ich gucke ob ich dir helfen kann.
Dito, kann ich mir auch nicht vorstellen wieso es dort Fehler auswerfen sollte.
Eventuell hatte er kein leeres DLL Projekt genommen, sondern mit dem standard Inhalt und hats dann einfach irgendwo reinkopiert.
Atheuz is offline  
Old 05/22/2009, 14:52   #28
 
LemoniscooL's Avatar
 
elite*gold: 0
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 395
okay .. es geht nu ^.^" oh mann .. endlich xD tausend dank =)
LemoniscooL is offline  
Old 06/03/2009, 17:03   #29
 
elite*gold: 0
Join Date: Jun 2009
Posts: 5
Received Thanks: 0
Sehr hilfreiches Tutorial endlich hat mal ein Detour geklappt :P
Aber mal eine Frage zum ersten Parameter der DetourFunction, lässt sich jede WinApi Funktion so leicht hooken indem man lediglich den Namen der Funktion angibt ?
Ich hätte gedacht man muss die Adresse mit GetProcAdress aus dem Modul holen.

Und wenn ich jetzt eine "nicht-API-Funktion" hooken möchte kann ich mir doch einfach die Adresse mit z.B. IDA holen und die Adresse als Hex dann im ersten Parameter verwenden oder ?

// Edit

Ich habe jetzt mal versucht eine weitere MessageBox vor der Originalen auszugeben aber leider erfolglos :/

Quote:
int WINAPI mybox (HWND hwnd, char* lpText, char* lpCaption, UINT uType)
{
MessageBox( hwnd, "erster", "MB", uType );
return origbox( hwnd, lpText, lpCaption, uType );
}
Ist daran etwas falsch ?
volchok is offline  
Old 06/03/2009, 19:38   #30
 
elite*gold: 0
Join Date: Apr 2009
Posts: 67
Received Thanks: 83
PHP Code:
int WINAPI mybox (HWND hwndcharlpTextcharlpCaptionUINT uType)
{
    
MessageBoxhwnd"erster""MB"uType );
    return 
origboxhwndlpTextlpCaptionuType );

Das ist nicht dein Ernst, oder?
Damit erzeugst du eine endlose Rekursion und somit einen Stack Overflow...

Die ersten 5 Bytes am Offset von MessageBoxA hast du doch gerade zu einem Jump zu deiner Funktion abgeändert...
PHP Code:
int WINAPI mybox (HWND hwndcharlpTextcharlpCaptionUINT uType)
{
    
origboxhwnd"erster""MB"uType );
    return 
origboxhwndlpTextlpCaptionuType );

Ich habe schon geschrieben, dass man das nicht so High Level Language-like sehen sollte. Man kann mit der von der Detours Library bereitgestellten Funktion überall Code injizieren.

Quote:
Originally Posted by volchok
Aber mal eine Frage zum ersten Parameter der DetourFunction, lässt sich jede WinApi Funktion so leicht hooken indem man lediglich den Namen der Funktion angibt ?
Ich hätte gedacht man muss die Adresse mit GetProcAdress aus dem Modul holen.
Dadurch, dass MessageBoxA als externe Funktion definiert ist (#include <windows.h>), wird Platz für deren Adresse reserviert, der beim Laden der Dll mit der dynamisch herausgefundenen Adresse beschrieben wird.
Das heißt, dass &MessageBoxA dann diesen Wert zurückliefert.
GetProcAddress würde auf das gleiche Ziel hinauslaufen, nur hättest du damit wahrscheinlich ein paar unnötige Aufrufe und Strings mehr.
(Extra ohne Fachworte, um es leicht verständlich zu halten ;-)
RDTSC is offline  
Thanks
2 Users
Reply


Similar Threads Similar Threads
MS Detours 1.5
07/16/2010 - Kal Online - 10 Replies
hi, i'm having problem trying to compile my dll using ms detours 2.1 (not 1.5, sorry) detours.lib(detours.obj) : error LNK2001: unresolved external symbol "struct HINSTANCE__ * __stdcall Detoured(void)" (?Detoured@@YGPAUHINSTANCE__@@XZ) G:\KalOnline\d3dx9_29.dll : fatal error LNK1120: 1 unresolved externals could someone tell me how to solve it? could not google it.
Can EDX Detours be used for multibotting
06/19/2010 - SRO Private Server - 12 Replies
After editing source code can this be done? In EDX Detours thread he wrote this app can be used for another programs after tweaking the source. But i don't have any programming skills,so anyone who knows c++ please take a look at it http://www.elitepvpers.com/forum/sro-guides-templat es/308740-guide-using-windows-detours-redirect-sil kroad-proxy.html



All times are GMT +2. The time now is 03:14.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.