當前位置:首頁 » 操作系統 » 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

'這就是一個鍵盤鉤子程序

熱點內容
發展泰拉瑞亞伺服器ip地址 發布:2024-10-27 01:29:27 瀏覽:881
ftp特指 發布:2024-10-27 01:27:44 瀏覽:697
安卓漂流瓶在qq哪裡 發布:2024-10-27 01:26:18 瀏覽:297
編程貓網盤 發布:2024-10-27 01:23:30 瀏覽:863
編譯原理語法分析報告 發布:2024-10-27 01:17:02 瀏覽:49
金杯霸道有哪些配置 發布:2024-10-27 01:16:20 瀏覽:892
一個虛擬存儲器有64個頁面 發布:2024-10-27 01:16:02 瀏覽:982
浙江聯通伺服器地址 發布:2024-10-27 01:15:08 瀏覽:713
家裡無線網怎麼設密碼 發布:2024-10-27 01:04:49 瀏覽:870
上萬套源碼 發布:2024-10-27 01:00:18 瀏覽:531