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

posts - 94, comments - 250, trackbacks - 0, articles - 0
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

NDIS HOOK是專業(yè)級(jí)防火墻使用的一種攔截技術(shù),NDIS HOOK的重點(diǎn)是如何獲得特定協(xié)議對(duì)應(yīng)NDIS_PROTOCOL_BLOCK指針,獲得了該指針,接下來(lái)就可以替換該協(xié)議所注冊(cè)的收發(fā)函數(shù),而達(dá)到攔截網(wǎng)絡(luò)數(shù)據(jù)的目的。
     獲 得NDIS_PROTOCOL_BLOCK指針的方法一般是用NdisRegisterProtocol注冊(cè)一個(gè)新的協(xié)議,所獲得的協(xié)議句柄實(shí)際上就是一 個(gè)NDIS_PROTOCOL_BLOCK指針,順著該指針遍歷NDIS_PROTOCOL_BLOCK鏈表,就可以找到你所要掛鉤的協(xié)議所對(duì)應(yīng)的 NDIS_PROTOCOL_BLOCK.之所以可以這樣做,是因?yàn)槊孔?cè)一個(gè)協(xié)議,系統(tǒng)都會(huì)把該協(xié)議對(duì)應(yīng)的NDIS_PROTOCOL_BLOCK放置 在協(xié)議鏈表的開(kāi)頭,該協(xié)議鏈表每個(gè)元素都是NDIS_PROTOCOL_BLOCK類型,代表一個(gè)已經(jīng)注冊(cè)的協(xié)議。
     事 實(shí)上我們需要的只是TCPIP協(xié)議族的NDIS_PROTOCOL_BLOCK指針,畢竟TCP,IP,ARP,ICMP等等幾乎所有我們感興趣的協(xié)議, 都是在tcpip.sys協(xié)議驅(qū)動(dòng)里面實(shí)現(xiàn)的。如果我們只需要TCPIP協(xié)議所對(duì)應(yīng)的NDIS_PROTOCOL_BLOCK,那么上面的方法就有點(diǎn)繁瑣 了。我們可以試著尋找更簡(jiǎn)便的方法來(lái)獲得TCPIP協(xié)議的NDIS_PROTOCOL_BLOCK.
于 是我對(duì)tcpip.sys驅(qū)動(dòng)進(jìn)行了反匯編,發(fā)現(xiàn)NDIS_PROTOCOL_BLOCK指針存放在一個(gè)名為_(kāi)ARPHandle的全局變量里面,所以如 果能找到_ARPHandle的地址,我們就成功了,我們完全可以把該全局變量的偏移量作為一個(gè)常量來(lái)使用,但這里純粹為了拓寬思路,我介紹另一種找到該 全局變量的方法。
     Tcpip.sys有個(gè)導(dǎo)出函數(shù)叫IPDelayedNdisReEnumerateBindings,該函數(shù)內(nèi)部曾經(jīng)出現(xiàn)過(guò)_ARPHandle 的地址,為什么會(huì)出現(xiàn)它的地址呢,因?yàn)樵摵瘮?shù)內(nèi)部調(diào)用過(guò)NdisReEnumerateProtocolBindings函數(shù),懂得反匯編的應(yīng)該知道,在 用call指令調(diào)用函數(shù)之前,必然會(huì)用到push指令將函數(shù)的參數(shù)壓到棧里面去,不巧的是, NdisReEnumerateProtocolBindings函數(shù)只有一個(gè)參數(shù),而該參數(shù)恰恰是一個(gè)NDIS_PROTOCOL_BLOCK指針類 型,在這里,實(shí)際上就是把_ARPHandle當(dāng)作參數(shù)傳給了
