社区
API
帖子详情
VB怎么监视某一个API函数是否被调用?
goodname008
2003-07-15 05:59:05
VB怎么监视某一个API函数是否被调用?
就是说我的程序启动后,就开始监视某一个特定的API函数是否被别的程序调用?
如果别的程序调用了该函数,我想获得那个程序调用该函数所使用的参数!
能做到吗?
...全文
84
42
打赏
收藏
VB怎么监视某一个API函数是否被调用?
VB怎么监视某一个API函数是否被调用? 就是说我的程序启动后,就开始监视某一个特定的API函数是否被别的程序调用? 如果别的程序调用了该函数,我想获得那个程序调用该函数所使用的参数! 能做到吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
42 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
goodname008
2003-07-22
打赏
举报
回复
自己顶一下吧! :(
goodname008
2003-07-20
打赏
举报
回复
有办法的说说啊,这个问题困扰我很久了!
goodname008
2003-07-19
打赏
举报
回复
‘windows95系统程序设计大奥秘’这本书我也下载了.pdf,这部分我也看了看,但可能由于缺乏相关的知识,看得一知半解,但大致原理还差不多能理解。
书中所介绍的办法好像是已知我要拦载的程序,然后有针对地对该程序调用的API进行拦载。
而我要做的是监视某一个API,但并不知道什么程序将调用它,不论什么程序调用该函数我都想获得程序调用该API函数的参数。
有什么办法吗?
xinxinyu2000
2003-07-19
打赏
举报
回复
摘自‘windows95系统程序设计大奥秘’。
xinxinyu2000
2003-07-19
打赏
举报
回复
Spy 軟體只需要在
可執行檔的imports section ㆗找到import address table,改寫其內容,使其中的DWORD
改指向spy 程式碼即可,根本不必做什麼縫縫補補的工作。也不需要在原來的碼和被spy
軟體修改過的碼之間不斷㆞切來切去。可執行檔最終是直接呼叫spy 碼,所以唯一會加
重系統負荷的就是spy 軟體的運轉記錄碼(一 個函式)本身。記錄完畢之後,spy 軟體
就跳到原目標(利用JMP DWORD PTR [XXXXXXXX])。很簡單,不是嗎?
甚至即使「刺探」不是你的目的,你也可以利用這樣的計謀選擇性的攔截APIs。舉個例
子,你可能想要以你自己的碼取代DLL 中的一個函式。你很容易根據上述觀念做出一
個函式,兩個參數分別是被攔截的DLL 名稱和函式名稱。回返值則為一個指標,指
向.idata 中那個內含函式位址的DWORD。你的程式然後應該改寫這個DWORD,把準
備接手的那個函式的位址填進去。如果你要串連原呼叫函式,記得在改寫DWORD 之前
先儲存其內容(代表原函式位址)。
xinxinyu2000
2003-07-19
打赏
举报
回复
攔截API 的另一個方法是修改呼叫對象。只要改變被呼叫函式的最初一部份碼,spy 軟
體就可以讓自己在該函式執行之前先獲得控制權。兩種方法可以改變程式的前置碼
(prologue code),用以轉換控制權。第一同時也是最明顯的作法就是在第一個位元組㆖
放一個中斷點(breakpoint)指令,opcode 為0xCC。當此函式被呼叫,spy 軟體所安裝
的一個中斷服務常式就會獲得執行權並記錄它所要的資訊。然後spy 軟體再經由trap
flag single-step 機制,在CPU 真正執行㆒個指令之前,把原來的內容寫回第一個位元組
中。而在那個single-step 異常處理常式中,API spy 軟體重新插入一斷點的opcode,使
後續對此函式的呼叫能夠再被捕捉。
James0001
2003-07-19
打赏
举报
回复
居说可以做一个DLL,里面的函数名与要监视的API函数名相同?
* 不用
dll文件升级了呢?
* 没关系,只要那个函数还在就没问题。
(怎么有点像 FAQ 啊?)
ll_pp
2003-07-18
打赏
举报
回复
hook api
pandengzhe
2003-07-18
打赏
举报
回复
gz!
goodname008
2003-07-18
打赏
举报
回复
boywang(大力水手) 说的有道理。
不过有什么好的办法能解决吗?
boywang
2003-07-18
打赏
举报
回复
楼主你的方法不是很可靠哦。
如果dll文件升级了呢?相应的dll也要升级,维护起来真是噩梦!
James0001
2003-07-18
打赏
举报
回复
反正需要 DLL
问问 Bill Gates 吧,他用 BASIC 的时候,我们还不知道在哪儿呢。
说回来他不是 BASIC 起家的嘛,一定有什么鲜为人知的办法…… :P
goodname008
2003-07-18
打赏
举报
回复
是说只能用C做一个标准的DLL吗?
居说可以做一个DLL,里面的函数名与要监视的API函数名相同?
是这样吗?我对C不太熟,大家帮帮忙!!! :)
Shikari
2003-07-17
打赏
举报
回复
是的,我刚才说的是引入表方式,还有陷阱方式呢:)
要说的太多,还有工作要做,大家继续吧:)
boywang
2003-07-17
打赏
举报
回复
楼上的,如果程序调用loadlibrary来运行messagebox函数你说的就不行了。
Shikari
2003-07-17
打赏
举报
回复
我倒是能做,不过做起来特别麻烦,而且调试起来也麻烦,总容易死机。
你说你想拦截所有API,我个人认为很难,因为你要把所有API都列举在你的程序中。
这样,我给你一个思路,当某个程序运行时,我们假设他会调用MESSAGEBOX,那么在他的IMPORT TABLE中就会有该函数,当PE装载器将该文件装载时,会将MESSAGEBOX的函数地址写到该程序中,同时,我们在自己程序中能知道MESSAGEBOX的函数地址,然后枚举被HOOK的程序,当发现该程序中IMPORT TABLE中有指针指向MESSAGEBOX地址时,我们将该指针内容替换成我们的函数抵制,从而实现了拦截!
bbe
2003-07-17
打赏
举报
回复
http://tzsvc.xiloo.com/doc/files/knowapihook.htm
boywang
2003-07-17
打赏
举报
回复
继续顶!!!!!
goodname008
2003-07-17
打赏
举报
回复
HOOK我倒是略知一二,不过PE文件结构不太了解。
各位谁有现成的DLL,能给我一个吗,谢了!!
心里很难受:碰到了一个VB天生的缺陷。 :~(
Shikari
2003-07-17
打赏
举报
回复
不一定就要汇编吧?不过单独用VB,的确是做不到的,我以前就是用VB,不过,你可以这样,用C或者DELPHI编译一个DLL,然后用VB调用倒是可以的,不过虽然说的简单,但是做起来很难,相信楼上的几位也不一定能作到,你要懂HOOK,PE文件结构等知识:)
加载更多回复(22)
在
vb
中
调用
API
函数
的简单介绍
这里必须采用Private声明,因为这个
API
函数
只能被
一个
窗体内的程序所
调用
。 如果我们的程序有多个窗体构成,而且我们需要在多个窗体中使用同
一个
API
函数
,就需要在模块中声明了。 先添加
一个
模块, 然后采用如下...
vb
调用
api
函数
工具软件
vb
调用
api
函数
工具软件,可查找
API
函数
,软件包含数百个
VB
调用
API
函数
实现各种功能
VB
6.0
调用
API
函数
控制显示器
VB
6.0
调用
系统
API
函数
。控制显示器的关闭
VB
调用
API
函数
方法详解
VB
调用
API
函数
方法,以一简单的例题做详细说明。非常适合初学者想了解
API
函数
的朋友
VB
API
函数
大全
AbortDoc
VB
声明 Declare Function AbortDoc Lib "gdi32" Alias "AbortDoc" (ByVal hdc As Long) As Long ...当大家结合
API
打印
函数
与
VB
打印机方法的时候,强烈建议对打印机的错误进行跟踪捕获;或干脆避免这种结合
API
1,486
社区成员
23,279
社区内容
发帖
与我相关
我的任务
API
VB API
复制链接
扫一扫
分享
社区描述
VB API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章