好久沒寫部落格了,最近想抽點時間補上之前的東西,有些東西要記錄下來,以後看了會覺得很有意思。
這個小工具沒有什麼可以說的,直接vc編譯連線就可以用了。下面附上**:
#include "stdio.h"
#include
int main()
printf("請輸入要獲得索引號的函式的名稱:\n");
char apiname[256];
scanf("%s",apiname);
//獲得函式位址
farproc paddress1 = getprocaddress(getmodulehandle("ntdll"),(const char*)apiname);
//轉換成pulong
pulong paddress2 = (pulong)paddress1;
//kd> u ntdll!ntcreatefile
//ntdll!ntcreatefile:
//772555c8 b842000000 mov eax,42h
//772555cd ba0003fe7f mov edx,offset shareduserdata!systemcallstub (7ffe0300)
//772555d2 ff12 call dword ptr [edx]
//772555d4 c22c00 ret 2ch
//772555d7 90 nop
//(ulong)paddress2+1,b8彙編指令為乙個位元組所以要加1,然後重新轉換位址指標
paddress2 = (pulong)((ulong)paddress2+1);
//*paddress2表示獲得此位址的內容,內容長度為4個位元組
printf("[%s]在ssdt表中的索引:%x \n",apiname,*paddress2);
system("pause");
return 0;
其實短短幾行**,但本菜鳥覺得還是挺好用的。呵呵
菜鳥言論僅供娛樂。
分享到:
2011-09-25 15:14
瀏覽 715
ssdt函式索引號 SSDT索引號的獲取
系統服務描述符表,system service dispatch table,ssdt windows在核心層提供了兩張表,分別為ssdt system service descriptor table,系統服務描述表 和shadow ssdt 使用者層的api實現,實際是層簡單的包裝,最終都是轉到...
初學SSDT遇到的乙個指標問題
最近想學驅動開發,參考別人的 但是遇到了一些問題,昨晚調了乙個晚上都找不到原因,快12點半 的時候才找 到原因,是指標沒寫好,其實根本原因是自己基礎不紮實。ssdt的結構如下 typedef struct servicedescriptortable pservicedescriptortable ...
Fortran乙個獲取硬體系統資訊的函式庫
此函式庫提供了 visual fortran 上獲取硬碟id,cpu編號,windows安裝時間及檔案頭部校驗的四個函式。可用於簡單的程式加密。但切勿用於商業性很強的地方 近期,不少朋友向筆者詢問 fortran 如何獲得網絡卡位址,硬碟id,cpu編號等。對此,筆者給出乙個自己書寫的簡單的函式庫。...