NdisReEnumerateProtocolBindings,所以_ARPHandle的地址必然會(huì)出現(xiàn)在push指令的后面,說(shuō)具體一點(diǎn),緊跟push指令的四個(gè)字節(jié)就是_ARPHandle的地址。
      所以具體的思路就是這樣,先找到IPDelayedNdisReEnumerateBindings函數(shù)的地址,然后從該函數(shù)的地址開(kāi)始搜索push指令的特征碼,搜到了以后,把緊跟push指令的四個(gè)字節(jié)作為指向NDIS_PROTOCOL_BLOCK指針的指針?lè)祷亍?br>     也許有的人會(huì)問(wèn),如果IPDelayedNdisReEnumerateBindings函數(shù)體內(nèi)部出現(xiàn)過(guò)多次push指令,豈不是會(huì)搜出不正確的地址,事實(shí)上,雖然都叫push指令,然而在機(jī)器碼級(jí)別是不同的,push指令的機(jī)器碼表示有十幾種之多,用來(lái)區(qū)別不同的尋址方式,調(diào)用NdisReEnumerateProtocolBindings 時(shí)用的push指令字節(jié)序列是0xff35,這個(gè)push指令表示后面緊跟的四個(gè)字節(jié)是一個(gè)內(nèi)存地址,而不是一個(gè)立即數(shù)或者寄存器之類的。知道了這些,我 們就可以清楚,在一個(gè)有限的地址范圍,0xff35的唯一性是可以得到滿足的。根據(jù)我的觀察,在win2000,winxp,win2003上面,IPDelayedNdisReEnumerateBindings本身是一個(gè)很短的函數(shù),0xff35指令確實(shí)只出現(xiàn)過(guò)一次,所以該方法是很可靠的。
