首页
社区
课程
招聘
[求助]问一个关于LoadLibrary函数的初级问题
发表于: 2008-6-17 03:25 6989

[求助]问一个关于LoadLibrary函数的初级问题

2008-6-17 03:25
6989
LoadLibrary函数装载模块时,是否只是把该模块映射到内存空间中,返回的句柄应该是该模块在内存中的地址吧,这个地址与啥有关?顺便再问一句“句柄”是个什么东西?(模块句柄,文件句柄等)

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 1946
活跃值: (263)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
2
忽悠R3玩家的东西
2008-6-17 05:15
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
顺便再问一句,GetProcessAddr 函数如何获得某一函数的入口地址
2008-6-17 10:43
0
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
2楼说的对!
2008-6-17 10:51
0
雪    币: 1946
活跃值: (263)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
5
4楼的马甲泄得漂亮
2008-6-17 11:32
0
雪    币: 259
活跃值: (26)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
6
GetProcAddress(GetModuleHandle("xxxx.dll"),"输出的函数名或变量名")



GetProcAddress(GetModuleHandle("user32.dll"),"MessageBoxEx")
2008-6-17 15:23
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
那它实现的内部原理呢?我试着装载Ntoskrl.exe, 返回的地址是在0x80000000以下,用GetProcAddress获得某一内核函数的入口地址在0x80000000以上,不知道是啥原因,
2008-6-17 18:51
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不好意思是“Ntoskrnl.exe”
2008-6-17 18:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
#include <windows.h>

void main()
{
    HINSTANCE BB = LoadLibrary("OllyDBG.EXE");
    FARPROC PAddr = GetProcAddress(BB,"_Addsorteddata");
}

   Ordinal RVA        Symbol Name
   ------- ---------- ----------------------------------
   0x0001  0x00054EFC "_Addsorteddata"

BB = 0x00430000
PAddr = 0x00430000 + 0x00054EFC
2008-6-17 22:16
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
非常感谢!!!
2008-6-18 11:52
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
1   句柄只是句柄表里的一个索引,每个进程都有一个句柄表,进程里的所有线程共享这个句柄表而句柄表里才真正有需要的对象的地址,windows里用句柄是因为基于nt内核的操作系统是采用面向对象的方法设计的.
2    使用LoadLibrary加载dll叫做显示加载,返回的东西严格来说应该叫做模块地址,而不是句柄,因为句柄是句柄表的索引.
2008-6-18 12:20
0
游客
登录 | 注册 方可回帖
返回
//