日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

易语言API HOOK DeviceIOControl修改磁盘序列号

發布時間:2023/12/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 易语言API HOOK DeviceIOControl修改磁盘序列号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

?

總結

以上是生活随笔為你收集整理的易语言API HOOK DeviceIOControl修改磁盘序列号的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色综合99久久久无码国产精品 | av大片免费| 国产av不卡一区 | 一级黄色短片 | 欧美又大粗又爽又黄大片视频 | 午夜视频在线免费看 | 成人动态视频 | 欧美18一20男同69gay | av免费在线播放 | 亚洲视频成人 | www.av在线.com| 成人h动漫精品一区二区器材 | 久久1234| 麻豆成人免费 | 日韩欧美国产一区二区三区在线观看 | 欧美透逼视频 | 国产精品精品国产 | 亚洲自拍成人 | 美女扒开尿口给男人桶 | 日韩三级国产精品 | 九九视频国产 | 一区二区三区国产精品 | 911久久| 一区二区三区四区av | 五月天免费网站 | 韩国在线不卡 | 久久久午夜电影 | 亚洲精品一区二区三区在线观看 | 轻点好疼好大好爽视频 | 8x8ⅹ成人永久免费视频 | 自拍视频第一页 | 成人黄色在线免费观看 | 91制服诱惑 | 国产黄色片免费看 | 无码人妻丰满熟妇区五十路百度 | 欧美熟妇精品黑人巨大一二三区 | 午夜免费观看视频 | 手机电影在线观看 | 欧洲av在线 | 啪啪福利社 | 电影中文字幕 | 成熟妇人a片免费看网站 | 天天想你在线观看完整版电影高清 | 国产中文字幕三区 | 国产情侣av自拍 | 色综合狠狠操 | 精品少妇一二三区 | 免费不卡av在线 | 国产男女猛烈无遮挡a片漫画 | 黄色av三级| 中文字幕人妻一区二区三区 | 狠狠操欧美 | 伊人久久网站 | 成人h动漫精品一区二 | 久久久久女人精品毛片九一 | 91日韩中文字幕 | 成人自拍视频网 | 国产精品熟女一区二区不卡 | 理想之城连续剧40集免费播放 | 国产精品自拍一区 | 成人av网址在线 | 色婷婷视频在线 | 久久无码精品丰满人妻 | 成人黄色在线网站 | 日本不卡视频一区 | 毛片在线视频播放 | 91成人精品国产刺激国语对白 | 中文字幕国产日韩 | 亚洲伊人成人网 | 午夜精品一区二区三区在线 | 黄黄的视频在线观看 | 好大好爽视频 | 国产精华一区二区三区 | 国产精品一二三四五区 | 久久av资源网 | 狠狠躁天天躁综合网 | 日日干夜| 国产在线色站 | 最近中文字幕mv免费高清在线 | 国产又粗又猛又爽视频 | 色婷婷av国产精品 | 久久影视网| 久久人妻无码aⅴ毛片a片app | 日本熟伦人妇xxxx | 日韩精品www | 激情视频亚洲 | 麻豆传媒在线 | 涩涩免费网站 | 久91 | 天天色影院 | 日韩精品在线观看中文字幕 | 欧美日韩国产a | 国产日韩欧美中文字幕 | 久久综合欧美 | 99热3| 日本精品一区在线观看 | 日本人妖xxxx | 少妇天天干 | 女同动漫免费观看高清完整版在线观看 |