1. 程式人生 > >輕鬆審計程式碼安全性,Windows 10有妙招

輕鬆審計程式碼安全性,Windows 10有妙招

如果你是軟體開發人員,又希望自己開發的軟體安全性高一點,那麼當前的Windows 10企業內部預覽版(10.0.16253)中就有一個功能可以做到。 它的位置在“設定 – > Windows Defender – > Windows Defender安全中心 – >應用程式和瀏覽器控制 – >漏洞保護設定”中,你可以為整個系統或特定程式啟用自定義漏洞利用設定。其中有很多不同的保護特性並且許多都可以在審計模式下開啟。在審計模式下,它不是在出現情況時終止程序,而是將事件寫入事件日誌。對於管理員,這就意味著其會允許軟體繼續執行,同時能夠使我們意識到這一情況是何時發生的。對於希望通過了解這些情況以此來改進產品的人來說,它其實是提供了一個啟用安全功能的附加好處,即無需重新編譯(在某些情況下),就能告訴你確切的程式程式碼在當它在執行時遇到問題的位置。在版本10.0.16253中,可以進行審計的保護特性包括:
任意程式碼保護 - 防止非影象支援的執行程式碼和內碼表修改(例如VirtualAlloc / VirtualProtect建立/修改的程式碼)
阻止低完整性影象
阻止遠端影象
阻止不受信任的字型
程式碼完整性守護者
禁用Win32k系統呼叫
不允許子程序
匯出地址過濾 - 將功能修補到另一個功能的一個常見方法中的一個步驟
匯入地址過濾 - 將功能修補到另一個功能的一個常見方法中的一個步驟
模擬執行
驗證API呼叫(CallerCheck)
驗證影象依賴完整性
驗證堆疊完整性
要充分利用此功能,我們需要安裝Windows Performance Toolkit。它是Windows SDK安裝程式的安裝選項之一。當您啟用了您感興趣的設定後,開啟管理命令提示符並瀏覽到Windows Performance Toolkit目錄(通常為Program Files(x86) Windows Kits  {Version}  Windows Performance Toolkit)。您可以通過執行以下兩個命令(在替換檔名所需的任何路徑之後)啟動並開始收集上述漏洞保護設定的跟蹤以及解析堆疊跟蹤所需的資料:
xperf - “PROC_THREAD + LOADER”-f“wdeg_klogger.etl”
 
xperf -start“WDEG” - “Microsoft-Windows-Security-Mitigations:0xFFFFFFFFFFFFFF:0xFF:'stack'”-f“wdeg_unmerged.etl”
在您執行任何想要收集的方案之後,您可以停止跟蹤並將資料與以下內容合併(再次替換檔名所需的任何路徑):
xperf -stop -stop“WDEG”-d“wdeg_merged.etl”
然後,您可以刪除建立的前兩個檔案,因為此時您將擁有第三個所需的所有資料。您可以在Windows Performance Analyzer(WPA)中開啟生成的etl檔案,並檢視資料。
您可以使用wpaPreset副檔名儲存它,在WPA中載入資料,轉到我的預設(在WPA的較新版本中的檔案 – >視窗 – >我的存在),選擇匯入,瀏覽到儲存預設的任何地方,選擇它,並雙擊它以顯示檢視。另外,您還需要載入符號,以充分利用這一點。您可以在WPA中在File-> Configure Symbols下設定符號; 您需要將其指向msdl.microsoft.com/download/symbols上的Microsoft符號伺服器以及您的符號伺服器(或您沒有符號伺服器設定的符號檔案的位置)。您可以在載入跟蹤時自動配置WPA載入符號,但也可以通過轉到檔案 – >載入符號來手動載入符號。一旦完成,您將能夠輕鬆地檢視堆疊跟蹤。它就會像下面這樣: 以下是在建立上述過程中我為x64控制檯應用程式編譯的示例程式碼:
#include #include using namespace std;void* CreateCodeInVirtualMemory(BOOL writable)
{ BYTE code[3] = { 0x33, 0xc0, 0xc3 }; LPVOID result = VirtualAlloc(NULL, sizeof(code), MEM_COMMIT | MEM_RESERVE, writable ? PAGE_EXECUTE_READWRITE : PAGE_READWRITE); if (result)
{
  memcpy(result, code, sizeof(code));
} else cout << "VirtualAllocEx failed with error " << GetLastError() << endl; return result;
}void CreateCodeInVirtualMemoryAndExecute(BOOL useWritableMemory)
{ LPTHREAD_START_ROUTINE addr = (LPTHREAD_START_ROUTINE)CreateCodeInVirtualMemory(useWritableMemory); if (addr)
{  DWORD result = addr(NULL);
  cout << "Code at 0x" << hex << (void*)addr << " returned " << result << endl;
} else cout << "NULL address was not executed" << endl;
}void ExecuteIllegalMemory()
{
CreateCodeInVirtualMemoryAndExecute(FALSE);
} 
void PrintOptions()
{
cout << "Enter one of the following options:" << endl;
cout << "1 - Execute Memory Not Marked As Executable" << endl;
cout << "2 - Create Code in Virtual Memory" << endl;
cout << "3 - Create Code in Virtual Memory and Execute" << endl;
cout << "0 - Exit" << endl;
 
}void DecisionLoop()
{ while (true)
{  int selection;
  PrintOptions();
  cin >> selection;  switch (selection)
  {   case 0:    return;   case 1:
    ExecuteIllegalMemory();    break;   case 2:
    CreateCodeInVirtualMemory(TRUE);    break;   case 3:
    CreateCodeInVirtualMemoryAndExecute(TRUE);    break;   default:
    cout << "Invalid input" << endl;
  }
}
}int main()
{
DecisionLoop(); return 0;
}
在這裡我沒有去對它的應用做更多的介紹,但我相信我的拋磚引玉一定能夠讓更多的人對這一功能產生興趣。 對於在事件檢視器中的應用程式和服務日誌中找到的大多數內容,您也可以以相同的方式完成此類操作——單擊特定日誌的屬性,它將具有Provider-Name-Parts / LogName形式的名稱。您只需要在xperf命令中使用“Provider-Name-Parts”部分即可。

