青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 94, comments - 250, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

探索NDIS HOOK新的實現方法(1)

Posted on 2008-08-30 23:42 Condor 閱讀(1725) 評論(0)  編輯 收藏 引用

NDIS HOOK是專業級防火墻使用的一種攔截技術,NDIS HOOK的重點是如何獲得特定協議對應NDIS_PROTOCOL_BLOCK指針,獲得了該指針,接下來就可以替換該協議所注冊的收發函數,而達到攔截網絡數據的目的。
     獲 得NDIS_PROTOCOL_BLOCK指針的方法一般是用NdisRegisterProtocol注冊一個新的協議,所獲得的協議句柄實際上就是一 個NDIS_PROTOCOL_BLOCK指針,順著該指針遍歷NDIS_PROTOCOL_BLOCK鏈表,就可以找到你所要掛鉤的協議所對應的 NDIS_PROTOCOL_BLOCK.之所以可以這樣做,是因為每注冊一個協議,系統都會把該協議對應的NDIS_PROTOCOL_BLOCK放置 在協議鏈表的開頭,該協議鏈表每個元素都是NDIS_PROTOCOL_BLOCK類型,代表一個已經注冊的協議。
     事 實上我們需要的只是TCPIP協議族的NDIS_PROTOCOL_BLOCK指針,畢竟TCP,IP,ARP,ICMP等等幾乎所有我們感興趣的協議, 都是在tcpip.sys協議驅動里面實現的。如果我們只需要TCPIP協議所對應的NDIS_PROTOCOL_BLOCK,那么上面的方法就有點繁瑣 了。我們可以試著尋找更簡便的方法來獲得TCPIP協議的NDIS_PROTOCOL_BLOCK.
于 是我對tcpip.sys驅動進行了反匯編,發現NDIS_PROTOCOL_BLOCK指針存放在一個名為_ARPHandle的全局變量里面,所以如 果能找到_ARPHandle的地址,我們就成功了,我們完全可以把該全局變量的偏移量作為一個常量來使用,但這里純粹為了拓寬思路,我介紹另一種找到該 全局變量的方法。
     Tcpip.sys有個導出函數叫IPDelayedNdisReEnumerateBindings,該函數內部曾經出現過_ARPHandle 的地址,為什么會出現它的地址呢,因為該函數內部調用過NdisReEnumerateProtocolBindings函數,懂得反匯編的應該知道,在 用call指令調用函數之前,必然會用到push指令將函數的參數壓到棧里面去,不巧的是, NdisReEnumerateProtocolBindings函數只有一個參數,而該參數恰恰是一個NDIS_PROTOCOL_BLOCK指針類 型,在這里,實際上就是把_ARPHandle當作參數傳給了
NdisReEnumerateProtocolBindings,所以_ARPHandle的地址必然會出現在push指令的后面,說具體一點,緊跟push指令的四個字節就是_ARPHandle的地址。
      所以具體的思路就是這樣,先找到IPDelayedNdisReEnumerateBindings函數的地址,然后從該函數的地址開始搜索push指令的特征碼,搜到了以后,把緊跟push指令的四個字節作為指向NDIS_PROTOCOL_BLOCK指針的指針返回。
     也許有的人會問,如果IPDelayedNdisReEnumerateBindings函數體內部出現過多次push指令,豈不是會搜出不正確的地址,事實上,雖然都叫push指令,然而在機器碼級別是不同的,push指令的機器碼表示有十幾種之多,用來區別不同的尋址方式,調用NdisReEnumerateProtocolBindings 時用的push指令字節序列是0xff35,這個push指令表示后面緊跟的四個字節是一個內存地址,而不是一個立即數或者寄存器之類的。知道了這些,我 們就可以清楚,在一個有限的地址范圍,0xff35的唯一性是可以得到滿足的。根據我的觀察,在win2000,winxp,win2003上面,IPDelayedNdisReEnumerateBindings本身是一個很短的函數,0xff35指令確實只出現過一次,所以該方法是很可靠的。
