(本?文?作?于?2013年?并?發?表?在?其?它?平臺,因?時?間太久?個?別?配?圖?已?不?能加?載?)對于經常開發應用軟件的人來說,都希望創建一個幫助系統,幫助使用者了解自己軟件的功能與應用方法。如何創建自己軟件的幫助系統呢?本文就這方面的問題談談自己的應用方法,也希望通過自己的實際應用經驗能對朋友們有所幫助。
Windows 98及以上版本的幫助文件與Windows 95的有比較大的改變,它使用一種基于HTML文件特征的幫助文件,用Internet Explorer顯示幫助內容,支持HTML、ActiveX、Java、腳本(Java腳本和VB腳本)以及HTML圖像格式(.JPEG、GIF、PNG),它的圖標也變了,后綴名為chm,Windows 98稱之為Compiled HTML Help File。為了敘述方便,下面就稱之為chm文件。典型的Windows 98規范的幫助文件(.chm文件)的窗口和Windows 98資源管理器差不多,左側是目錄、索引和搜索這三個功能項,通過選項卡切換;右側是HTML文件的顯示部分,改變了原來幫助文件目錄窗口和主題窗口分離的情況。由于HTML文件具有多媒體表現力,因此chm文件的內容不再局限于文字和靜態圖像,在其中可以插入GIF動畫,也可以利用瀏覽器的插件在文檔中播放聲音文件、動畫影片、或其它格式的多媒體內容。加入URL地址可與因特網聯系在一起,這樣chm文件就不局限于包裝好的內容了,它是微軟公司的下一代聯機幫助系統。同時,chm文件的核心是充分利用HTML文件的表現能力,對分散的HTML文件作整體的包裝,這也是目前在Web網頁以外利用HTML文件的一個趨勢。如果你用這個方式制作學習教程、電子圖書和雜志,或為用戶提供產品目錄和宣傳材料,比已經流行的PDF文件更簡潔和方便。
chm文件從結構上來看可分為兩個部分:運行器和文檔內容。運行器是操作系統的一部分,而文檔內容隨其所附的應用程序而變化。這與以前的Winhelp的結構沒有多少差別。不過運行器部分有了較大的改進,運行器很小巧并且不直接運行HTML文件,而是操作一個ActiveX 的組件,控制支持ActiveX 組件的網頁瀏覽器,如微軟的Explorer 3.0以上版本的瀏覽器。它的一個好處是能跨平臺運行,只要有不同平臺上的運行器和瀏覽器,chm文件不再需要重新編制。 制作chm文件的工具是微軟公司的Htmlhelp Workshop工具包,目前,最新的HTML Help Workshop版本是4.74。這是中文版的,安裝Htmlhelp Workshop很方便,只要按照提示進行即可。它的使用也很方便,沒有編程和寫語言的要求,只要你會制作HTML文件就行了。
制作chm文件很方便,也很簡單。大量的工作是以編寫HTML文件為主,它的每個主題就是一個HTML文件,這些主題應該事先編輯好,并用Internet Explorer檢查確認無誤。主題文件可以用任何一個HTML編輯器編輯,也可用Htmlhelp Workshop編輯。如果不熟悉HTML文件的編輯,還可用Word,因為Word 97以上版本可以把Word文檔(.doc文件)另存為HTML文件,還可以將Word文檔批量轉換成HTML文件。這樣就可以完全按照編輯Word文檔的習慣編輯成Word文檔,再轉換成HTML文件。
運行Htmlhelp Workshop時,它的工作窗口很簡單,菜單欄上有五個命令,分別是“文件”、“視圖”、“測試”、“工具”、“幫助”。下面的工具欄有五個按鈕,分別是“新建”、“打開”、“編譯HTML文件”、“校驗編譯文件”、“聯機幫助”。下面介紹具體步驟:
一、創建幫助文本
創建幫助文本是創建幫助系統的第一步。所謂幫助文本,就是針對自己開發的應用軟件的功能、使用方法的介紹和說明。這里,以我開發的《通信工程(概)預算系統》為例,談談其幫助系統的創建過程。用WORD2000創建《通信工程(概)預算系統幫助》文本。
通信工程(概)預算系統主界面
通信工程(概)預算系統幫助文本
二、創建分頁網頁文件
根據幫助系統框架結構,將每一段需要分頁顯示的幫助文本用WORD2000轉換成網頁文件。下圖是通信工程(概)預算系統幫助需要的分頁網頁文件。
分頁網頁文件
三、創建項目文件
啟動Htmlhelp Workshop系統,打開主界面。
新建一個方案
單擊Htmlhelp Workshop菜單或工具欄中的“新建”命令,這時出現“選擇新建內容”的對話框。這里有五個選項:“方案”、“文本”、“HTML文件”、“目錄”、“索引”。選擇“方案”,接著出現“方案”向導,告訴你這個向導可以轉換的文件格式,一般情況下我們是要創建方案(.hhp)文件,不需要轉換。直接進入“下一步”指定放置的目錄和輸入文件名就可以了,單擊“下一步”,進入了“現有文件”對話框,如果你想將已經存在的文件包含進“方案”里,在下面列表中選擇。這里一般空著,這些文件(包括已經編輯好的主題文件)以后可以添加。進入“下一步”后再“確定”就進入了Htmlhelp Workshop工作窗口。在窗口的上方是3個選項卡,分別是“方案”、“目錄”、“索引”。在“方案”窗口的左側是7個按鈕,它們的功能名稱自上而下分別是:“改變項目選項”、“添加/刪除主題文件”、“添加/修改窗口定義”、“HHTML幫助API信息”、“校驗HTML源文件”、“保存項目、目錄和索引文件”、“保存全部文件并編譯”。
單擊“改變項目選項”按鈕,出現“選項”對話框,光標在“常規”選項卡的“標題”文本框內閃爍,在這里加入標題,編譯后這個標題將出現在chm文件窗口的標題欄中。其它的內容暫時用系統的默認值。然后單擊“添加/刪除主題文件”按鈕,再選擇“添加”按鈕,把作為封面頁的HTML文件添上。封面頁的文件一定要有,否則編譯的幫助文件運行后,系統會報錯。好了,簡單的“方案”編輯就完成了。
四、創建目錄文件
單擊“目錄”選項卡,這時系統彈出一個對話框,提示你“方案”還沒有關聯目錄文件(.hhc),你可以創建一個新的目錄文件,或者指定一個現有的。這里選擇“創建一個新目錄文件”,進入下一步請你選定一個新目錄文件的名稱和存放路徑,指定后出現目錄編輯窗口。在目錄窗口的左側有11個按鈕,前5個分別是:“目錄工具”、“插入標題”、“插入頁面”、“編輯選擇”、“刪除選擇”,中間4個箭頭用來調整指定標題或頁面的位置,最后兩個已在項目編輯窗口中出現過。根據需要插入標題或頁面目錄,按下“插入標題”或“插入頁面”按鈕,都會彈出“目錄條目”對話框,在“條目標題”文本框中輸入條目的標題,并根據情況選定對應的主題(HTML文件),單擊“條目標題”下的“添加”按鈕,在彈出的對話框的下面“文件或URL地址”文本框中輸入文件名或URL地址并確定;單擊“高級”選項卡,在“圖像索引”欄中為條目指定圖標,比如包含其它條目的條目可以用書形圖標,而頁面條目的可以用問號圖標。如果在單擊“插入頁面”按鈕之前所選擇的條目不包含別的條目,也不被別的條目所包含,那么會詢問“是否要創建一個起始條目”,選擇了“是”會增加起始條目(一級條目),選擇了“否”會增加一個子條目。標題可以不添加主題文件或URL地址,也可放置需要的主題文件,作為標題的說明內容。標題可以分為多級,要按照制作的內容統一考慮。如果覺得不滿意,可以用左側的箭頭進行調整,也可以選定該條目,單擊鼠標右鍵,不但可以調整,還可以插入標題、主題或目錄文件。編輯目錄文件是制作chm文件最關鍵的工作,目錄文件應該包含一個chm文件所有目錄(主題),而每個目錄又包含條目標題(名稱)和該條目的主題文件,要避免條目標題與對應的主題不一致的情況出現。等所有目錄都添加好后目錄就算完成了。
創建目錄
已生成的幫助文件
完成目錄編制后,一個chm文件已具備了雛形,索引的內容暫時空著。保存項目文件和目錄文件后就可以編譯,編譯就是把所有用到的HTML文件統統壓縮后包裝在一起,形成一個后綴名是.chm的文件。在主工具欄按鈕中可以找到編譯按鈕和試運行按鈕,也可直接按項目窗口左下方的“保存全部文件并編譯”按鈕進行編譯。編譯后再運行就可以看到作品的面貌了。目錄的內容在編譯后顯示在chm文件窗口的左側,可以展開標題后顯示以下的目錄,單擊目錄可以打開相應的主題文件,顯示相應的內容。如果發現問題,還可以進行修改調整。
五、創建索引文件
在Htmlhelp Workshop的工作窗口上單擊“索引”選項卡,和創建目錄文件一樣,也會彈出一個對話框,操作也是一樣的。進入索引編輯窗口,左側也有11個按鈕,有8個是已經熟悉的,還有3個分別是:“索引工具”、“插入關鍵字”、“排序關鍵字”。所謂關鍵字是用戶可能用到的并與一個或多個幫助主題文件關聯在一起的字、詞或短語,索引文件(.hhk)也是一個HTML文件,它包含若干個關鍵字,當用戶打開chm文件后,單擊索引標簽并輸入一個關鍵字后,chm文件將顯示與這個關鍵字有關的主題的列表,非常方便地找到相關主題。單擊“插入關鍵字”按鈕,出現一個“索引項”對話框,在“常規”選項卡的“關鍵字”文本框中輸入關鍵字,單擊“添加”按鈕指定與該關鍵字相關聯的主題文件。如果想跳轉到另一個關鍵字,在“索引項”對話框中按“高級”選項卡,選中下面的“目的地是另一個關鍵字”,單擊“常規”選項卡,單擊“添加”按鈕,在“文件或URL地址”框中輸入要跳轉的關鍵字,單擊“確定”。
創建索引
六、創建搜索
chm文件的“搜索”選項卡允許用戶在所有主題文件中搜索字、詞或短語,將它們的標題顯示出來,而且在主題中用醒目的方式來顯示。打開一個方案文件,單擊“方案”選項卡的“改變方案選項”,在“選項”對話框的“編譯”選項卡中選中“編譯全文搜索信息”即可。 上述介紹的是編制HTML幫助文件的基本步驟,上手很容易。但它的功能遠非這些,如在窗口定義中可以設計你所喜愛的形式,幾乎所有的窗口要素都可以改變。向HTML文件中插入快捷方式、相關主題、關鍵字鏈接、聯想鏈接、HTML Help ActiveX控件、Java腳本、彈出式窗口等等,詳細的內容請參考Htmlhelp Workshop的幫助文件,或微軟的相應網頁。相信你試過以后一定會喜歡它。
最近在查閱Tkinter相關資料,由于在安裝后的Tkinter包路徑(Python安裝路徑下的lib\tkinter目錄)并沒有找到相關的官方文檔(諸如pdf、html、chm、txt等格式的文件),所以就只能借助help()函數來查看其官方幫助信息了。
通過摸索,發現Python內置的help()函數能提供不少有用的信息,我在此做了一些歸納總結,特此分享給需要的朋友們。
本文分享內容的目錄如下:
前言
help()函數簡介
help()語法說明
help()使用實例
結束語
注:本機使用的是Python自帶的 IDLE (Python 3.8 64-bit)
help()是Python的內置函數之一。通過help()可以調用Python內置的幫助系統,help()函數主要在交互式中使用。
我們在編寫Python語言代碼使用包、模塊、類、函數或方法時,有時會記不清其用途,此時就可以通過help()函數來快捷地查看相關幫助信息。
help()函數特性:
1) 使用方便(是Python內置函數,無需import,直接調用help()即可)
2) 能查看多種類型的幫助信息(包括:包Package、模塊Module、類Class、函數Function、方法Method等)
3) 可以將查看的幫助信息保存到指定路徑文件中
注意help()函數與dir()函數的區別:
1) help()函數用于查看給定對象的用途的詳細說明。
2) dir()函數用于查看給定對象的屬性、方法列表。
一、語法:
help([object])
二、參數及返回:
help()
help('math.sin')
注:如果給定的參數列表中出現斜杠/,則意味著斜杠/之前的參數僅是定位的。
如,通過執行help('tkinter')查看tkinter包的幫助信息:
help('tkinter')
上圖中可以看到在控制臺上輸出了提示信息(Squeezed text (21469 lines).)。原因是由于查詢到的tkinter包的幫助信息比較多,所以沒有直接在控制臺上打印輸出。鼠標移動到該提示文字區域時,會彈出浮動提示信息Double-click to expand, right-click for more options.,提示:
一、雙擊該文字區域可以在控制臺展開顯示該幫助信息
>>> help('tkinter')
Help on package tkinter:
NAME
tkinter - Wrapper functions for Tcl/Tk.
MODULE REFERENCE
https://docs.python.org/3.8/library/tkinter
..........
..........
..........
FILE
c:\develop\python\lib\tkinter\__init__.p
二、或者右擊顯示菜單選項(如下圖示)
右擊菜單
1)選擇copy菜單項:復制該幫助信息到剪貼板,可以復制到一個文件中進行保存。
2)選擇view菜單項:直接打開一個新窗口顯示該幫助信息(如下),可以在該新窗口中方便地進行查看。
新窗口
如,通過執行help('tkinter.ttk')查看tkinter包下的ttk模塊的幫助信息:
help('tkinter.ttk')
如,通過執行help('tkinter.XView')查看tkinter包下XView類的幫助信息:
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import tkinter
>>> help('tkinter.XView')
Help on class XView in tkinter:
tkinter.XView=class XView(builtins.object)
| Mix-in class for querying and changing the horizontal position
| of a widget's window.
|
| Methods defined here:
|
| xview(self, *args)
| Query and change the horizontal position of the view.
|
| xview_moveto(self, fraction)
| Adjusts the view in the window so that FRACTION of the
| total width of the canvas is off-screen to the left.
|
| xview_scroll(self, number, what)
| Shift the x-view according to NUMBER which is measured in "units"
| or "pages" (WHAT).
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
如,通過執行help('tkinter.XView.xview')查看tkinter包下的XView類下的xview()函數的幫助信息:
>>> help('tkinter.XView.xview')
Help on function xview in tkinter.XView:
tkinter.XView.xview=xview(self, *args)
Query and change the horizontal position of the view.
通過執行help('modules')查看本機Python所有已安裝的模塊:
>>> help('modules')
Please wait a moment while I gather a list of all available modules...
IPython binascii mailcap squeezer
MySQLdb binhex mainmenu sre_compile
PIL bisect markupsafe sre_constants
......................................................................
base64 macosx sqlite3 zzdummy
bdb mailbox sqlparse
Enter any module name to get more help. Or, type "modules spam" to search
for modules whose name or summary contain the string "spam".
如,通過執行help('modules ttk')查看本機Python所有模塊中在模塊名或概述中包含指定字符串'ttk'的模塊:
>>> help('modules ttk')
Here is a list of modules whose name or summary contains 'ttk'.
If there are any, enter a module name to get more help.
test.test_ttk_guionly
test.test_ttk_textonly
tkinter.test.test_ttk
tkinter.test.test_ttk.test_extensions
tkinter.test.test_ttk.test_functions
tkinter.test.test_ttk.test_style
tkinter.test.test_ttk.test_widgets
tkinter.ttk - Ttk wrapper.
通過執行help('keywords')查看Python所有的關鍵字:
>>> help('keywords')
Here is a list of the Python keywords. Enter any keyword to get more help.
False class from or
None continue global pass
True def if raise
and del import return
as elif in try
assert else is while
async except lambda with
await finally nonlocal yield
break for not
通過執行help('topics')查看Python常見的主題:
>>> help('topics')
Here is a list of available topics. Enter any topic name to get more help.
ASSERTION DELETION LOOPING SHIFTING
ASSIGNMENT DICTIONARIES MAPPINGMETHODS SLICINGS
ATTRIBUTEMETHODS DICTIONARYLITERALS MAPPINGS SPECIALATTRIBUTES
ATTRIBUTES DYNAMICFEATURES METHODS SPECIALIDENTIFIERS
AUGMENTEDASSIGNMENT ELLIPSIS MODULES SPECIALMETHODS
BASICMETHODS EXCEPTIONS NAMESPACES STRINGMETHODS
BINARY EXECUTION NONE STRINGS
BITWISE EXPRESSIONS NUMBERMETHODS SUBSCRIPTS
BOOLEAN FLOAT NUMBERS TRACEBACKS
CALLABLEMETHODS FORMATTING OBJECTS TRUTHVALUE
CALLS FRAMEOBJECTS OPERATORS TUPLELITERALS
CLASSES FRAMES PACKAGES TUPLES
CODEOBJECTS FUNCTIONS POWER TYPEOBJECTS
COMPARISON IDENTIFIERS PRECEDENCE TYPES
COMPLEX IMPORTING PRIVATENAMES UNARY
CONDITIONAL INTEGER RETURNING UNICODE
CONTEXTMANAGERS LISTLITERALS SCOPING
CONVERSIONS LISTS SEQUENCEMETHODS
DEBUGGING LITERALS SEQUENCES
如,通過執行help('str')查看內置的str類型的幫助信息:
help('str')
如,通過執行help('str.find')查看內置的str類型的find()方法的幫助信息:
>>> help('str.find')
Help on method_descriptor in str:
str.find=find(...)
S.find(sub[, start[, end]]) -> int
Return the lowest index in S where substring sub is found,
such that sub is contained within S[start:end]. Optional
arguments start and end are interpreted as in slice notation.
Return -1 on failure.
如將tkinter包的幫助信息存入指定路徑:C:/MyHelp/tkinter_help.txt
>>> import os, sys, string
>>> sys.stdout=open('c:/MyHelp/tkinter_help.txt', 'a')
>>> help('tkinter')
>>> sys.stdout.close()
>>>
如將tkinter.ttk模塊的幫助信息存入指定路徑:C:/MyHelp/tkinter.ttk_help.txt
>>> import os, sys, string
>>> sys.stdout=open('c:/MyHelp/tkinter.ttk_help.txt', 'a')
>>> help('tkinter.ttk')
>>> sys.stdout.close()
>>>
希望本次分享的對Python內置help()函數的介紹能對您有所幫助! 喜歡的話就點個贊加關注支持一下哈:)
evice Guard是什么?
Device Guard將 Windows 10 操作系統限制為僅運行由受信任的簽署人簽名的應用程序,該功能有助于抵御0day攻擊,并且還能有效地應對多態病毒的挑戰。它是硬件和軟件安全功能的結合,當兩者一起配置時,Windows將鎖定設備,以使其只能運行受信任的應用程序。如果系統中的應用程序不受信任,則該應用程序將無法運行。在現實情況中,即使攻擊者能夠獲取到Windows內核的控制權,由于設備保護能夠對何時可以運行哪些可信任的應用程序具有嚴格的決策權,因此在計算機重新啟動后,惡意軟件運行的可能性也將大幅降低。
如何繞過Device Guard?
你可以通過自定義CHM文件來繞過Device Guard UMCI (用戶模式代碼完整性)并執行任意不可信的代碼。
在過去6個月的時間里,出于興趣的使然,我利用業余時間對如何繞過Device Guard進行了一些安全研究。在此期間,我很幸運地找到了另一個有效繞過設備保護 UMCI的方法,并將該安全漏洞報告給了微軟安全應急響應中心(secure@microsoft.com)。
在與微軟應急響應中心的安全研究人員進行溝通之后得知:在此之前,這個安全漏洞已經被另一個安全研究人員發現,不過令我十分興奮的是,我上報的這個安全漏洞將以我的名字命名并被收錄到CVE(公共漏洞庫)中。微軟應急響應中心的安全研究人員們并不知道另一位研究人員是誰,但是Matt Graeber知道:另一位研究員是馬特?納爾遜,他在之前就已經發現這個繞過Device Guard UMCI的安全漏洞了,這個家伙真的很厲害。
在這篇博文中,我將闡述我是如何發現這個安全漏洞的以及跟這個安全漏洞相關的一些PoC代碼。由于我不是一個資深的逆向工程師,所以在這篇博文中,我將不會對微軟針對該安全漏洞發布的補丁進行逆向分析,而是專注于闡述我是如何發現這個安全漏洞的。
對我來說,我經常在Windows系統以及system32文件夾中查找一些二進制文件來進行研究和分析,這樣做的目的是希望可以發現一些新的、有趣的東西去研究和分析。果然,在某些文件夾中,我發現了一個名為hh.exe的二進制文件。接著,我在命令行里運行“hh.exe /?”這個命令,通過情況下,運行這條命令要么會得到一些關于該命令的幫助信息,要么就是一些錯誤信息。但是,當我在運行上述那條命令的時候,上述兩種情況都沒有發生,我得到了如下圖所示的結果:
上面這張圖片觸發了我對hh.exe這個程序的好奇心,這個小技巧在最新的Windows 10操作系統中仍然適用,我猜我們如果需要在一個鎖定的系統環境(終端服務器等)中打開一個資源管理器,我們可以通過運行“hh.exe c:\”這條命令來做到這一點。
在嘗試了很多不同的操作后,我意識到我們也可以通過hh.exe瀏覽互聯網。只需要在命令行中輸入
hh.exe
"http://www.google.com"
就可以做到這一點。(以下測試仍然在最新的Windows 10操作系統中進行)執行上述命令后,我得到了如下圖所示的結果:
在所有的嘗試操作之后,第一件令我想到的就是去檢查hh.exe這個進程的完整性等級,結果如下圖所示:
正如上圖所示,在我的系統中,通過hh.exe打開的瀏覽器是以中等完整性模式運行的,而通過普通方式打開的iexplore進程運則是以低級完整性模式運行,針對我們現在發現的有關hh.exe這個程序相關的信息使得我們有更多的工作需要去研究。
嘗試了很多不同的方法后,我想我應該去創建一個包含有某些代碼的自定義幫助文件,因為hh.exe這個應用程序主要用于顯示幫助文件。我在網上搜索了與創建自定義幫助文件相關的開源項目,并在下面這篇文章中找到了解決方法:
https://raw.githubusercontent.com/samratashok/nishang/master/Client/Out-CHM.ps1
要運行此腳本,我必須首先下載并安裝“HTML Help Workshop and Documentation”,下載鏈接如下所示:
http://www.microsoft.com/en-us/download/details.aspx?id=21138
我最終創建了我自己的腳本程序,因為我只想證明我的PoC的正確性并試圖彈出一個計算器,所以在PoC腳本里我沒有去做其他的一些操作。我的PoC腳本可以在這里找到:
https://gist.githubusercontent.com/api0cradle/95ae3c7120f16255d94088bd8959f4b2/raw/fa25b85e85bbb64c5cf021adf92b125357086a6f/GenerateCHM_1.0.ps1
此腳本生成一個簡單的自定義的CHM文件,并通過ActiveX啟動Calc.exe,不過除了彈出計算器程序之外,或者可以有更有意思的事情可以做,例如,運行Cn33liz StarFighters以獲取Empire 代理:https://github.com/Cn33liz/StarFighters/
下圖所示的是我的PoC腳本中的部分代碼截圖:
下面這個gif顯示了繞過Device Guard相關的一些操作:
微軟在Windows 10 Creators更新版v1703(又叫Redstone 2)中已解決此問題,或者如果要在舊版本的Windows 10上進行修補,可以通過下面這個鏈接下載補丁包:https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-8625
之后,我將機器更新到Windows 10的v1703,當我嘗試運行自定義的CHM文件時,我的系統中得到了如下圖所示的報錯信息:
總結
希望這篇博文能夠啟發你去進行自己的安全研究,以使得Windows更安全。如果你有興趣了解有關Device Guard的更多信息,我建議你閱讀Microsoft官方文檔和Matt Graeber的一些博客:
https://docs.microsoft.com/en-us/windows/device-security/device-guard/device-guard-deployment-guide
http://www.exploit-monday.com/2016/09/introduction-to-windows-device-guard.html
http://www.exploit-monday.com/2016/09/using-device-guard-to-mitigate-against.html
http://www.exploit-monday.com/2016/10/code-integrity-policy-reference.html
http://www.exploit-monday.com/2016/11/code-integrity-policy-audit-methodology.html
http://www.exploit-monday.com/2016/11/Effectiveness-of-Device-Guard-UMCI.html
http://www.exploit-monday.com/2016/12/updating-device-guard-code-integrity.html
*請認真填寫需求信息,我們會在24小時內與您取得聯系。