• <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>

            elva

            利用NtUnmapViewOfSection強制卸載模塊

            確實可以卸載指定進程指定位置的模塊,但有幾個問題:
            [1]  PEB的模塊列表中還存在該模塊的記錄,大部分模塊枚舉函數都是枚舉這個列表
            [2]  可能會出現訪問異常

            看來RING3下是不可能做到強制卸載模塊的完美實現,要進ring0才行。下面是測試代碼
            typedef ULONG (WINAPI *PFNNtUnmapViewOfSection)( IN HANDLE ProcessHandle,IN PVOID BaseAddress );

            BOOL UnmapViewOfModule ( DWORD dwProcessId, LPVOID lpBaseAddr )
            {
                HMODULE hModule 
            = GetModuleHandle ( L"ntdll.dll" ) ;
                
            if ( hModule == NULL )
                    hModule 
            = LoadLibrary ( L"ntdll.dll" ) ;

                PFNNtUnmapViewOfSection pfnNtUnmapViewOfSection 
            = (PFNNtUnmapViewOfSection)GetProcAddress ( hModule, "NtUnmapViewOfSection" ) ;
                
                HANDLE hProcess 
            = OpenProcess ( PROCESS_ALL_ACCESS, TRUE, dwProcessId ) ;
                ULONG    ret 
            = pfnNtUnmapViewOfSection ( hProcess, lpBaseAddr ) ;
                CloseHandle ( hProcess ) ;
                
            return ret ? false : true ;
            }

            posted on 2007-09-24 15:08 葉子 閱讀(4815) 評論(2)  編輯 收藏 引用 所屬分類: 技術研究

            Feedback

            # re: 利用NtUnmapViewOfSection強制卸載模塊 2009-09-05 03:05 mszjk

            這是ring0的代碼么?  回復  更多評論   

            # re: 利用NtUnmapViewOfSection強制卸載模塊 [未登錄] 2014-07-28 18:19 小學畢業生

            NtUnmapViewOfSection可以再Ring3下使用。
            我用VB做給你看
            Private Declare Function NtUnmapViewOfSection Lib "ntdll.dll" (ByVal ProcessHandle As Long ,ByVal BaseAddress As Long)As Long
            Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long ,ByVal bInheritHandle As Boolean, ByVal dwProcessId As Long)As Long
            Private Declare Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleFileName As String) As Long
            Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
            Private Sub UnloadNtdll(ByVal PID As Long)
            Dim hProc As Long
            hProc = OpenProcess(&h8 Or &H400, False, PID)
            If hProc = 0 Then Exit Sub
            NtUnmapViewOfSection hProc, GetModuleHandleA("ntdll.dll")
            CloseHandle hProc
            End Sub  回復  更多評論   

            久久99精品久久久久久野外| 香蕉久久久久久狠狠色| 久久er热视频在这里精品| av无码久久久久久不卡网站| 久久亚洲精品视频| 亚洲国产成人久久一区久久 | 中文字幕热久久久久久久| 少妇高潮惨叫久久久久久| 精品国产乱码久久久久久郑州公司 | 无码任你躁久久久久久| 久久久免费精品re6| 色综合久久88色综合天天 | 色妞色综合久久夜夜| 久久精品国产国产精品四凭| 久久婷婷五月综合97色一本一本| 青青草原综合久久大伊人导航 | 久久er99热精品一区二区| 尹人香蕉久久99天天拍| 久久人妻少妇嫩草AV蜜桃| 久久精品国产99国产精品澳门 | 国产精品一久久香蕉国产线看 | 久久中文字幕一区二区| 无码伊人66久久大杳蕉网站谷歌 | 国产亚州精品女人久久久久久| 欧美日韩精品久久免费| 久久综合亚洲色HEZYO国产| 国产精品视频久久久| 国产成人精品久久二区二区| 久久人人爽人人爽人人片AV不| 久久婷婷五月综合97色直播| 色婷婷噜噜久久国产精品12p | 久久99精品国产99久久6男男| 亚洲精品无码久久久久久| 国内精品伊人久久久影院 | 精品久久久久久国产潘金莲| 久久久久亚洲精品天堂| 精品国产99久久久久久麻豆| 久久精品国产日本波多野结衣 | 中文精品久久久久国产网址| 国产精品久久永久免费| 999久久久免费国产精品播放|