当前位置:首页 » 编程软件 » detours30编译

detours30编译

发布时间: 2022-05-01 17:51:35

A. VC 类相关问题编译错误 请求帮助解决

*(DWORD *)&CDetour::sub_465920 = 0x0465920;
这句什么意思?给函数指针赋一个固定值?能保证这个地址指向一个合适的函数么?

说实话,代码在成员函数指针和命名方面比较诡异,导致难以理解。
你正常一点写代码就可以了。
比如先定义函数指针类型,再定义该函数指针类型的静态成员变量,再给这个变量赋值,再通过这个变量调用函数。
CDetour *CDetours
CDetour::* sub_465920
这样的命名你不觉得不好么?你写代码是不是只求编译通过,从来不管可读性的呢?你甚至是不是觉得代码写得越是费解越是显得水平高呢?

B. detours 2.1 express版本的使用

不知道你是怎么链接的detours.lib和detoured.lib?

可以你的代码里这样链接试试:
#pragma comment(lib, "detours.lib")
#pragma comment(lib, "detoured.lib")

还有一种可能就是,detours 2.1不支持Unicode编码。(当然这也只是我的猜测。)
而你的工程用了Unicode编码方式,你可以把编码方式改为多字节试试。
这样改:
菜单 项目->**属性,在属性对话框中,左侧选择配置属性-常规,右侧字符集中选择“使用多字节字符集”

C. MFC钩子问题 我想点击一个按钮 弹出一个对话框 然后用钩子函数修改消息,点击之后弹出另一个i对话框

你的这个问题用API HOOK 不太合适。

这种模式是采用子类化比较合适。
可以在父窗口中拦截BN_CLICKED 消息进行处理。

实现方式:
1、创建一个基于CWnd /(ATL CWindow)的类,实现BN_CLICKED事件的拦截处理。
2、实例化你创建的这个类,查找到按钮的父窗口,然后调用调用类方法SubclassWIndow() 子类化父窗口就可以了。
3、如果是跨进程的远程子类化,需要你将这个类编译成一个DLL,然后通过钩子或CreateRemoteThread() 将这个DLL注入到目标进程,然后执行第一二部就可以了。

以ATL 示例
#include <atlbase.h>
#include <atlwin.h>
class CX : public CWindowImpl<CX>
{
public:
BEGIN_MSG_MAP(CX)

COMMAND_CODE_HANDLER(BN_CLICKED,OnBtnClicked)

END_MSG_MAP()

LRESULT OnBtnClicked(WORD , WORD wID, HWND , BOOL bHandled)
{
bHandled = FALSE; // 可以执行默认的WM_COMMAND 消息
if (wID == 你需要子类化的窗口控件ID)

{

// 调用你要改变的对话框,这块自己处理

CXXDlg dlg;

dlg.DoModel();

bHandled = TRUE; // 阻止消息的默认处理

}

return 0;

}
};

挂接示例
static CX* g_pWnd = NULL;

// 查找按钮的父窗口

// 如果父窗口有效则执行子类化,挂接你的子类化处理。
HWND hBtnParent = FindWIndow(xxxx);
if (!g_pWnd && IsWindow(hBtnParent))
{
g_pWnd = new CX;

g_pWnd = g_pWnd.SubclassWindow(hBtnParent); // 子类化父窗口

}

如果是远程子类化,需要你进行注入,这个过程你可以从网上搜索相关资料

这个示例是在页面中敲的,没有经过测试,大体流程就是这样,你可以依据的具体情况进行调整

D. 谁帮我写个 用 detours 拦截 ws2_32.dll 中的 connect 例子,谢谢~~

