• <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 葉子 閱讀(4801) 評論(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久久丝袜| 久久国产香蕉视频| 久久久免费精品re6| 日本欧美国产精品第一页久久| 久久精品亚洲AV久久久无码| 国产午夜精品理论片久久| 久久久久亚洲精品日久生情| 久久av免费天堂小草播放| 国内精品人妻无码久久久影院| 久久国产免费直播| 久久精品成人免费网站| 亚洲国产精品一区二区久久hs| 久久AAAA片一区二区| yellow中文字幕久久网| 久久精品国产99久久无毒不卡| 热久久最新网站获取| 国内精品久久久久久中文字幕| 99久久精品国产麻豆| 97精品依人久久久大香线蕉97 | 国产精品成人久久久| 伊人久久免费视频| 国产精品一区二区久久精品| 精品久久久中文字幕人妻| 亚洲国产成人精品女人久久久 | 国产精久久一区二区三区| 久久久久久亚洲AV无码专区 | 99久久99久久精品国产片| 国产成人精品久久二区二区| 麻豆亚洲AV永久无码精品久久| 久久经典免费视频| 国色天香久久久久久久小说| 国内高清久久久久久| 无码人妻少妇久久中文字幕蜜桃 | 一本大道久久香蕉成人网| 久久涩综合| 久久久久人妻一区二区三区| 久久亚洲精品国产精品婷婷| 久久这里的只有是精品23| 中文字幕久久精品无码|