首页
社区
课程
招聘
如何通过函数指针获取函数名呢?
发表于: 2009-6-6 19:57 12887

如何通过函数指针获取函数名呢?

2009-6-6 19:57
12887
RT...

如果我知道了一个函数的地址,怎么通过这个地址来获取他的函数名呢?

r3通过函数名GetProcAddress() 函数来获取他的地址..

现在我想通过函数地址来获取函数名可以吗?/

我想在R0通过函数地址获取函数名?

请大大给点指示,谢谢!!!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
2
看这个地址落在哪个DLL内.......遍历这个DLL的导出表.....看哪个函数的地址==你的地址....
2009-6-6 20:08
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我的是R0的,函数地址属于SSDT表里的.我不想把代码写死,我想通过这个函数地址来获取他的函数名...

比如很多软件,冰刃啊,狙剑,RKU什么的,他们遍历SDT的时候,显出来的函数名不会是写死的吧??
2009-6-6 20:19
0
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
4
SSDT名字..NTDLL.....就OK咯
2009-6-6 20:26
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
...........80以上的地址..和NTDLL好象没关系吧....

我也不懂了.  

就比如 805a44bc这个地址,怎么取他的函数名...
2009-6-6 20:55
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
获取SSDT 函数名 比一般函数名方便多了
只要获取他的服务号就可以 直接去NTDLL里面查了   
网上已经有很多例子了哦  自己找找吧
2009-6-6 22:15
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
7
检查NTDLL导出表
2009-6-6 23:06
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
哦,非常感谢....

意思就是我把地址给了r3以后,通过这个地址和NTDLL导出表地址对比,或者通过这个函数的服务号取到他的函数名对吧...谢谢了..

哦,只能通过服务号来找出NTDLL导出函数名,不能通过函数地址....

弱弱的问一句,我是菜鸟....

怎么查看NTDLL的导出表......我只会用工具看,自己写不知道怎么看他的函数名..........希望指点下..

MJ帮帮忙...呵呵...
2009-6-6 23:08
0
雪    币: 97
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
hModule->NTHeader->DataDirectory->exportedTable
看看pe结构
2009-6-6 23:48
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谢谢.......我去看看,感谢楼上..
2009-6-7 00:00
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
看了某为大大写的SSDTHOOK里的代码,可以通过加载NTDLL,通过PE找出对应的函数名,函数地址,函数服号...

就可以实现了....

现在又碰到个问题,如果我想获取win32k.sys里的ShaDow的导出函数名呢?

还有不太明白,像冰刃这类软件,他们恢复SSDT,ShaDow等,他们获取原函数地址的呢?

我记得如果导出的切公开的函数定义一下,可以直接获取的函数地址,那么没公开的函数呢?怎么获取他们的原函数地址?不会通过特征码定位的吧?那工程也太大了吧?

况且SSDT  加ShaDow2个表的函数+起来大概1000个左右吧,难道定义了1000个函数?分别获取他们的原函数地址?

如果是那样,那工程实在太大了呀,1000来个函数全定义好,当恢复的时候对应的恢复......................
2009-6-7 23:38
0
雪    币: 225
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
我原来是利用符号包的,当时写了一个栈回溯,可以通过hook一个函数,进行回溯,并显示函数名,不过代码上有些技术问题,不过大概解决了。你也可以试试
2009-6-8 08:52
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
谢谢楼上的,我不太明白你的意思,HOOK一个函数是为了什么?能把原理讲一下吗?我听的不太明白...
2009-6-8 14:06
0
雪    币: 225
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
14
比如hook一个xxxx函数为function1,是什么函数调用的function1,这样可以显示出这个函数名,我的demo仅能回溯到ssdt函数
2009-6-8 18:55
0
雪    币: 225
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
15
其实建个索引,搜索导出表也是挺快的
2009-6-8 19:01
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
不会搜索sys的导出表...HOOK一个函数,可以知道哪个位置调用过来的..但是不知道怎么得到函数名...
2009-6-8 22:38
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
NT  开头的函数隔的不远  基本上是在一块
你看看导出顺序看是从头 还是从尾 循环
取到足够的数量 就不用再继续循环了  非常的快

取SHADOW  的服务名 就不大方便了
最好是把每个系统的都做个资源打包进来 然后在判断是那个系统
2009-6-9 20:58
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
18
获取函数名太简单了  SSDT直接搜NTDLL导出表 SSDT Shadow利用符号
2009-11-15 14:55
0
游客
登录 | 注册 方可回帖
返回
//