相關推薦

輕鬆審計程式碼安全性Windows 10

如果你是軟體開發人員,又希望自己開發的軟體安全性高一點,那麼當前的Windows 10企業內部預覽版(10.0.16253)中就有一個功能可以做到。 它的位置在“設定 – > Windo

Build 17663.1 Windows 10 October 2018更新正式釋出

備受期待的Windows 10 October 2018(Build 17663.1)更新今天終於和大家見面了,使用者可以通過Windows Update, Update Assistant和Media Creation工具(連結)進行安裝。 訪問: Wind

各種官網系統映象檔案(Windows 7 Windows 10Ubuntu 18.6Centos 6.8 Centos 7.6 )

在以前的剛進去計算機行業的時候,學的第一件事就是裝系統,在網上苦於找不到正版的系統,這些是一直以來,見識的比較穩定的,有些是從官網下載的系統,給大家分享一哈。大家如果有用到其他好的系統,可以給我留言或者發給我一個連結,大家互相分享。 百度雲盤連結:https://pan.baidu.com/share

各種官網系統鏡像文件(Windows 7 Windows 10Ubuntu 18.6Centos 6.8 Centos 7.6 )

留言 .com linux. nbsp linu 系統 失效 ubuntu 其他 在以前的剛進去計算機行業的時候,學的第一件事就是裝系統,在網上苦於找不到正版的系統,這些是一直以來,見識的比較穩定的,有些是從官網下載的系統,給大家分享一哈。大家如果有用到其他好的系統,可以給

Java 8 中的方法引用輕鬆減少程式碼提升可讀性!

## 1. 引言 Java8中最受廣大開發中喜歡的變化之一是因為引入了 lambda 表示式,因為這些表示式允許我們放棄匿名類,從而大大減少了樣板程式碼,並提高了可讀性。 **方法引用是lambda表示式的一種特殊型別**。它們通常通過引用現有方法來建立簡單的lambda表示式。 方法引用包括以下四種類型

不會PDF轉PPT?彆著急隔壁老王

PDF可謂是學習生活及辦公中常見的檔案格式,我們經常需要對PDF檔案進行編輯處理,像PDF轉Word,PDF轉PPT,PDF轉Excel這些常用的轉換操作,我們作為辦公族是必須要知道的,今天就為大家分享如何進行PDF文件格式轉換,以PDF轉PPT為例。   這次轉換我們使用的是PDF線上轉換方法

熊市生存攻略:幣圈投資挖礦囤幣

幣價最近像是過山車一樣,跌大於漲。部分小礦工們選擇關停礦機,等待幣價上漲。區塊鏈從業人圈內大佬發朋友圈說,比特幣從2萬到12萬用時26天,漲漲跌跌皆為交易之源。目前這個行業只有專業和非專業之分,沒有牛熊之別。對於熊市中,重要保持心態,因為幣價總是在你的意料之外。 在熊市中,如何投資數字貨

央視《家》整理版,共125值得永遠收藏

1.不用水,毛絨玩具巧清潔   方法:將半碗大粒鹽(即粗鹽,超市有售,2元一袋)和髒了的毛絨玩具一起放入一個塑料袋,系口,用力搖晃幾十下即可.取出時鹽已因吸附了汙垢而變成灰黑色.  優點:避免了因水洗造成玩具毛絨打結.同時鹽還有消毒效果.快捷省時.  原理:利用了食鹽即氯化鈉的正負離子對汙垢的吸附作用.  舉

夠拼樂賺錢

中心 分鐘 orm 工資 如果 頁面設計 國內 頁面 增加 http://www.3agpl.com現在物價都漲的比較厲害,好像只有工資不漲,所以很多人都開始搞一些副業來增加一些外快。用手機參加免費試用好像是個不錯的選擇。既可以不花錢拿商品,還可以賺取積分、禮品、傭金等獎勵

