阅读:2133回复:12
关于得到api的调用者的问题---15分
我现在做一Api hook,在我的hook函数里,我想得知此时此api正被哪些进程或用户调用,也即得到调用该api 的源---进程或用户,请问各位怎么实现,不甚感激!!!
|
|
沙发#
发布于:2002-07-20 12:19
分析API函数的堆栈,找到调用者的返回地址。
|
|
板凳#
发布于:2002-07-20 21:54
我现在做一Api hook,在我的hook函数里,我想得知此时此api正被哪些进程或用户调用,也即得到调用该api 的源---进程或用户,请问各位怎么实现,不甚感激!!! 你用什么hook?驱动吗? 当你的驱动因某进程的调用而激活时,该环境就是那个进程的环境,直接就可从当前EPROCESS得出是什么进程;至于用户可从进程令牌环得到其部分信息,以前讨论过,search。 |
|
地板#
发布于:2002-07-22 10:46
请问pjf:从进程的令牌环能得到该进程的所有访问者,但这些访问者并非都在同时调用该api,这并不能得到调用该api的确切用户,这个问题一直在困惑了我,怎么才能得到调用该api的确切用户?
|
|
地下室#
发布于:2002-07-22 18:47
请问pjf:从进程的令牌环能得到该进程的所有访问者,但这些访问者并非都在同时调用该api,这并不能得到调用该api的确切用户,这个问题一直在困惑了我,怎么才能得到调用该api的确切用户? 仔细看前面。 调用的进程得到了吗? |
|
5楼#
发布于:2002-07-22 22:40
pjf好象做过这方面的,问他算是问对了
|
|
6楼#
发布于:2002-07-23 11:51
GetCurrentProcessId, GetCurrentThread,GetCurrentProcess等
|
|
|
7楼#
发布于:2002-07-23 18:16
请问hook是什么东东?
|
|
|
8楼#
发布于:2002-07-23 19:19
pjf好象做过这方面的,问他算是问对了 这方面真正的项目倒没做过,但我没事搞搞操作系统与处理器体系结构,内核的组成---驱动的诸方面自然是要玩玩的。皮毛得很 |
|
9楼#
发布于:2002-07-24 10:47
由于你的hook函数激活时就是处于调用方的进程内,所以可以得到调用进程的ID, 然后由hook函数的参数大小从堆栈中得到调用方的返回地址,再由上面得到的进程ID枚举出进程内所有的MODULE HANDLE 和MODULE SIZE,由于该HANDLE就是MODULE的映射起始地址,所以比较返回地址在哪个MODULE的范围内即可知道调用方的详细信息
|
|
10楼#
发布于:2002-07-24 14:13
我知道调用进程ID是能得到,但是还有一问题,比如当我在一装有IIS 的Win2000 Server上hook时,若有一远程用户访问我的IIS ,他以某一授权用户发出访问网页的请求,此时该请求到达我的2000 Server,进入我的hook函数,我怎么才能在此hook函数里得到此时调用的用户名?我知道根据进程的访问令牌能得到此进程的所有用户,但此进程有可能有不止一个令牌用户,我们怎样才能在hook里确切的将该hook函数和某一确定用户关联起来呢?
|
|
11楼#
发布于:2002-07-24 14:34
这个问题,我前不久刚刚实现,也是感谢pjf兄弟的帮忙,现在无偿奉献。只是你还需要一个应用端的服务或仅在应用程序端调用一个文档中提到的Win32API得到用户名即可。
|
|
|
12楼#
发布于:2002-07-24 14:38
我知道调用进程ID是能得到,但是还有一问题,比如当我在一装有IIS 的Win2000 Server上hook时,若有一远程用户访问我的IIS ,他以某一授权用户发出访问网页的请求,此时该请求到达我的2000 Server,进入我的hook函数,我怎么才能在此hook函数里得到此时调用的用户名?我知道根据进程的访问令牌能得到此进程的所有用户,但此进程有可能有不止一个令牌用户,我们怎样才能在hook里确切的将该hook函数和某一确定用户关联起来呢? 对于远程的访问,本地只能得到它登录本机的用户名,例如,他以guest登录你的机器,则你的HOOK只能得guest,仅此而已。 各位高手,如果能确切得到LAN内任何一台访问本机的用户名(而不是授权用户名),还请不要保留。 |
|
|