• <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  回復  更多評論   

            日日狠狠久久偷偷色综合免费| 欧美午夜A∨大片久久| 久久久久国产一级毛片高清版| 久久国产免费直播| 7777精品久久久大香线蕉| 狠狠狠色丁香婷婷综合久久五月| 久久99精品久久久久久不卡| 久久久久国产精品熟女影院 | 色噜噜狠狠先锋影音久久| 精品久久久久久国产三级| 久久亚洲欧美国产精品| 亚州日韩精品专区久久久| 亚洲一区中文字幕久久| 人妻无码久久一区二区三区免费| 久久久久亚洲精品中文字幕| 久久国产精品久久精品国产| 国色天香久久久久久久小说| 久久久久久A亚洲欧洲AV冫| 久久久中文字幕| 国内精品人妻无码久久久影院| 久久综合视频网| 久久青青草原精品国产软件| 91精品日韩人妻无码久久不卡| 久久亚洲国产精品一区二区| 久久综合给久久狠狠97色| 久久久精品人妻一区二区三区蜜桃 | 国内精品久久久久影院日本| 久久久久久久女国产乱让韩| 亚洲国产精品成人久久蜜臀| 久久午夜无码鲁丝片午夜精品| 精品国产VA久久久久久久冰| 亚洲性久久久影院| 久久精品一区二区三区AV| 久久久久久久女国产乱让韩| 狠狠精品久久久无码中文字幕| 久久久久久精品无码人妻| 亚洲色欲久久久综合网| 婷婷久久久亚洲欧洲日产国码AV| 性高湖久久久久久久久| 久久久亚洲欧洲日产国码二区 | 国产精品va久久久久久久|