吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2676|回复: 5
收起左侧

[C&C++ 转载] 关于SetWindowsHookEx的一个小疑惑,在线等大神

[复制链接]
我是一朵浮云 发表于 2015-8-2 16:19
最近在摆弄钩子的时候遇到一个这样的问题。

我有一个DLL文件,里面有两个函数和一个全局变量如下所示

static int number=0;
HHOOK m_Hook = NULL;

LRESULT CALLBACK hookfunc(int nCode, WPARAM wParam, LPARAM lParam)
{
  return CallNextHookEx(m_Hook, nCode, wParam, lParam);
}


__declspec(dllexport) void SetHook(int x)
{
  number = x;
  m_Hook = SetWindowsHookEx(WH_CBT, hookfunc, GetModuleHandle(L"me.dll"), 0);
}

我的注入器加载的时候就load了这个dll。
然后需要的时候就调用Sethook这个函数。同时将一个数字传递进去(这个数字是可变的)
我去查了一下核心编程,书上貌似是说把进程内存空间里面的DLL映射到另一个进程。

但是我测试的时候发现,number这个变量在注入以后是0,并不是我传递进去的数字。不知道有没有大神知道应该怎么做呢?(尽量不使用进程通信之类的方案,我想直接把我设定好的DLL复制到另外一个进程)

在线等大神。也拜托大神说明下问题的原因。

P.S:钩子函数里面没有执行任何功能,我写在了DLL加载的函数里面。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

T_MAC仔 发表于 2015-8-3 13:05
具体用法百度不是都有吗   
0x18c0 发表于 2015-8-4 09:47
本帖最后由 0x18c0 于 2015-8-4 15:48 编辑

每个进程的地址空间都是独立的,虽然物理内存里大家都是共用同一个dll,但实际上只是共用dll的代码,默认变量不会共享
如果非要用dll共享变量也可以实现,可以参考这篇文章http://blog.csdn.net/morewindows/article/details/6702342


sunnysab 发表于 2015-8-4 15:12
使用配置文件实现?
终于有发VC的帖子了,好想哭,快被易语言刷屏了
 楼主| 我是一朵浮云 发表于 2015-8-5 23:12
sunnysab 发表于 2015-8-4 15:12
使用配置文件实现?
终于有发VC的帖子了,好想哭,快被易语言刷屏了

喜欢VC- =
浙江螃蟹 发表于 2015-8-5 23:19
本帖最后由 浙江螃蟹 于 2015-8-5 23:21 编辑

如果实在想实现这些数据在各进程中一样,就用数据段共享;

#pragma data_seg ("shareddata") //名称可以自己定义,但必须与下面的一致。
static int number=0;
HHOOK m_Hook = NULL;
#pragma data_seg()#pragma comment(linker, "/SECTION:shareddata,RWS")
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 04:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表