detours 2.1 VC 6においてコンパイル方法及びソースコード及び使用例及びコンパイルされたBIN
detours 2.1 VC 6においてコンパイル方法及びソースコード及び使用例及びコンパイルされたBIN
ダウンロードhttp://download.csdn.net/detail/chinafe/4424305
http://download.csdn.net/detail/chinafe/4424305
1.純VC 6環境において、win 32 static libraryプロジェクト名をdetoursとする.
2.detours 2.1 scrディレクトリのソースファイルをすべてプロジェクトに追加します.
3.Project->Seting->C/C+->Processor definitionsにDETOURS_を追加します.X 86
4.プロジェクトの中でdetoured.cppを開いて、中のDllMain関数名をLengFengに変更します.(そうでないと使用時にDllMain衝突が発生します.)error LNK 2005:_DllMain@12already defined in*.obj
5.直接コンパイルすればdetours.libが生成できます.
6.必要な項目にdetours.libとdetours.hを使えばいいです.
7.添付ファイルにコンパイルされたdetours.libとシステムソースコードが提供されています.
注意:SDKがインストールされていない環境でコンパイルが必要です.SDKがインストールされている場合は、SDKの順番を最後まで調整してください.
detour_2.1
ソースのために
detours_ビン
BINのために
chooksend
例として
2012-7-12冷たい風QQ 121212606
サンプルコード
ダウンロード
http://download.csdn.net/detail/chinafe/4424305
ダウンロードhttp://download.csdn.net/detail/chinafe/4424305
http://download.csdn.net/detail/chinafe/4424305
1.純VC 6環境において、win 32 static libraryプロジェクト名をdetoursとする.
2.detours 2.1 scrディレクトリのソースファイルをすべてプロジェクトに追加します.
3.Project->Seting->C/C+->Processor definitionsにDETOURS_を追加します.X 86
4.プロジェクトの中でdetoured.cppを開いて、中のDllMain関数名をLengFengに変更します.(そうでないと使用時にDllMain衝突が発生します.)error LNK 2005:_DllMain@12already defined in*.obj
5.直接コンパイルすればdetours.libが生成できます.
6.必要な項目にdetours.libとdetours.hを使えばいいです.
7.添付ファイルにコンパイルされたdetours.libとシステムソースコードが提供されています.
注意:SDKがインストールされていない環境でコンパイルが必要です.SDKがインストールされている場合は、SDKの順番を最後まで調整してください.
detour_2.1
ソースのために
detours_ビン
BINのために
chooksend
例として
2012-7-12冷たい風QQ 121212606
サンプルコード
ダウンロード
http://download.csdn.net/detail/chinafe/4424305
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include "detours.h"
#pragma comment(lib,"detours.lib")
static LONG dwSlept = 0;
// Target pointer for the uninstrumented Sleep API.
//
static VOID (WINAPI * TrueSleep)(DWORD dwMilliseconds) = Sleep;
// Detour function that replaces the Sleep API.
//
VOID WINAPI TimedSleep(DWORD dwMilliseconds)
{
// Save the before and after times around calling the Sleep API.
DWORD dwBeg = GetTickCount();
TrueSleep(dwMilliseconds);
DWORD dwEnd = GetTickCount();
InterlockedExchangeAdd(&dwSlept, dwEnd - dwBeg);
}
// DllMain function attaches and detaches the TimedSleep detour to the
// Sleep target function. The Sleep target function is referred to
// through the TrueSleep target pointer.
//
BOOL WINAPI DllMain(HINSTANCE hinst, DWORD dwReason, LPVOID reserved)
{
if (dwReason == DLL_PROCESS_ATTACH) {
DetourRestoreAfterWith();
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)TrueSleep, TimedSleep);
DetourTransactionCommit();
}
else if (dwReason == DLL_PROCESS_DETACH) {
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourDetach(&(PVOID&)TrueSleep, TimedSleep);
DetourTransactionCommit();
}
return TRUE;
}