思路已經出來了,下面我把詳細的代碼給大家貼出來,理解這些代碼需要對windows Pe格式有所了解,如果你不想理解也行,代碼可以直接拿來用。
       以下是我寫的一個 獲取內核模塊某個導出函數地址的 通用例程。這里主要是為了獲取tcpip.sys模塊的導出函數IPDelayedNdisReEnumerateBindings
   void* GetRoutineAddress(char* ModuleName,char* RoutineName)
{
       PIMAGE_DOS_HEADER dos_hdr;
    PIMAGE_NT_HEADERS nt_hdr;
    PIMAGE_EXPORT_DIRECTORY export_dir;
    ULONG *fn_name, *fn_addr, i;
      char* base;
      base=(char*)FindModule(ModuleName);//該函數用來獲得內核模塊的基地址
    if(!base)
        return NULL;
    DbgPrint("tcpip address:%p",base);
    dos_hdr = (PIMAGE_DOS_HEADER)base;
    if (dos_hdr->e_magic != IMAGE_DOS_SIGNATURE)
        return NULL;
    nt_hdr = (PIMAGE_NT_HEADERS)(base + dos_hdr->e_lfanew);
    export_dir = (PIMAGE_EXPORT_DIRECTORY)(base + nt_hdr->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress);
    fn_name = (ULONG *)(base + export_dir->AddressOfNames);
    fn_addr = (ULONG *)(base + export_dir->AddressOfFunctions);
    for (i = 0; i < export_dir->NumberOfNames; i++, fn_name++, fn_addr++)
    {
        if (strcmp(RoutineName, base + *fn_name) == 0)
        {
            return base + *fn_addr;
        }
    }
    return NULL;
}
以下是FindModule函數的實現:
void *
FindModule(char *name)
{
    ULONG i, n, *q;
    PSYSTEM_MODULE_INFORMATION p;
    void *base;
    ZwQuerySystemInformation(SystemModuleInformation, &n, 0, &n);
    q = (ULONG *)ExAllocatePool(PagedPool, n);
    ZwQuerySystemInformation(SystemModuleInformation, q, n * sizeof (*q), 0);
    p = (PSYSTEM_MODULE_INFORMATION)(q + 1);
    base = NULL;
    for (i = 0; i < *q; i++) {
        if (_stricmp(p.ImageName + p.ModuleNameOffset, name) == 0) {
            base = p.Base;
            break;
        }
    }
    ExFreePool(q);
    return base;
}
以下是獲取tcpip協議的NDIS_PROTOCOL_BLOCK指針的函數
   void* GetProtocolBlock()
{
    char* base;
    char bytes[]={0xff,0x35};
    base=GetRoutineAddress("tcpip.sys","IPDelayedNdisReEnumerateBindings");
     while(RtlCompareMemory(base,bytes,2)!=2)
    {
       base++;
    }
    return **((void***)(base+2));
}


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品一区二区高清在线观看| 国产精品久线观看视频| 精品盗摄一区二区三区| 久久国产主播精品| 久久高清国产| 欧美午夜精品电影| 亚洲丰满在线| 欧美黄免费看| 欧美日韩亚洲系列| 亚洲一区二区免费视频| 一区二区三区精品| 国产精品色一区二区三区| 久久国产欧美日韩精品| 久久精品在线| 日韩亚洲视频在线| 亚洲色诱最新| 狠狠色丁香久久综合频道| 免费一级欧美片在线观看| 欧美金8天国| 亚洲欧美另类国产| 久久全球大尺度高清视频| 亚洲免费高清视频| 91久久久久久久久| 日韩亚洲欧美中文三级| 国产精品嫩草影院av蜜臀| 久久全国免费视频| 欧美日韩一区二| 久久亚洲美女| 欧美日韩伦理在线| 噜噜噜在线观看免费视频日韩| 欧美电影在线观看完整版| 欧美在线首页| 欧美日韩国产bt| 久久精品一区二区三区不卡| 欧美精品xxxxbbbb| 久久久伊人欧美| 欧美日韩亚洲一区二区| 久久在线免费观看| 欧美四级电影网站| 欧美成年人视频网站| 国产精品毛片| 亚洲欧洲在线看| 亚洲精品视频二区| 欧美日韩岛国| 久久国产精品电影| 欧美高清hd18日本| 久久精品综合网| 欧美日韩国产精品| 媚黑女一区二区| 国产精品一区毛片| 亚洲美女一区| 亚洲福利视频三区| 欧美一区永久视频免费观看| 亚洲已满18点击进入久久| 欧美aaa级| 欧美成人一区在线| 国外成人网址| 亚洲女ⅴideoshd黑人| 一本色道久久综合亚洲精品高清| 久久精品视频在线| 国产一区二区三区免费不卡| 久久久蜜桃一区二区人| 国产精品理论片在线观看| 亚洲开发第一视频在线播放| 亚洲精品视频免费观看| 麻豆精品一区二区综合av| 久久一区二区三区超碰国产精品| 国产欧美精品一区aⅴ影院| 亚洲视屏在线播放| 午夜精品视频一区| 国产精品亚洲成人| 午夜精品久久久久99热蜜桃导演| 亚洲欧美在线x视频| 国产精品亚洲аv天堂网| 亚洲欧美日韩国产| 久久精品欧美日韩精品| 激情一区二区三区| 免费一区二区三区| 亚洲国产精品福利| 亚洲网站在线| 国产欧美精品一区二区三区介绍| 亚洲欧美国产高清va在线播| 久久av一区二区三区| 国产在线精品一区二区中文| 久久久www成人免费精品| 欧美黄色网络| 亚洲一区二区三区中文字幕| 国产精品卡一卡二卡三| 欧美一级大片在线观看| 久久免费视频一区| 亚洲理论在线观看| 国产精品免费区二区三区观看| 西西人体一区二区| 巨胸喷奶水www久久久免费动漫| 亚洲国产欧美日韩| 欧美午夜电影在线| 欧美在线观看一区二区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美大片免费观看在线观看网站推荐| 亚洲高清在线观看一区| 欧美精品激情| 亚洲一区在线免费观看| 免费在线国产精品| 亚洲婷婷在线| 黑人一区二区| 欧美日韩中文字幕| 久久深夜福利免费观看| 一本久久精品一区二区| 久久在线91| 亚洲午夜电影在线观看| 激情综合久久| 国产精品欧美日韩| 欧美成人一区二区三区在线观看| 亚洲在线一区二区三区| 女同性一区二区三区人了人一| 亚洲一区二区精品在线观看| 黄色在线成人| 国产精品综合不卡av| 欧美成人一区二区三区在线观看 | 99re66热这里只有精品4| 久久精品在线观看| 亚洲深夜影院| 亚洲日本理论电影| 狠狠色综合网站久久久久久久| 欧美视频不卡| 欧美 日韩 国产精品免费观看| 欧美一级专区| 亚洲一区二区三区在线| 亚洲精品色婷婷福利天堂| 美女主播视频一区| 久久久久久免费| 欧美在线免费观看视频| 亚洲欧美区自拍先锋| 一区二区三区四区国产| 亚洲欧洲另类国产综合| 亚洲电影在线播放| 狠狠色噜噜狠狠色综合久 | 欧美成人国产一区二区| 久久精品一区二区| 久久精品国产99国产精品| 午夜一级在线看亚洲| 这里只有精品丝袜| 一区二区三区欧美成人| 亚洲每日在线| 日韩亚洲在线观看| 亚洲三级观看| 亚洲久久在线| 99国产精品私拍| 亚洲视频久久| 亚洲性xxxx| 亚洲欧美高清| 久久精品99久久香蕉国产色戒| 久久xxxx精品视频| 久久精品人人爽| 乱人伦精品视频在线观看| 美女精品国产| 欧美日韩123| 欧美成人有码| 欧美日韩综合视频网址| 国产精品欧美日韩一区| 国产网站欧美日韩免费精品在线观看 | 亚洲美女在线视频| 9人人澡人人爽人人精品| 在线一区二区三区做爰视频网站| 在线视频精品一区| 欧美一级在线视频| 久久亚洲图片| 欧美日韩精品一区二区| 国产精品呻吟| 亚洲电影视频在线| 亚洲小少妇裸体bbw| 欧美伊人久久久久久久久影院 | 亚洲特黄一级片| 久久不见久久见免费视频1| 噜噜爱69成人精品| 亚洲国产精品久久91精品| 一区二区三区精品久久久| 欧美在线91| 欧美噜噜久久久xxx| 国产乱码精品一区二区三区忘忧草 | 欧美亚洲免费| 欧美成人tv| 国产视频亚洲精品| 亚洲裸体俱乐部裸体舞表演av| 亚洲欧美日韩视频二区| 久久综合久久久| 亚洲精品在线观看免费| 欧美在线播放一区| 欧美日韩一区国产| 亚洲国产欧美一区二区三区同亚洲 | 国产视频久久网| 99热精品在线观看| 久久久免费精品视频| 日韩视频在线永久播放| 久久乐国产精品| 国产精品一级| 亚洲视频碰碰| 欧美激情一区二区三区全黄| 欧美一区二区三区婷婷月色 | 亚洲黄色成人网|