首页
社区
课程
招聘
[解决]Exe程序在设置全局键盘钩子的时候,如何传递变量给DLL。
发表于: 2011-3-27 22:38 10502

[解决]Exe程序在设置全局键盘钩子的时候,如何传递变量给DLL。

2011-3-27 22:38
10502
Exe程序在设置全局键盘钩子的时候,如何传递变量给DLL。
直接点:就是Exe要把键盘钩子记录的文件全路径发给DLL,DLL就知道该向哪里写键盘数据了。

#pragma   data_seg("share")   //节名8个字节
char   path[256] = {0};
#pragma   data_seg()
#pragma  comment(linker, "/section:share,rws")

_declspec(dllexport) BOOL InstallHook(char* dir)
{
        strncpy(path,dir,sizeof(path)-1);
path[sizeof(path)-1]='\0';
        OutputDebugString(path);
        hkb = SetWindowsHookEx(WH_KEYBOARD,HookProc,hins,0); //安装全局钩子
        if(hkb!=NULL)
        {
                OutputDebugString("InstallHook Success\n");
                return 1;
        }
        return 0;
}

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (30)
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
2
只是共享一个路径。感觉用共享内存有点复杂啊。有没一种比较好的方法。只是传递一个路径,告知钩子把按键记录到哪里?
2011-3-27 22:51
0
雪    币: 183
活跃值: (1058)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
写到注册表能行么
2011-3-27 22:54
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
4
写到注册表或者生成一个配置文件当然行了。有没其他,不需要借助注册表或者配置文件的。
2011-3-27 23:00
0
雪    币: 677
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
用dll的共享段
2011-3-27 23:06
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
DLL共享段,怎么说?EXE调用Install Hook的时候如何操作?
2011-3-27 23:08
0
雪    币: 677
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
Install Hook时顺便就把文件路径初始化一下  文件路径放在共享段内
2011-3-27 23:21
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
8
DLL共享段 似乎不行啊。只能在调用Hook的Exe中有效,其他Exe都无效啊。
#pragma   data_seg( "sharedata ")
char   path[256]={0};
#pragma   data_seg()
#pragma        comment(linker, "\\section:sharedata,rws")

_declspec(dllexport) BOOL InstallHook(char* dir)
{
        strcpy(path,dir);
        hkb = SetWindowsHookEx(WH_KEYBOARD,HookProc,hins,0); //安装全局钩子
        if(hkb!=NULL)
        {
                OutputDebugString("InstallHook Success\n");
                return 1;
        }
        return 0;
}
2011-3-28 15:27
0
雪    币: 6
活跃值: (841)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
COPY_DATA
2011-3-28 16:16
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
10
共享段中的数据定义时不要进行初始化试试
2011-3-28 18:18
0
雪    币: 232
活跃值: (105)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
11
最简单的方法就是
你EXE释放DLL后
先吧路径写道DLL里
然后在加载哦~~~~~
2011-3-28 18:22
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
12
不进行初始化,编译出来的DLL就没共享段
2011-3-28 21:28
0
雪    币: 677
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
不知道LZ怎么测试的   我试了一下 是可以的
2011-3-28 22:50
0
雪    币: 17
活跃值: (308)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
14
ReadMemory
WriteMemory
2011-3-28 23:32
0
雪    币: 257
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
HOOK的时候直接获取DLL的所在文件路径~
2011-3-28 23:46
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
16
WH_KEYBOARD全局挂钩,记事本的输入就记不到。路径也是空
2011-3-29 09:08
0
雪    币: 677
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
[QUOTE=竹君;941318]DLL共享段 似乎不行啊。只能在调用Hook的Exe中有效,其他Exe都无效啊。
#pragma   data_seg( "sharedata ")
char   path[256]={0};
#pragma   data_seg()
#pragma        comment(linker, "...[/QUOTE]

#pragma   data_seg( "sharedata ") ->#pragma   data_seg( "sharedata")
"\\section:sharedata,rws"->"/section:sharedata,rws"   试一下
2011-3-29 11:58
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
18
依然不行啊。
#pragma   data_seg( "sharedata ")

char   path[256] = {0};

#pragma   data_seg()
#pragma  comment(linker, "section:sharedata,rws")
2011-3-29 15:33
0
雪    币: 1149
活跃值: (833)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
19
呵呵 有人和我 遇到过相同的问题  。。。。坐等 方法 。。。。
2011-3-29 15:36
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
获取dll的文件路径,然后组合成log路径。
2011-3-29 15:39
0
雪    币: 677
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
为啥"sharedata "非要有个空格呢?难道编译时不会有警告说"/section:sharedata,rws" 找不到对应区段吗?
  "section:sharedata,rws"  ,没有那个"/" 我没试过 不知道可不可以,它是link时的参数,最好还是"/section:sharedata,rws"吧
2011-3-29 17:26
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
22
#pragma data_seg(".why")
char   path[256]={0}; 
#pragma data_seg()
#pragma comment(linker, "/section:.why,RWS")


会不会是因为 section名字太长了  因为pe里面只有8个字节保存。。。
2011-3-29 17:56
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
[QUOTE=blueapplez;941832]#pragma data_seg(".why")
char   path[256]={0};
#pragma data_seg()
#pragma comment(linker, "/section:.why,RWS")

会不会是因为 section名字太长了  因为pe里面只有8个字...[/QUOTE]

楼主可以试下这个原因
2011-3-29 23:47
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
24
测试了下。依然不行。在记事本里为空。
2011-3-29 23:59
0
雪    币: 14
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
SECTION 大写
2011-3-30 21:14
0
游客
登录 | 注册 方可回帖
返回
//