思路已經(jīng)出來(lái)了,下面我把詳細(xì)的代碼給大家貼出來(lái),理解這些代碼需要對(duì)windows Pe格式有所了解,如果你不想理解也行,代碼可以直接拿來(lái)用。
       以下是我寫的一個(gè) 獲取內(nèi)核模塊某個(gè)導(dǎo)出函數(shù)地址的 通用例程。這里主要是為了獲取tcpip.sys模塊的導(dǎo)出函數(shù)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);//該函數(shù)用來(lái)獲得內(nèi)核模塊的基地址
    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函數(shù)的實(shí)現(xiàn):
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協(xié)議的NDIS_PROTOCOL_BLOCK指針的函數(shù)
   void* GetProtocolBlock()
{
    char* base;
    char bytes[]={0xff,0x35};
    base=GetRoutineAddress("tcpip.sys","IPDelayedNdisReEnumerateBindings");
     while(RtlCompareMemory(base,bytes,2)!=2)
    {
       base++;
    }
    return **((void***)(base+2));
}


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   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>
            日韩视频一区二区| 亚洲网站啪啪| 欧美激情久久久久| 欧美高清视频免费观看| 久久久亚洲国产天美传媒修理工 | 韩国av一区二区三区四区| 国产一区二区三区高清播放| 国产欧美日本在线| 狠狠入ady亚洲精品| 亚洲高清av| 99在线热播精品免费| 亚洲欧美国产精品桃花| 欧美在线观看视频一区二区| 免费国产自线拍一欧美视频| 亚洲日韩欧美视频一区| 一本久道久久综合狠狠爱| 午夜欧美大片免费观看| 久久视频国产精品免费视频在线| 欧美韩日高清| 国产一区二区| 中日韩美女免费视频网址在线观看| 欧美一级淫片aaaaaaa视频| 久久全国免费视频| 日韩午夜在线观看视频| 久久久久国色av免费看影院| 欧美女同视频| 亚洲电影免费在线| 午夜久久久久久| 亚洲国产裸拍裸体视频在线观看乱了中文 | 日韩亚洲欧美一区| 亚洲伦理自拍| 久久久久高清| 亚洲视频在线看| 欧美va日韩va| 国产亚洲午夜高清国产拍精品| 好吊日精品视频| 亚洲一区3d动漫同人无遮挡| 你懂的网址国产 欧美| 亚洲午夜激情| 欧美日韩一区二区三区在线视频 | 国产日韩欧美不卡| 亚洲香蕉视频| 日韩亚洲欧美在线观看| 欧美xart系列高清| 1024成人| 欧美成人免费视频| 久久精品亚洲| 红桃视频成人| 久久综合色播五月| 久久久精品国产99久久精品芒果| 国产毛片一区| 欧美一区二区在线看| 亚洲午夜精品久久| 欧美视频三区在线播放| 亚洲天堂网在线观看| 亚洲免费精品| 国产精品wwwwww| 亚洲欧美在线观看| 亚洲欧洲99久久| 国产综合婷婷| 母乳一区在线观看| 欧美/亚洲一区| 亚洲理论在线| 亚洲美女在线国产| 国产精品亚洲成人| 欧美在线播放一区| 久久激情视频免费观看| 精品成人国产| 亚洲国产另类精品专区| 欧美日韩国产精品| 欧美亚洲色图校园春色| 欧美一区二区精品在线| 在线观看成人网| 亚洲国产精品第一区二区三区| 欧美成人一区二免费视频软件| 亚洲精品社区| 亚洲色图在线视频| 好吊妞**欧美| 亚洲精品久久7777| 国产精品日韩精品欧美在线| 久久一区二区三区四区| 免费日韩成人| 亚洲欧美视频在线| 欧美在线观看一区| 亚洲精品一区二区三区婷婷月| 亚洲精品久久久久久久久| 国产精品久久久久久久久免费 | 欧美高清视频| 亚洲一区二区三区免费在线观看| 一区二区欧美日韩视频| 国产在线欧美日韩| 亚洲精品日日夜夜| 国产一区二区三区久久久久久久久| 嫩草影视亚洲| 国产精品卡一卡二| 欧美激情偷拍| 国产日韩在线亚洲字幕中文| 欧美激情乱人伦| 国产日韩在线一区| 最新国产成人在线观看| 国产综合在线视频| 一区二区三区欧美激情| 亚洲国产裸拍裸体视频在线观看乱了中文 | 午夜在线一区二区| 1769国产精品| 日韩一级大片在线| 影院欧美亚洲| 亚洲一区视频在线| 99日韩精品| 久久躁日日躁aaaaxxxx| 欧美一级久久| 欧美视频不卡| 亚洲国产精品成人| 一区久久精品| 性色av一区二区三区| 亚洲特黄一级片| 欧美电影在线观看完整版| 久久久精品国产免大香伊 | 久久久久国产一区二区三区四区 | 国产精品免费看片| 亚洲美女在线看| 亚洲精品国产品国语在线app| 欧美亚洲视频在线观看| 亚洲一区二区三区四区视频| 欧美电影美腿模特1979在线看| 久久婷婷国产综合精品青草| 国产精品日本欧美一区二区三区| 亚洲乱码国产乱码精品精天堂| 亚洲黄色小视频| 久久亚洲影音av资源网| 久久久99免费视频| 国内精品久久久| 欧美亚洲视频一区二区| 久久精品国产久精国产爱| 国产精品亚洲片夜色在线| 亚洲视频高清| 午夜精品偷拍| 国产日韩精品入口| 欧美一区深夜视频| 欧美va天堂va视频va在线| 日韩亚洲国产精品| 亚洲国产精品久久久久婷婷884| 亚洲欧美日韩国产综合精品二区| 亚洲中字黄色| 国产精品私房写真福利视频 | 久久一二三国产| 在线成人亚洲| 欧美电影打屁股sp| 99精品视频免费观看视频| 亚洲欧美中日韩| 国内外成人在线视频| 美女日韩欧美| 99精品久久| 久久精品一本| 亚洲激情国产| 国产精品多人| 久久国产综合精品| 亚洲第一视频| 亚洲在线第一页| 国产在线日韩| 欧美激情精品久久久久久| 一本久久综合亚洲鲁鲁五月天| 先锋影音国产一区| 亚洲国产乱码最新视频| 欧美日韩综合精品| 久久成人精品| 亚洲精品一二三区| 久久精品亚洲精品| 亚洲免费精品| 国产手机视频一区二区| 美女视频黄 久久| 中文精品在线| 免费欧美在线| 午夜在线观看免费一区| 亚洲精品乱码久久久久| 国产精品视频xxx| 你懂的一区二区| 亚洲欧美一区二区激情| 亚洲国产精品成人综合色在线婷婷| 亚洲欧美激情视频| 亚洲高清免费在线| 国产精品青草久久久久福利99| 男男成人高潮片免费网站| 亚洲你懂的在线视频| 亚洲精品四区| 欧美激情欧美狂野欧美精品 | 亚洲乱码久久| 欧美.com| 久久精品国产免费看久久精品| 最新亚洲一区| 一区免费观看视频| 国产日韩欧美| 国产精品丝袜久久久久久app| 欧美精品v日韩精品v韩国精品v| 久久久久久久一区二区三区| 在线中文字幕一区| 亚洲久久一区二区| 亚洲黄色三级| 亚洲电影在线免费观看| 麻豆久久婷婷|