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

隨筆-60  評論-111  文章-0  trackbacks-0

 

  1 NTSTATUS
  2 NTAPI
  3 NtProtectVirtualMemory(IN HANDLE ProcessHandle,
  4                        IN OUT PVOID *UnsafeBaseAddress,
  5                        IN OUT SIZE_T *UnsafeNumberOfBytesToProtect,
  6                        IN ULONG NewAccessProtection,
  7                        OUT PULONG UnsafeOldAccessProtection)
  8 {
  9     PEPROCESS Process;
 10     ULONG OldAccessProtection;
 11     ULONG Protection;
 12     PEPROCESS CurrentProcess = PsGetCurrentProcess();
 13     PVOID BaseAddress = NULL;
 14     SIZE_T NumberOfBytesToProtect = 0;
 15     KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
 16     NTSTATUS Status;
 17     BOOLEAN Attached = FALSE;
 18     KAPC_STATE ApcState;
 19     PAGED_CODE();
 20 
 21     //
 22     // Check for valid protection flags
 23     //
 24     Protection = NewAccessProtection & ~(PAGE_GUARD|PAGE_NOCACHE);
 25     if (Protection != PAGE_NOACCESS &&
 26         Protection != PAGE_READONLY &&
 27         Protection != PAGE_READWRITE &&
 28         Protection != PAGE_WRITECOPY &&
 29         Protection != PAGE_EXECUTE &&
 30         Protection != PAGE_EXECUTE_READ &&
 31         Protection != PAGE_EXECUTE_READWRITE &&
 32         Protection != PAGE_EXECUTE_WRITECOPY)
 33     {
 34         //
 35         // Fail
 36         //
 37         return STATUS_INVALID_PAGE_PROTECTION;
 38     }
 39 
 40     //
 41     // Check if we came from user mode
 42     //
 43     if (PreviousMode != KernelMode)
 44     {
 45         //
 46         // Enter SEH for probing
 47         //
 48         _SEH2_TRY
 49         {
 50             //
 51             // Validate all outputs
 52             //
 53             ProbeForWritePointer(UnsafeBaseAddress);
 54             ProbeForWriteSize_t(UnsafeNumberOfBytesToProtect);
 55             ProbeForWriteUlong(UnsafeOldAccessProtection);
 56 
 57             //
 58             // Capture them
 59             //
 60             BaseAddress = *UnsafeBaseAddress;
 61             NumberOfBytesToProtect = *UnsafeNumberOfBytesToProtect;
 62         }
 63         _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
 64         {
 65             //
 66             // Get exception code
 67             //
 68             _SEH2_YIELD(return _SEH2_GetExceptionCode());
 69         }
 70         _SEH2_END;
 71     }
 72     else
 73     {
 74         //
 75         // Capture directly
 76         //
 77         BaseAddress = *UnsafeBaseAddress;
 78         NumberOfBytesToProtect = *UnsafeNumberOfBytesToProtect;
 79     }
 80 
 81     //
 82     // Catch illegal base address
 83     //
 84     if (BaseAddress > MM_HIGHEST_USER_ADDRESS) return STATUS_INVALID_PARAMETER_2;
 85 
 86     //
 87     // Catch illegal region size
 88     //
 89     if ((MmUserProbeAddress - (ULONG_PTR)BaseAddress) < NumberOfBytesToProtect)
 90     {
 91         //
 92         // Fail
 93         //
 94         return STATUS_INVALID_PARAMETER_3;
 95     }
 96 
 97     //
 98     // 0 is also illegal
 99     //
100     if (!NumberOfBytesToProtect) return STATUS_INVALID_PARAMETER_3;
101 
102     //
103     // Get a reference to the process
104     //
105     Status = ObReferenceObjectByHandle(ProcessHandle,
106                                        PROCESS_VM_OPERATION,
107                                        PsProcessType,
108                                        PreviousMode,
109                                        (PVOID*)(&Process),
110                                        NULL);
111     if (!NT_SUCCESS(Status)) return Status;
112 
113     //
114     // Check if we should attach
115     //
116     if (CurrentProcess != Process)
117     {
118         //
119         // Do it
120         //
121         KeStackAttachProcess(&Process->Pcb, &ApcState);
122         Attached = TRUE;
123     }
124 
125     //
126     // Do the actual work
127     //
128     Status = MiProtectVirtualMemory(Process,
129                                     &BaseAddress,
130                                     &NumberOfBytesToProtect,
131                                     NewAccessProtection,
132                                     &OldAccessProtection);
133 
134     //
135     // Detach if needed
136     //
137     if (Attached) KeUnstackDetachProcess(&ApcState);
138 
139     //
140     // Release reference
141     //
142     ObDereferenceObject(Process);
143 
144     //
145     // Enter SEH to return data
146     //
147     _SEH2_TRY
148     {
149         //
150         // Return data to user
151         //
152         *UnsafeOldAccessProtection = OldAccessProtection;
153         *UnsafeBaseAddress = BaseAddress;
154         *UnsafeNumberOfBytesToProtect = NumberOfBytesToProtect;
155     }
156     _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
157     {
158     }
159     _SEH2_END;
160 
161     //
162     // Return status
163     //
164     return Status;
165 }
posted on 2011-03-23 10:01 shaker(太子) 閱讀(6685) 評論(1)  編輯 收藏 引用 所屬分類: C++

