x86的緩衝區讀寫 還有hook

2021-09-01 06:15:20 字數 1113 閱讀 4095

x86的hook 其實很簡單  其實我們在od裡就可以知道 e9+(跳轉的位址-現在的位址-5)

然後 跳來跳去就可以 而  緩衝區讀寫有個很重要的概念就是

#define sub_code ctl_code(file_device_unknown,     0x801,     method_buffered,file_any_access)

(這是比喻一下 這個是我們的code 值 比如)

pio_stack_location stack = iogetcurrentirpstacklocation(pirp);

ulong ml = stack->majorfunction;

switch (ml)

{case irp_mj_device_control:

{  kdprint(("enter mydriver_deviceiocontrol\n"));

ntstatus status = status_success;

//得到輸入緩衝區大小

ulong cbin = stack->parameters.deviceiocontrol.inputbufferlength;

//得到輸出緩衝區大小

ulong cbout = stack->parameters.deviceiocontrol.outputbufferlength;

//得到ioctl碼

ulong code = stack->parameters.deviceiocontrol.iocontrolcode; //這個碼就是區別緩衝區的資訊的

switch (code)

{case add_code:

然後 應用層的話 應該是

deviceiocontrol(hdevice, add_code , &port, 8, &bufret, 4, &dwwrite, null);//寫上碼  

這樣就可以了 。。

如果想保護某個程序的話 需要對 ntopenprocess  進行hook  開啟的話 直接返回 null  然後  應用層 傳入乙個pid 值就可以了 

經過緩衝區pid  然後呼叫hook 函式就可以了 然後就可以保護 我們想要保護的程序了

後面如果**實現了  就把原始碼貼上出來

23 fread和fwrite的讀寫緩衝區

fwrite buff,sizeof buff 1,pfile 返回實際寫入的完整項數,引數3盡量填1,簡單粗暴 fread buff,sizeof buff 1,pfile 返回實際讀取的完整項數,引數3盡量填1,簡單粗暴 檔案內容 每4位元組複製舊檔案到新檔案,忽略錯誤檢查 file pfile...

x86上乙個非原子讀寫的例子

在x86上對16bit,32bit,64bit的運算元進行load和store操作,只要這個運算元是在一條快取行內,則保證是原子的。include include alignas 64 char data 128 寫執行緒 void thread write int val 讀執行緒 void th...

多程序讀寫乙個緩衝區的機制

今天主管給安排了乙個工作,實現多程序對乙個緩衝區的對操作,做流 的,需要高效率的機制。經過一天的思考,確定了乙個比較好的機制。把緩衝區設定成1 2兩區,讀程序 多個 去讀 1區,同時寫程序 多個 要向 2區寫,這樣可以提高一倍的吞吐量。現在問題是當讀程序發現 1區沒有了內容,怎麼通知寫程序切換到 1...