hook的是DeviceIoControl,DeviceIoControl 將控制代碼直接發送到指定的設備驅動程序,使相應的設備執行相應的操作,我們先看看這個API參數
.版本 2 .DLL命令 DeviceIoControl, 邏輯型, "kernel32", "DeviceIoControl".參數 hDevice, 整數型.參數 dwIoControlCode, 整數型.參數 lpInBuffer, 整數型.參數 nInBufferSize, 整數型.參數 lpOutBuffer, 整數型.參數 nOutBufferSize, 整數型.參數 lpBytesReturned, 整數型.參數 lpOverlapped, 整數型注入器
視頻教程采用了EIP注入方式,注入后,磁盤序列號會隨機生成。
參數:
hDevice [in]
需要執行操作的設備句柄。該設備通常是卷,目錄,文件或流,使用 CreateFile 函數打開獲取設備句柄。具體的見備注
dwIoControlCode [in]
操作的控制代碼,該值標識要執行的特定操作以及執行該操作的設備的類型,有關控制代碼的列表,請參考備注。每個控制代碼的文檔都提供了lpInBuffer,nInBufferSize,lpOutBuffer和nOutBufferSize參數的使用細節。
lpInBuffer [in, optional]
(可選)指向輸入緩沖區的指針。這些數據的格式取決于dwIoControlCode參數的值。如果dwIoControlCode指定不需要輸入數據的操作,則此參數可以為NULL。
nInBufferSize [in]
輸入緩沖區以字節為單位的大小。單位為字節。
lpOutBuffer [out, optional]
(可選)指向輸出緩沖區的指針。這些數據的格式取決于dwIoControlCode參數的值。如果dwIoControlCode指定不返回數據的操作,則此參數可以為NULL。
nOutBufferSize [in]
輸出緩沖區以字節為單位的大小。單位為字節。
lpBytesReturned [out, optional]
(可選)指向一個變量的指針,該變量接收存儲在輸出緩沖區中的數據的大小。如果輸出緩沖區太小,無法接收任何數據,則GetLastError返回ERROR_INSUFFICIENT_BUFFER,錯誤代碼122(0x7a),此時lpBytesReturned是零。
如果輸出緩沖區太小而無法保存所有數據,但可以保存一些條目,某些驅動程序將返回盡可能多的數據,在這種情況下,調用失敗,GetLastError返回ERROR_MORE_DATA,錯誤代碼234,lpBytesReturned指示接收到的數據量。您的應用程序應該再次使用相同的操作調用DeviceIoControl,指定一個新的起點。
如果lpOverlapped為NULL,則lpBytesReturned不能為NULL。 即使操作沒有返回輸出數據并且lpOutBuffer為NULL,DeviceIoControl也會使用lpBytesReturned。在這樣的操作之后,lpBytesReturned的值是沒有意義的。
如果lpOverlapped不為NULL,則lpBytesReturned可以為NULL。 如果此參數不為NULL并且操作返回數據,則在重疊操作完成之前,lpBytesReturned是無意義的。要檢索返回的字節數,請調用GetOverlappedResult,如果hDevice與I / O完成端口相關聯,則可以檢索通過調用GetQueuedCompletionStatus返回的字節數。
lpOverlapped [in, out, optional]
(可選)指向OVERLAPPED結構的指針,
如果在未指定FILE_FLAG_OVERLAPPED的情況下打開hDevice,則忽略lpOverlapped。
如果使用FILE_FLAG_OVERLAPPED標志打開hDevice,則該操作將作為重疊(異步)操作執行。在這種情況下,lpOverlapped必須指向包含事件對象句柄的有效OVERLAPPED結構。 否則,該功能將以不可預知的方式失敗。
對于重疊操作,DeviceIoControl會立即返回,并在操作完成時通知事件對象。 否則,該功能在操作完成或發生錯誤之前不會返回。
返回值:
如果操作成功完成,DeviceIoControl將返回一個非零值。
如果操作失敗或正在等待,則DeviceIoControl返回零。 要獲得擴展的錯誤信息,請調用GetLastError。
磁盤序列號獲取
我們先封裝一個模塊,然后采用這個命令來獲取磁盤序列號
.版本 2 .子程序 取磁盤序列號, 文本型, 公開 .參數 硬盤序號, 字節型, , 硬盤的序號,從0開始。 .局部變量 hDisk, 整數型, , , 設備打開后的句柄 .局部變量 cBR, 整數型 .局部變量 sip, SCIP .局部變量 sop, 字節型, , "532" .局部變量 bDM, 字節型 .局部變量 序列號, 文本型 .局部變量 i, 整數型hDisk = CreateFile (“\\.\PhysicalDrive” + 到文本 (硬盤序號), -1073741824, 0, 0, 3, 0, 0) .如果 (hDisk ≠ -1)sip.irDriveRegs.bDriveHeadReg = 160sip.irDriveRegs.bCommandReg = 236' 對設備進行操作.如果真 (DeviceIoControl (hDisk, 508040, sip, 32, sop [1], 528, cBR, 0) ≠ 0)' 復制內存CopyMemory (DiskInfo, sop [1], 90)' 取序列號.變量循環首 (1, 取數組成員數 (DiskInfo.sSerialNumber), 2, i)序列號 = 序列號 + 字符 (DiskInfo.sSerialNumber [i + 1])序列號 = 序列號 + 字符 (DiskInfo.sSerialNumber [i])處理事件 ().變量循環尾 ()' 對取出的序列號進行處理序列號 = 刪全部空 (序列號).如果真結束CloseHandle (hDisk).否則信息框 (“打開硬盤失敗,請以管理員權限運行本程序!”, #錯誤圖標, “錯誤”, ) .如果結束' 關閉打開的設備 CloseHandle (hDisk) ' 將序列號返回給調用方 返回 (序列號)?
注入hook
我們采用注入的方式
h.安裝Hook (“kernel32.dll”, “DeviceIoControl”, 到整數 (&MyDeviceDisk)) h.開始Hook ()MyDeviceDisk回調函數
.版本 2.子程序 MyDeviceDisk, 邏輯型, 公開 .參數 hDisk, 整數型 .參數 dwIoControlCode, 整數型 .參數 lpInBuffer, 整數型 .參數 nInBufferSize, 整數型 .參數 lpOutBuffer, 整數型 .參數 nOutBufferSize, 整數型 .參數 lpBytesReturned, 整數型 .參數 lpOverlapped, 整數型 .局部變量 tmp, 字節型, , "20" .局部變量 i, 整數型j = j + 1 .如果 (j % 2 = 1)h.停止Hook ()DeviceIoControl (hDisk, dwIoControlCode, lpInBuffer, nInBufferSize, lpOutBuffer, nOutBufferSize, lpBytesReturned, lpOverlapped)h.開始Hook () .否則重定義數組 (tmp, 假, 20).計次循環首 (20, i)tmp [i] = 取代碼 (取文本中間 (“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”, 取隨機數 (1, 36), 1), ).計次循環尾 ()h.停止Hook ()DeviceIoControl (hDisk, dwIoControlCode, lpInBuffer, nInBufferSize, lpOutBuffer, nOutBufferSize, lpBytesReturned, lpOverlapped)h.開始Hook ()' 上面必須重新調用一次DeviceIoControl這個API,因為原程序后面的代碼中有用到lpOutBuffer偏移0X6和偏移0X78里的數值,如果不調用這個API而是直接寫內存,那么會導致程序出錯引起SEH彈出信息框,所以必須先填充好lpOutBuffer,再改變需要改變的地方寫到內存 (tmp, lpOutBuffer + 40, 20) .如果結束 返回 (真)源碼:http://www.511yj.com/eyuyan-hook-81.html
?
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
蘋果手機屏幕顯示已中病毒?你好;手機有病毒,可以用騰訊手機管家殺毒。騰訊手機管家獨有的雙核查殺引擎,可以有效檢測手機病毒。使用云端智能查殺技術,查殺病毒木馬,以及強大的軟件一鍵分析,刪除多余的系統程序,并可隨時恢復。隱私保護支持圖案解鎖,不再像數字那樣單調。謝謝你。蘋果手機怎么殺毒和清理手機內存?1.進入對應的APP,在設置里找到清除緩存,然后清除。如果你自己下載了一些東西,自己刪除不必要的文件。...
為什么蘋果的App Store接受不到應用的更新?你好可能會是可以設置不正確的導致,建議您重新你的操作設置。iphone手機app store設置更新的操作為:目標:然后點擊桌面“系統設置”圖標。第二步:中,選擇“itunes store和app store”:第二步:登錄賬戶后,把“更新”選項打開即可。itunes store 與app store無法開啟?出現該情況后,我們可能無法從App S...
htc是哪國品牌?HTC是哪個國家的牌子?HTC是一個中國品牌。宏達電簡介:宏達國際電子有限公司成立于1997年5月15日,是臺灣一家手機和平板電腦制造商。是全球最大的Windows Mobile智能手機制造商,全球最大的智能手機OEM和制造商。宏達電發展歷程:宏達電成立之初沒有非常成功的產品,知名度不高。后來,HTC開發的iPad產品真正確立了在PDA市場的領先地位,并逐漸成為全球最大的PDA ...