評論:
# re: NtProtectVirtualMemory[未登錄] 2011-10-31 21:20 | kevin
請問MiProtectVirtualMemory()的unresolved external symbol如何解決?謝謝。  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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| 亚洲日本一区二区| 欧美一区二区三区另类| 正在播放亚洲一区| 久久综合亚洲社区| 久久人人爽爽爽人久久久| 欧美日韩亚洲一区二区三区四区| 麻豆精品91| 国产网站欧美日韩免费精品在线观看 | 欧美中文字幕| 欧美午夜片欧美片在线观看| 亚洲电影中文字幕| 永久555www成人免费| 午夜视黄欧洲亚洲| 亚洲欧美日韩久久精品| 欧美美女视频| 最新国产成人av网站网址麻豆| 一区二区三区在线视频免费观看| 午夜一级在线看亚洲| 性久久久久久久久| 国产精品久久久一区麻豆最新章节| 最新成人av网站| 日韩亚洲精品在线| 欧美日韩成人在线| 亚洲精品国产视频| 在线亚洲伦理| 欧美小视频在线| 一区二区三区免费看| 亚洲伊人一本大道中文字幕| 欧美三级黄美女| 在线亚洲欧美专区二区| 香蕉精品999视频一区二区| 欧美香蕉视频| 亚洲女与黑人做爰| 久久久久国产成人精品亚洲午夜| 国产综合色精品一区二区三区| 欧美一级片一区| 老司机67194精品线观看| 激情视频一区| 欧美大尺度在线| 99这里有精品| 久久精品99无色码中文字幕| 激情欧美一区二区三区在线观看 | 欧美精品在线一区| 亚洲精品一区二区三区四区高清 | 亚洲成在人线av| 日韩一区二区精品视频| 欧美日韩国产999| 一区二区三区高清视频在线观看| 亚洲综合导航| 精品福利电影| 欧美日韩国产影院| 午夜精品区一区二区三| 嫩模写真一区二区三区三州| 日韩天堂在线观看| 国产欧美亚洲精品| 欧美成人高清视频| 亚洲午夜电影网| 免费观看日韩| 亚洲欧美日韩国产精品| 精品成人国产| 欧美视频二区36p| 久久美女性网| 一区二区三区偷拍| 欧美成人免费在线视频| 亚洲一区视频在线观看视频| 国产一区二区高清视频| 欧美精品在线看| 久久深夜福利| 亚洲素人一区二区| 亚洲动漫精品| 久久九九久久九九| 99国产精品久久久久老师| 国产日韩欧美一区二区三区在线观看| 看片网站欧美日韩| 午夜亚洲视频| 一卡二卡3卡四卡高清精品视频| 久久亚洲风情| 欧美亚洲一级| 99re6热在线精品视频播放速度| 国产一区成人| 国产精品一级| 欧美日韩中文字幕综合视频| 麻豆免费精品视频| 欧美在现视频| 亚洲免费视频网站| 亚洲美女色禁图| 欧美电影在线观看完整版| 久久精品一二三| 亚洲欧美视频在线| 中文av字幕一区| 99re6热只有精品免费观看| 在线国产欧美| 狠狠色狠狠色综合| 国产欧美日韩另类视频免费观看| 欧美日韩国产黄| 欧美精品九九| 欧美激情91| 欧美电影专区| 欧美大片专区| 免费人成精品欧美精品| 久久久久成人网| 久久精品亚洲一区二区三区浴池| 亚洲欧美成人一区二区在线电影| 99视频日韩| 亚洲深夜福利| 亚洲综合日韩在线| 午夜精品影院在线观看| 亚洲欧美视频一区| 先锋影音久久| 久久国产综合精品| 久久另类ts人妖一区二区| 久久精品国产亚洲高清剧情介绍| 欧美一区深夜视频| 久久久久久欧美| 浪潮色综合久久天堂| 欧美96在线丨欧| 欧美激情欧美狂野欧美精品| 欧美日产国产成人免费图片| 欧美另类69精品久久久久9999| 欧美激情中文字幕乱码免费| 欧美日韩成人综合| 国产精品久久久久久亚洲毛片| 国产精品成人在线观看| 国产女精品视频网站免费| 国产亚洲精品v| 在线精品国精品国产尤物884a| 亚洲电影av| 亚洲深夜福利在线| 欧美在线国产精品| 老司机一区二区| 亚洲精品国产拍免费91在线| 在线亚洲观看| 久久岛国电影| 欧美日韩999| 国产精品丝袜91| 伊人久久男人天堂| 一区二区三区国产在线观看| 久久成人18免费网站| 嫩模写真一区二区三区三州| 日韩一级欧洲| 久久精品一二三区| 欧美日韩国产综合视频在线观看中文 | 亚洲自啪免费| 久久综合网色—综合色88| 亚洲精品乱码久久久久久黑人 | 亚洲精品久久久久久久久久久| 一本大道久久精品懂色aⅴ | 亚洲一级电影| 男人的天堂亚洲| 国产精品视频一| 亚洲国产一区二区三区青草影视| 亚洲一区二区视频在线| 久久综合狠狠| 中文精品视频| 欧美sm视频| 国产一区在线免费观看| 国产精品99久久久久久人 | 午夜精品国产| 亚洲国产精品激情在线观看| 亚洲欧美视频| 欧美午夜在线观看| 91久久在线播放| 久久久久久综合| 亚洲一区二区成人| 欧美激情国产日韩精品一区18| 国户精品久久久久久久久久久不卡| 亚洲最新在线| 欧美黄色一区| 久久久天天操| 国产偷国产偷精品高清尤物| 亚洲一区www| 亚洲精品日韩综合观看成人91| 久久久女女女女999久久| 国产欧美一区二区白浆黑人| 亚洲午夜久久久| 亚洲经典自拍| 欧美成人中文字幕| 亚洲第一在线综合网站| 久久深夜福利| 欧美在线一级视频| 国产乱肥老妇国产一区二| 亚洲男人av电影| 亚洲视频1区| 国产精品久久久久久久app| av成人手机在线| 亚洲精品乱码| 欧美日韩美女在线观看| 99精品国产一区二区青青牛奶| 欧美大片第1页| 免费日韩av片| 亚洲人成在线播放| 亚洲国产精品视频一区| 可以看av的网站久久看| 91久久精品国产91久久性色tv| 女人香蕉久久**毛片精品| 麻豆精品精华液| 91久久精品日日躁夜夜躁欧美| 欧美高清不卡|