不到一個月iOS 12 佔有率突破 50%最新的推廣“”你知道多少?

距離秋季釋出會還不到一個月,今日早些時候,蘋果官方公佈了 iOS 12 的安裝普及率,與往年不同的是,此次 iOS 佔有率統計,蘋果新增了一個數據維度,趕快一起來看看吧!(七麥資料官網也可以檢視不同版本的佔有率哦) 資料顯示,截止到 10 月

柏忠言:瑜伽呵護容顏美麗

柏忠言 愛美之心人人皆有,對美的追求是人們的天性,而瑜伽就是讓你變得更加美麗、健康又自然的最佳選擇之一,不僅如此,古老的瑜伽還能增長一個人的智慧與愛心,培養出任由時光也絲毫不能侵蝕的內在美,是一筆無價的財富。 與其花大錢投資昂貴美容面霜、祛斑治療和美容手術,不如在自己的生活中,試試下

資訊蒐集

資訊蒐集 也稱踩點,主要蒐集包括埠資訊、DNS資訊、員工郵箱等各種目標資訊。 資訊蒐集是滲透測試的最重要的階段,佔據整個滲透測試的60%,可見資訊蒐集的重要性。根據收集的有用資訊,可以大大提高滲透測試的成功率。 分為 主動式資訊蒐集(可獲取到的資訊較多,但易被目標發現)

:各種移動通訊系統這樣對抗干擾

本文引自【讀懂通訊】網站   1. GSM和PHS 對抗干擾的第一要務就是不要製造干擾,這有點像日本人的生活態度:“儘量不去麻煩別人”。考慮到使用者佔用的資源以時隙為單位,因此GSM和PHS在每個時隙的尾端都設定了保護帶GP,用來保護下一個時隙的內容。G

電腦螢幕太小不夠用?這

前段時間跟大家探討了 Vim 的顏色方案的話題,取得了不錯的反響,大家可以點選以下連結回顧那篇文章: 誰說 Vim 不好用?送你一個五彩斑斕的編輯器! 今天我們來介紹 Vim 的分屏功能。 為什麼需要分屏功能?其實需求場合有很多。比如,我現在螢幕很大,但我們的程式碼一般是左對齊,右邊很空,這樣我們就可以通

今天很成效程式碼優化效能提高了近10

beanutil的效能是我們的系統的效能瓶頸,雖然,我們的平臺已經固化,我們只能不改變現有結構的方式下進行優化,但是,優化的空間還是很大的。經過優化,我們的系統性能提高超過了一倍。 這是我們優化前和優化後的執行效率比較 (優化前方法buildVO佔據了整個請求的59.6%

windows 10微軟賬戶不能訪問局域網共享但是本地賬戶可以訪問

eve 登錄 共享文件夾 images image alt mage windows 註意 windows10有時候無法訪問局域網的共享文件夾。會提示沒有權限。 如果共享的文件夾已經設置為everyone,那麽通常是windows 10用的是微軟賬戶登錄的。 有兩個方案可

背水一戰 Windows 10 (24) - MVVM: 通過 Binding 或 x:Bind 結合 Command 實現通過非 ButtonBase 觸發命令

block files grid collect gin 綁定 專註 ins ext 原文:背水一戰 Windows 10 (24) - MVVM: 通過 Binding 或 x:Bind 結合 Command 實現,通過非 ButtonBase 觸發命令[源碼下載] 背

SQL Server 2017 正式發布:同時支持 Windows 和 Linux(現在看下來當年那德拉的“雲優先移動優先”是遠見的而且是一系列的措施和產品相配合的只是需要一點時間而已。真是佩服!!)

suse 中新 新的 ada 開發 tap 安全性 adding 互連 微軟在去年 3 月首次對外宣布了 Linux 版的 SQL Server,並於今年 7 月發布了首個公開 RC 版。前幾日在美國奧蘭多召開的微軟 Ignite 2017 大會上,微軟宣布 SQL Ser

兒童上網時間管控軟件_GreenSurfOnline V0.1 使用說明 (以Windows後臺服務形式存在安裝需要一定電腦操作基礎)

png online -1 tin 存在 行修改 批處理 說明 下載 1、GreenSurfOnline配置文件,配置可以上網的時間斷,上網的時間使用NTP時間,如果當前時間不在GreenSurfOnlineCfg.ini配置文件中, 不執行默認的關機命令(批處理文件,可

windows 10安裝hyper-v並創建虛擬機

windows 10hyper-v1.打開控制面板(可以通過windows 內置搜索找到控制面板)2.選擇程序3.啟用或關閉功能4. 選擇hyper-v功能5.點擊確認並安裝完成安裝5.通過搜索打開hyper-v6.打開hyper-v7.通過hyper-v創建虛機,選擇hyper-v管理器下的本地計算機