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

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>
            久久久亚洲国产天美传媒修理工 | 亚洲日本理论电影| 免费亚洲电影在线观看| 久久激情中文| 亚洲国产成人av在线| 欧美14一18处毛片| 欧美激情国产日韩精品一区18| 亚洲经典一区| 亚洲美女精品久久| 国产精品久久久久久户外露出| 午夜精品成人在线视频| 亚洲欧美国产高清va在线播| 国产午夜精品久久| 欧美承认网站| 欧美亚洲成人精品| 久久深夜福利免费观看| 欧美国产成人精品| 亚洲天堂av高清| 性久久久久久久久| 91久久亚洲| 亚洲综合三区| 狠狠色丁香久久婷婷综合_中| 另类激情亚洲| 欧美三级电影网| 玖玖综合伊人| 欧美日韩国产亚洲一区| 欧美中文字幕在线| 欧美精品日韩www.p站| 久久精品日韩一区二区三区| 美女诱惑黄网站一区| 亚洲一区二区三区高清不卡| 欧美主播一区二区三区| 亚洲精品永久免费精品| 亚洲一区在线视频| 亚洲黄色天堂| 欧美一区三区二区在线观看| 亚洲精品一二区| 先锋亚洲精品| 一区二区三区视频在线 | 亚洲理论在线观看| 国产亚洲激情| 99精品国产在热久久下载| 激情文学综合丁香| 亚洲一区尤物| 亚洲深夜福利网站| 欧美成人免费网站| 久久蜜桃资源一区二区老牛| 欧美性猛交视频| 亚洲激情另类| 在线观看久久av| 亚洲欧美日韩第一区| 一区二区三区精品在线| 久久一综合视频| 久久久久久午夜| 欧美午夜片欧美片在线观看| 欧美激情精品久久久久久免费印度| 国产欧美日韩在线观看| 亚洲视频免费在线| 亚洲图片欧美午夜| 欧美久久久久| 亚洲经典在线看| 亚洲欧洲一区二区天堂久久 | 免费在线国产精品| 久久免费午夜影院| 国产日韩精品入口| 亚洲欧美另类在线观看| 亚洲欧美日韩国产一区| 欧美日韩在线高清| 一区二区三区久久久| 亚洲一区二区在线播放| 欧美视频你懂的| 亚洲视频播放| 亚洲欧美影音先锋| 国产精品美女www爽爽爽视频| 一区二区三区免费在线观看| 一区二区三区高清在线 | 久久五月激情| 欧美成人福利视频| 亚洲精品乱码久久久久久按摩观| 免费观看日韩av| 亚洲人成毛片在线播放| 日韩午夜在线视频| 欧美日韩综合网| 亚洲欧美成人网| 老妇喷水一区二区三区| 亚洲国产欧美另类丝袜| 欧美人与性禽动交情品| 亚洲视频香蕉人妖| 久久精品国产96久久久香蕉| 在线观看成人网| 欧美精品久久久久久久免费观看| 亚洲美洲欧洲综合国产一区| 午夜精品剧场| 在线播放亚洲一区| 欧美日韩国产成人在线免费| 亚洲一区日本| 欧美成人精品一区二区| 亚洲美女av黄| 国产日韩欧美不卡在线| 美日韩在线观看| 亚洲一二三区在线观看| 美女精品在线观看| 亚洲午夜精品国产| 狠狠综合久久av一区二区小说| 欧美福利小视频| 午夜电影亚洲| 亚洲欧洲在线一区| 久久精品夜色噜噜亚洲a∨ | 国产日产精品一区二区三区四区的观看方式| 欧美在现视频| 亚洲美洲欧洲综合国产一区| 老司机久久99久久精品播放免费 | 亚洲欧美日韩成人高清在线一区| 国产综合视频在线观看| 欧美日韩国产综合久久| 久久精品亚洲一区二区三区浴池| 亚洲国产视频一区二区| 久久精品一区蜜桃臀影院| 夜夜嗨av一区二区三区网页| 国产一区二区三区在线观看网站| 欧美了一区在线观看| 久久青草福利网站| 午夜久久美女| 亚洲午夜精品久久久久久浪潮| 欧美激情一区二区三级高清视频| 久久国产精品久久久久久久久久 | 久久香蕉国产线看观看av| 亚洲一区二区三区色| 尤物在线观看一区| 国产麻豆9l精品三级站| 欧美日韩综合一区| 欧美岛国激情| 欧美3dxxxxhd| 卡通动漫国产精品| 久久精品中文字幕一区| 欧美一区精品| 欧美在线黄色| 欧美一区二区三区电影在线观看| 一级日韩一区在线观看| 日韩亚洲欧美一区| 亚洲乱码国产乱码精品精98午夜 | 久久美女性网| 久久亚洲捆绑美女| 久久精品女人| 久久亚洲综合| 美女视频黄a大片欧美| 久久午夜激情| 欧美成人嫩草网站| 欧美激情女人20p| 欧美高清在线一区| 亚洲国产精品成人精品| 亚洲国产精品成人一区二区| 亚洲激情另类| 99视频精品| 亚洲一区二区三区乱码aⅴ| 亚洲一区二区三区四区中文| 亚洲淫片在线视频| 欧美一区二区视频免费观看| 久久精品国产综合精品| 久久色中文字幕| 欧美jjzz| 欧美体内谢she精2性欧美| 国产精品美女诱惑| 极品中文字幕一区| 亚洲激情视频在线| 亚洲视频 欧洲视频| 性做久久久久久免费观看欧美| 久久久久www| 亚洲电影av| 中文高清一区| 久久久国产精品一区二区中文 | 一区二区三区 在线观看视频| 这里只有视频精品| 欧美在线精品免播放器视频| 媚黑女一区二区| 国产精品v亚洲精品v日韩精品| 国产欧美精品在线播放| 亚洲激情社区| 午夜日韩在线| 亚洲第一综合天堂另类专| 亚洲婷婷免费| 久久蜜桃精品| 国产精品久久久久久久免费软件 | 在线日韩电影| 一区二区欧美在线观看| 久久不射2019中文字幕| 91久久国产精品91久久性色| 亚洲自拍偷拍色片视频| 欧美1级日本1级| 国产午夜精品一区理论片飘花| 亚洲乱码久久| 久久久久久九九九九| 亚洲精品乱码久久久久久按摩观| 午夜激情综合网| 欧美日韩国产页| 亚洲国产精品第一区二区| 欧美一区二区视频免费观看| 亚洲欧洲精品一区二区精品久久久| 午夜精品久久久久久| 欧美日韩 国产精品|