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

Error

C++博客 首頁 新隨筆 聯系 聚合 管理
  217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

// 本質上來說就是自己設置了UnhandleExceptionFilter后,C運行庫或者其他什么別的函數也調用了,所以自己設置的就無效了,解決方案就是HOOK SET函數,讓別人無法取代自己

很多 C/C++ 程序會設置自己的 Unhandled Exception Filter 用于捕獲 Unhandled exceptions 并輸出一些信息(例如,創建 mini-dump 或者輸出調用棧到日志文件中)。

從 VC++2005 開始出于安全因素微軟改變了 CRT 的行為。在以下情況下 CRT 不會通知被注冊的 Unhandled Exception Filter:

  1. 調用了 abort() 并且設置 abort 的行為為 _CALL_REPORTFAULT(Release 版本默認使用此設置)
  2. Security Checks 失敗時,具體來說就是檢查到一些會引發安全問題的堆棧溢出時不會通知被注冊的 Unhandled Exception Filter,會引發安全問題的堆棧溢出包括:覆蓋了函數的返回值,覆蓋了 Exception handler 的地址,覆蓋了某些類型的參數。關于編譯器的 Security Checks 的內容,詳細參考:http://msdn.microsoft.com/en-us/library/Aa290051(注意,此文章談到的是 Visual Studio .NET 2003,其中 _set_security_error_handler 函數在 VC++2005 以及以上版本已經無法使用)
  3. 如果沒有調用 _set_invalid_parameter_handler 設置 Invalid parameter handler 時,檢查到了非法的參數

CRT 是通過何種方式使得我們注冊的 Unhandled Exception Filter 不被調用的?答案在 CRT 的代碼中:

  1. /* 代碼來源于 gs_report.c */
  2. /* Make sure any filter already in place is deleted. */
  3. SetUnhandledExceptionFilter(NULL);
  4. UnhandledExceptionFilter(&ExceptionPointers);

CRT 通過調用 SetUnhandledExceptionFilter 并傳遞參數 NULL 來清除用戶注冊的 Unhandled Exception Filter。如果期望用戶注冊的 Unhandled Exception Filter 總是被調用那么應該避免 CRT 中相關的清理代碼。做法之一就是修改 CRT 代碼并且編譯為靜態庫(微軟的 VC++ Libraries 開發 Lead Martyn Lovell 在 https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=101337&SiteID=210 談到過有關的問題),這里并不建議使用此做法。另外一種做法則是改變 SetUnhandledExceptionFilter 的行為,使得 CRT 對 SetUnhandledExceptionFilter 的調用不起任何作用(更加詳細的論述可以參考《Windows 核心編程》相關章節)。

  1. // 無法得知此代碼來源于
  2. #ifndef _M_IX86
  3. #error "The following code only works for x86!"
  4. #endif
  5.  
  6. // 此函數一旦成功調用,之后對 SetUnhandledExceptionFilter 的調用將無效
  7. void DisableSetUnhandledExceptionFilter()
  8. {
  9. void* addr = (void*)GetProcAddress(LoadLibrary("kernel32.dll"),
  10. "SetUnhandledExceptionFilter");
  11.  
  12. if (addr)
  13. {
  14. unsigned char code[16];
  15. int size = 0;
  16.  
  17. code[size++] = 0x33;
  18. code[size++] = 0xC0;
  19. code[size++] = 0xC2;
  20. code[size++] = 0x04;
  21. code[size++] = 0x00;
  22.  
  23. DWORD dwOldFlag, dwTempFlag;
  24. VirtualProtect(addr, size, PAGE_READWRITE, &dwOldFlag);
  25. WriteProcessMemory(GetCurrentProcess(), addr, code, size, NULL);
  26. VirtualProtect(addr, size, dwOldFlag, &dwTempFlag);
  27. }
  28. }

只需要在注冊 Unhandled Exception Filter 之后調用 DisableSetUnhandledExceptionFilter() 函數,那么之后所有對 SetUnhandledExceptionFilter 的調用都將無效,自然 CRT 也無法通過調用 SetUnhandledExceptionFilter 來清除用戶注冊的 Unhandled Exception Filter。