这是一个用于拦截WinSock API的程序,主要的目的并不是为了截获数据包,而是为了能从第三方角度方便地观察二进制程序调用WinSock API的情况,最直接最原始一点的想法,是为了能比较方便地调试自己写的Windows网络应用程序。
关于拦截API的方法有很多种,网上各种文章到处散布。我用的是全局消息钩子注入进程空间,修改API调用地址。各种方法各有优缺点,比如修改Import Table表,要对PE文件格式有比较深入的了解,但我不了解;Trojan DLL,要替换整个DLL,而且WinSock有2个版本,分别对应了2个DLL文件,一个是wsock32.dll,另一个是ws2_32.dll,每个DLL的导出函数有100多个,工作量太大;还有用Detours开发包,说实话,文档不够丰富,而且1.5版还是免费使用,2.0的就要Money了,等等等等。不是说其它方法不好,而是说,我现在采用的方法刚好比较符合我的需求,但由此带来一个重要的问题是,不能拦截Console程序,因为没有窗口消息队列,就像现在Aweay的MySPY中DebugView功能,是通过拦截OutputDebugString这API来实现的,所以写的Console程序调用的OutputDebugString是拦截不到的,不像DebugTrack,是通过OutputDebugString的实现原理来捕捉的,可以拦截所有的输出。
曾经看到LuoCong通过SEH来实现API Hook的例子程序,程序是用Win32asm写的,看了几遍发现,似乎用Win32asm才能比较方便地利用SEH的这个“副作用”,因为除了汇编以外,其它高级语言要获得函数的参数值很是麻烦,但或许只是因为我自己水平太臭吧,不管怎么说,反正现在我是用不上这技术了。
自从在LLYF Spy中开始用过Hook后,已经有点依赖这技术的感觉了,遇到什么稍微麻烦点的问题,就会想到用Hook,而且现在也有点习惯用BCB6来编译DLL,尽管这个DLL是用纯SDK写成的,可以很方便地移植到VC上来编译,只是因为上次遇到过的奇怪的兼容性问题,使得我把BCB作为编译用于搭配BCB编译的EXE程序的DLL的首要选择。
经过一番键盘搏击,根据自己的需求估计,Hook了24个API:recv、recvfrom、send、sendto、socket、closesocket、accept、listen、bind、connect这些都有2份,wsock32.dll和ws2_32.dll各1份,WSASend、WSASendTo、WSARecv、WSARecvFrom这些只有ws2_32.dll里的那份。不过目前只是能获得API的基本信息,像API名字,返回值,WSAGetLastError值,PID这些。下一步的计划,是要能导出API的调用参数列表和传输数据内容。参数列表应该不是件很难的事,而传输数据的显示,好像惯例都是用16进制加ASCII码加偏移显示的,还要花些时间在这个上面。
另外一个问题,则是同步问题。我是用内存映射来进行进程间通信的,万一在读的时候,另一个进程在写,就不好了,所以还要找一个适当的同步机制。
最后一点,当然是稳定性,也是最重要的一点,不能因为这个进程的存在,使得其它程序也牵连受影响。
本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/missdeer/archive/2005/03/01/306971.aspx

E. visual studiodetours怎么编译

使用Windows10和vs1015,
首先打开 所有应用-visual studio 2015-选择vs2015开发人员命令提示
进入DetoursExpress30的安装目录

F. detours怎么编译成dll

怎么会弄不上去呢?你把Detours的源文件用vc6自带的nmake编译后,在将detours.h加在自己的工程中,并且将detours.dll放在工程目录下,这样就可以使用了啊!

热点内容
wemall微商城源码 发布:2025-05-14 22:15:20 浏览:803
隆地优选交易密码是什么 发布:2025-05-14 21:53:23 浏览:93
强酸强碱存储柜 发布:2025-05-14 21:45:16 浏览:563
车辆参数配置包括什么 发布:2025-05-14 21:31:03 浏览:163
怎么引入安卓项目 发布:2025-05-14 21:26:39 浏览:824
游戏辅编程 发布:2025-05-14 21:18:49 浏览:687
三菱plc一段二段密码什么意思 发布:2025-05-14 21:17:16 浏览:528
电脑开机密码忘记了怎么破解 发布:2025-05-14 21:09:40 浏览:57
pythondict格式 发布:2025-05-14 21:09:38 浏览:886
落叶片拍摄脚本 发布:2025-05-14 20:40:49 浏览:800