在部分win8、win10最新版專業版及家庭版中,MiniDumper引起程式執行失敗
在2017年3月份初,有客戶在報有電腦程式載入不上,其他電腦執行正常故障,一直沒引起注意。最初以為是他們用家庭版,許可權太低的原因,就讓運維幫他們把系統換成專業版,主要是在win7升級win8或win10後,家庭版許可權確實被限制了不少,特別是寫登錄檔或者讀取登錄檔之類的操作,所以ocx外掛出現的問題就比較明顯。
但在九月份去湖北出差,發現win10專業版,即使是提升到最高許可權,OCX外掛依然載入不上,通過幾番排查,發現是作業系統更新到最新後的問題,最後排查問題出在程式中使用minidumper來記錄程式崩潰時進行寫檔案的操作程式碼有問題,由於當時比較緊急,直接把相關dump程式碼遮蔽了,後面一直沒進行處理。
直到最近發現現網又出現實時視訊崩潰,跟了好久也沒跟出來,不得不繼續啟用dump記錄,由於時間稍微寬鬆,所以徹底排查了翻,發現引起程式起不來的原因主要是在呼叫了DisableSetUnhandledExceptionFilter函式時引起,再往裡面跟由於
VirtualProtect(addr, size, PAGE_EXECUTE_READWRITE, &dwOldFlag);
WriteProcessMemory(GetCurrentProcess(), addr, code, size, NULL);
VirtualProtect(addr, size, dwOldFlag, &dwTempFlag);
來看看msdn對VirtualProtect函式的介紹:
BOOL WINAPI VirtualProtect(
_In_ LPVOID lpAddress,
_In_ SIZE_T dwSize,
_In_ DWORD flNewProtect,
_Out_ PDWORD lpflOldProtect
);
lpAddress,要改變屬性的記憶體起始地址。
dwSize,要改變屬性的記憶體區域大小。
flNewProtect,記憶體新的屬性型別,設定為PAGE_EXECUTE_READWRITE(0x40)時該記憶體頁為可讀可寫可執行。
pflOldProtect,記憶體原始屬性型別儲存地址。
修改記憶體屬性成功時函式返回非0,修改失敗時返回0。
如果我們能夠按照如下引數佈置好棧幀的話就可以將shellcode所在記憶體區域設定為可執行模式。
由此猜想可能是第三個引數是設定許可權的,將上述程式碼改為:
VirtualProtect(addr, size, PAGE_EXECUTE_READWRITE, &dwOldFlag);
再次進行測試,發現程式已經能夠正常執行。由此可以得出結論其實還是作業系統許可權的問題,目前在win10家庭版:版本 10.0.16299.192,win10專業版:版本 10.0.16299.192,已經驗證正常。
相關文章
- win10家庭版升級專業版失敗怎麼辦_win10家庭版換專業版失敗修復方法Win10
- 在函式中執行DDL語句失敗函式
- win10家庭版和專業版哪個好_win10家庭版好還是專業版好Win10
- win10家庭版升級專業版金鑰 win10家庭版升級專業版的方法Win10
- win10專業版和家庭版區別 家庭版要不要換成專業版Win10
- win10專業版變家庭版如何操作_win10專業版怎麼退回到家庭版Win10
- 家庭版win10和專業版的區別_win10專業版和家庭版區別是什麼Win10
- win10專業版和家庭版有什麼區別 win10專業版和家庭版如何選擇Win10
- win10 家庭版&專業版 安裝教程Win10
- Win10家庭版升級專業版和企業版Win10
- 專業版win10和家庭版有什麼區別_win10家庭版和win10專業版的區別Win10
- acer win10家庭版怎麼升級專業版_acer win10家庭版升級專業版詳細教程Win10
- win10家庭版和專業版區別是什麼 win10家庭版要不要換成專業版Win10
- win10專業版1511更新失敗如何解決_win10專業版1511升級失敗怎麼修復Win10
- Xamarin Android專案執行失敗Android
- win10家庭版和專業版哪個好?win10系統家庭版和專業版有什麼區別Win10
- Win10企業版、專業版和家庭版的區別Win10
- win10專業版如何恢復到家庭版Win10
- WIN10家庭版升級專業版的方法_w10家庭版怎麼升級到專業版Win10
- windows10專業版怎麼變成家庭版_win10專業版退回家庭版的步驟WindowsWin10
- win10家庭版如何升級專業版_w10家庭版升級專業版的兩個方法Win10
- 詳解Win10家庭版/專業版/企業版功能區別Win10
- win10家庭版怎麼升級win10專業版Win10
- windows10家庭版怎麼升級到專業版 win10家庭版升級為專業版方法介紹WindowsWin10
- WIN10家庭版升級專業版要錢嗎 WIN10家庭版升級專業版詳細圖文步驟說明Win10
- 家庭版win10怎麼取消以管理員身份執行_win10家庭版取消以管理員身份執行的方法Win10
- win10專業版升級失敗如何修復_win10專業版升級不瞭解決方法Win10
- windows10家庭版怎麼升級專業版 windows10家庭版如何變成專業版Windows
- win10企業版怎麼變成家庭版_win10企業版改回家庭版的方法Win10
- win10家庭版怎麼升級專業版?win10家用版升級專業版的設定方法Win10
- win11家庭版怎麼升級專業版 windows11家庭版更改為專業版方法介紹Windows
- win10企業版和家庭版有什麼區別_win10企業版和家庭版哪個好Win10
- win10家庭版升級專業版會清除資料嗎 windows10家庭版免費儲存資料升級專業版方法介紹Win10Windows
- win10家庭版怎麼升級win10專業版詳細操作步驟Win10
- 在Win10家庭版中安裝Docker Desktop正式版(非Toolbox)Win10Docker
- [bug] captcha中demo執行失敗(TypeError must be sequence of length 4, not 2)APTError
- MVC專案報錯 ”基礎提供程式在 Open 上失敗”MVC
- root.sh執行失敗的解決方法及後續處理