posted on 2015-05-15 02:17 Enic 閱讀(2684) 評論(0)  編輯 收藏 引用 所屬分類: 從零開始寫棋牌游戲平臺
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品va| 国产精品美女诱惑| 亚洲激情视频在线| 欧美高清视频www夜色资源网| 性欧美8khd高清极品| 国产欧美在线视频| 欧美在线亚洲在线| 久久久精品999| 亚洲国产婷婷| 宅男66日本亚洲欧美视频| 国产精品成人va在线观看| 性高湖久久久久久久久| 久久国产精品久久久久久久久久| 一区二区三区自拍| 亚洲精品1234| 国产精品中文在线| 男男成人高潮片免费网站| 欧美黄色视屏| 午夜国产精品影院在线观看| 午夜精品久久| 99精品欧美一区二区三区| 亚洲一区二区精品在线| 国产一区日韩二区欧美三区| 亚洲国产高清一区二区三区| 欧美三级午夜理伦三级中视频| 欧美在线一级视频| 欧美国产一区二区在线观看| 午夜电影亚洲| 欧美激情欧美激情在线五月| 欧美在线播放视频| 欧美韩国日本一区| 欧美在线一二三区| 欧美日韩视频专区在线播放| 久久久久久久久久久久久9999 | 亚洲激情校园春色| 国产精品视频| 亚洲欧洲一区二区三区| 国产一区在线免费观看| 99视频精品免费观看| 玉米视频成人免费看| 亚洲一卡二卡三卡四卡五卡| 亚洲国产精品久久久久秋霞不卡| 在线一区亚洲| 99re热精品| 久久婷婷综合激情| 久久国产精品99国产精| 欧美午夜影院| 91久久精品一区二区别| 激情校园亚洲| 亚洲欧美影院| 午夜精品久久久久久久久久久久 | 老司机精品视频网站| 午夜精品一区二区三区在线| 欧美大成色www永久网站婷| 老牛影视一区二区三区| 国产精品日韩在线一区| 夜夜爽99久久国产综合精品女不卡 | 久久只精品国产| 久久久久久亚洲精品中文字幕 | 国产欧美一区二区色老头| 亚洲精品资源美女情侣酒店| …久久精品99久久香蕉国产| 羞羞答答国产精品www一本| 亚洲欧美激情视频| 欧美三级午夜理伦三级中视频| 欧美高清自拍一区| 亚洲国产小视频在线观看| 久久综合精品国产一区二区三区| 久久久精品一品道一区| 国产一区清纯| 久久成人人人人精品欧| 久久在线免费观看| 狠狠入ady亚洲精品| 久久久久久91香蕉国产| 蜜桃av一区二区| 亚洲黄色av一区| 欧美成人免费在线视频| 亚洲欧洲一区二区三区| 一区二区三区高清视频在线观看| 欧美日韩免费网站| 亚洲午夜免费福利视频| 久久狠狠一本精品综合网| 国产一区视频在线看| 久久久久久欧美| 亚洲第一在线| 亚洲深夜激情| 国产一区久久| 免费在线一区二区| 日韩午夜av电影| 久久精彩免费视频| 亚洲电影自拍| 欧美少妇一区二区| 欧美尤物巨大精品爽| 欧美成人免费观看| 一区二区国产在线观看| 国产欧美日韩三区| 免费成人美女女| 一区二区日本视频| 久久久久网址| 99成人精品| 国产精品欧美精品| 久久综合色天天久久综合图片| 亚洲国产一成人久久精品| 午夜精品久久久久久久久| 一区二区三区在线视频播放| 欧美精品在线观看播放| 亚洲欧美制服另类日韩| 欧美国产欧美综合 | 亚洲免费播放| 国产日韩视频| 欧美日韩亚洲另类| 久久久久久久网| 亚洲午夜激情| 亚洲国产99精品国自产| 欧美专区日韩视频| 99国内精品久久| 在线观看视频一区二区| 国产精品va| 欧美日韩成人| 美女图片一区二区| 性伦欧美刺激片在线观看| 99热这里只有精品8| 嫩草影视亚洲| 久久女同精品一区二区| 亚洲午夜久久久久久久久电影院 | 久久午夜精品一区二区| 亚洲在线一区二区| 在线视频中文亚洲| 亚洲精品欧美专区| 伊甸园精品99久久久久久| 国产精品综合| 欧美小视频在线观看| 欧美精品午夜| 欧美成人亚洲| 美日韩精品视频| 久热精品视频| 久久久久国产一区二区三区四区| 香蕉久久一区二区不卡无毒影院| 亚洲免费成人av电影| 亚洲精品乱码久久久久久日本蜜臀| 美日韩免费视频| 免费一区二区三区| 猫咪成人在线观看| 久久婷婷国产麻豆91天堂| 欧美一区二区三区视频在线| 亚洲主播在线| 午夜亚洲福利| 欧美一区精品| 久久久久国内| 免费日韩一区二区| 欧美成人网在线| 亚洲国产精品va| 亚洲欧洲日产国产网站| 亚洲精品乱码久久久久久蜜桃91| 亚洲黄色一区| 宅男66日本亚洲欧美视频| 这里只有精品视频在线| 亚洲综合999| 久久精精品视频| 久久综合九色综合久99| 欧美风情在线| 国产精品黄视频| 国产午夜精品一区理论片飘花| 国产自产女人91一区在线观看| 国精产品99永久一区一区| 伊人久久大香线蕉av超碰演员| 亚洲日本成人| 亚洲免费视频在线观看| 久久国内精品视频| 亚洲高清三级视频| 亚洲一区二区毛片| 久久久精品视频成人| 欧美国产日韩在线| 国产欧美一区二区精品仙草咪 | 在线观看欧美激情| 99精品国产在热久久婷婷| 午夜视频在线观看一区二区三区| 久久久久国产精品午夜一区| 欧美激情区在线播放| 亚洲免费小视频| 欧美成人免费全部| 国产日韩欧美亚洲| 亚洲麻豆一区| 久久天天躁狠狠躁夜夜av| 亚洲人成网站在线观看播放| 亚洲资源在线观看| 欧美成人自拍| 国产日韩欧美一区二区| 亚洲高清久久| 亚洲欧美日韩在线播放| 欧美成人三级在线| 一区二区三区四区精品| 欧美一区二区视频在线观看2020| 欧美欧美天天天天操| 国产精品区二区三区日本| 中文精品99久久国产香蕉| 伊人久久亚洲美女图片| 日韩视频一区二区在线观看| 亚洲精品自在久久| 亚洲天堂视频在线观看|