-
大小: 570KB文件类型: .rar金币: 1下载: 0 次发布日期: 2021-06-11
- 语言: C/C++
- 标签: detoursbin
资源简介
detours2.1在vc6中编译方法
1.在纯VC6环境中新建 win32 static library 项目名设为detours
2.把detours2.1 scr目录中的源文件全部添加到项目
3.在Project->Seting->C/C++->Preprocessor definitions中添加DETOURS_X86
4.打开项目中detoured.cpp把里面DllMain函数名修改为LengFeng(否则使用时会出现DllMain冲突)error LNK2005: _DllMain@12 already defined in ***.obj
5.直接编译就可以生成detours.lib
6.在需要的项目中使用detours.lib和detours.h 就可以了
7.附件中提供了编译好的detours.lib和系统源代码
注意:需要在没有安装SDK的环境编译,如果安装过SDK,请把SDK的顺序调到最后
detour_2.1 为源码
detours_bin 为BIN
hook_send 为例子
2012-7-12 冷风 QQ 121121606
代码片段和文件信息
//////////////////////////////////////////////////////////////////////////////
//
// Detour functions of a COM interface (commem.cpp of commem.exe)
//
// Microsoft Research Detours Package Version 2.1.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
//
#include
//////////////////////////////////////////////////////////////////////////////
//
// WARNING:
//
// CINTERFACE must be defined so that the lpVtbl pointer is visible
// on COM interfaces. However once we‘ve defined it we must use
// coding conventions when accessing interface members for example:
// i->lpVtbl->Write
// instead of the C++ syntax:
// i->Write.
// We must also pass the implicit “this“ parameter explicitly:
// i->lpVtbl->Write(i pb 0 NULL)
// instead of the C++ syntax:
// i->Write(pb 0 NULL)
//
#define CINTERFACE
#include
#include
#include
//////////////////////////////////////////////////////////////////////////////
//
HRESULT (STDMETHODCALLTYPE *RealIStreamWrite)(IStream * This
const void *pv
ULONG cb
ULONG *pcbWritten) = NULL;
HRESULT STDMETHODCALLTYPE MineIStreamWrite(IStream * This
const void *pv
ULONG cb
ULONG *pcbWritten)
{
HRESULT hr;
ULONG cbWritten = 0;
if (pcbWritten == NULL) {
pcbWritten = &cbWritten;
}
printf(“commem: %p->IStreamWrite(pv=%p cb=%d)\n“ This pv cb);
hr = RealIStreamWrite(This pv cb pcbWritten);
printf(“commem: %p->IStreamWrite -> %08x (pcbWritten=%d)\n“ This hr *pcbWritten);
return hr;
}
//////////////////////////////////////////////////////////////////////////////
//
int main(int argc char **argv)
{
HRESULT hr;
(void)argc;
(void)argv;
LPSTREAM pStream = NULL;
ULARGE_INTEGER ul;
LARGE_INTEGER li;
CoInitialize(NULL);
hr = CreateStreamOnHGlobal(NULL TRUE &pStream);
RealIStreamWrite = pStream->lpVtbl->Write;
ul.QuadPart = 512;
hr = pStream->lpVtbl->SetSize(pStream ul);
li.QuadPart = 0;
hr = pStream->lpVtbl->Seek(pStream li STREAM_SEEK_SET NULL);
printf(“commem: Calling Write w/o before attach.\n“);
li.QuadPart = 0;
hr = pStream->lpVtbl->Write(pStream &ul sizeof(ul) NULL);
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)RealIStreamWrite MineIStreamWrite);
DetourTransactionCommit();
printf(“commem: Calling Write w/o after attach.\n“);
li.QuadPart = 1;
hr = pStream->lpVtbl->Write(pStream &li sizeof(li) NULL);
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThrea
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 237659 2012-07-12 10:46 hook_send\Debug\hook_send.dll
文件 19203 2006-10-16 15:56 hook_send\detours.h
文件 81708 2012-07-12 10:46 hook_send\detours.lib
文件 81608 2012-07-12 10:38 hook_send\detours.lib.bak
文件 1396 2012-07-12 10:34 hook_send\hook_send.cpp
文件 4204 2012-07-12 10:46 hook_send\hook_send.dsp
文件 543 2012-07-12 08:59 hook_send\hook_send.dsw
文件 33792 2012-07-12 10:46 hook_send\hook_send.ncb
文件 53760 2012-07-12 10:46 hook_send\hook_send.opt
文件 252 2012-07-12 10:46 hook_send\hook_send.plg
文件 97473 2006-09-18 12:23 detours_2.1\detours\Detours.chm
文件 892 2006-10-16 15:55 detours_2.1\detours\Makefile
文件 15931 2006-11-03 16:15 detours_2.1\detours\README.TXT
文件 2233 2006-05-02 11:57 detours_2.1\detours\REDIST.TXT
文件 3368 2006-10-16 15:55 detours_2.1\detours\samples\commem\commem.cpp
文件 972 2006-10-16 15:55 detours_2.1\detours\samples\commem\Makefile
文件 2886 2006-10-16 15:55 detours_2.1\detours\samples\common.mak
文件 68135 2006-10-16 15:55 detours_2.1\detours\samples\cping\cping.cpp
文件 0 2006-05-02 11:57 detours_2.1\detours\samples\cping\cping.dat
文件 718 2006-10-16 15:55 detours_2.1\detours\samples\cping\iping.idl
文件 2544 2006-10-16 15:55 detours_2.1\detours\samples\cping\Makefile
文件 1585 2006-10-16 15:55 detours_2.1\detours\samples\cping\ReadMe.Txt
文件 7194 2006-11-03 16:15 detours_2.1\detours\samples\disas\disas.cpp
文件 29571 2006-10-16 15:55 detours_2.1\detours\samples\disas\ia64.asm
文件 1389 2006-10-16 15:55 detours_2.1\detours\samples\disas\Makefile
文件 12034 2006-10-16 15:55 detours_2.1\detours\samples\disas\x64.asm
文件 1451 2006-10-16 15:55 detours_2.1\detours\samples\disas\x86.cpp
文件 11178 2006-10-16 15:55 detours_2.1\detours\samples\dtest\dtarget.cpp
文件 3548 2006-10-16 15:55 detours_2.1\detours\samples\dtest\dtarget.h
文件 24427 2006-10-16 15:55 detours_2.1\detours\samples\dtest\dtest.cpp
............此处省略142个文件信息
- 上一篇:c语言单项选择题标准化考试系统设计
- 下一篇:一个简单的文件系统操作系统课程设计
评论
共有 条评论