• <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>

            Ay's Blog@CNSSUESTC

            誰(shuí)動(dòng)了我的指針?--記一次windbg內(nèi)存斷點(diǎn)的使用

             

            寫(xiě)驅(qū)動(dòng)的時(shí)候有個(gè)地方老是藍(lán)屏,看了dump發(fā)現(xiàn)數(shù)據(jù)被非法篡改了.

            數(shù)據(jù)初始化如下

             

            if(record_set_ptr != NULL )
            {
                record_set_ptr->look_aside_pool_ptr = g_user_control_context.look_aside_pools[type] ;
                record_set_ptr->type = type ;
                record_set_ptr->buffer_size = notify_count * unit_size_of ;
                record_set_ptr->units_count = notify_count ;
                record_set_ptr->complete_count = 0 ;
            }

            然后在調(diào)用ExFreeToNPagedLookasideList傳入record_set_ptr->look_aside_pool_ptr 的時(shí)候掛了,發(fā)現(xiàn)record_set_ptr->look_aside_pool_ptr已經(jīng)被改了.

             

            為了跟蹤數(shù)據(jù)在哪里被修改了,先在數(shù)據(jù)初始化的地方下斷,然后記下record_set_ptr->look_aside_pool_ptr 的地址:0x85c16018

            對(duì)這個(gè)內(nèi)存下個(gè)斷點(diǎn)

            1: kd> ba w4 85c16018

            w表示在寫(xiě)入時(shí)斷下,4表示監(jiān)控范圍,單位是字節(jié) 

            整個(gè)命令的意思就是讓調(diào)試器在系統(tǒng)寫(xiě)入內(nèi)存85c16018-85c1601b這個(gè)地址范圍的時(shí)候中斷

            OK,命令下完,F5一下就立馬斷下來(lái)了

            1: kd> g
            Breakpoint 3 hit
            nt!memcpy+0x33:
            8053b583 f3a5            rep movs dword ptr es:[edi],dword ptr [esi]


            此時(shí)edi的值: 0x85c16018

             

            最后看一下函數(shù)堆棧,發(fā)現(xiàn)是字符串拷貝越界覆蓋了后面的數(shù)據(jù).... 

            后面又想到,出錯(cuò)時(shí)record_set_ptr->look_aside_pool_ptr 的值是0x005c0065

            這么明顯的字符串特征竟然沒(méi)意識(shí)到....一看出錯(cuò)值就應(yīng)該知道是字符串覆蓋造成的.....

            posted on 2012-01-03 15:07 __ay 閱讀(3862) 評(píng)論(3)  編輯 收藏 引用 所屬分類: Debugging

            Feedback

            # re: 誰(shuí)動(dòng)了我的指針?--記一次windbg內(nèi)存斷點(diǎn)的使用 2012-01-05 09:33 zuhd

            和樓主分享一下:
            一般遇到這種需要下內(nèi)存斷點(diǎn)的調(diào)試,我可能會(huì)先檢查代碼,應(yīng)該會(huì)有90%的概率是越界造成的,確定該內(nèi)存是在堆還是棧,然后排查該變量上下的兩個(gè)變量,基本都能找到,呵呵。請(qǐng)問(wèn)樓主是UESTC的嗎?  回復(fù)  更多評(píng)論   

            # re: 誰(shuí)動(dòng)了我的指針?--記一次windbg內(nèi)存斷點(diǎn)的使用 2012-01-05 13:30 __ay

            呵呵 你也是UESTC的?不過(guò)我已經(jīng)畢業(yè)了
            當(dāng)然如果越界的時(shí)候能直接引發(fā)崩潰,那么看代碼直接就能解決問(wèn)題
            但是在越界讀寫(xiě)不引發(fā)crash,直到引用被覆蓋的數(shù)據(jù)的時(shí)候才崩潰,如果這個(gè)時(shí)候代碼中很難定位到被覆蓋數(shù)據(jù)是什么時(shí)候?qū)懙?那應(yīng)該用內(nèi)存斷點(diǎn)會(huì)比較好了@zuhd
              回復(fù)  更多評(píng)論   

            # re: 誰(shuí)動(dòng)了我的指針?--記一次windbg內(nèi)存斷點(diǎn)的使用 2012-01-05 14:24 dourgulf

            好經(jīng)驗(yàn)分享,不錯(cuò)  回復(fù)  更多評(píng)論   


            久久国产免费| 精品免费久久久久久久| 久久久久人妻一区精品 | 久久国产亚洲精品| 精品伊人久久大线蕉色首页| 国产精品久久午夜夜伦鲁鲁| 国产三级观看久久| 亚洲精品无码久久千人斩| 91精品免费久久久久久久久| AV无码久久久久不卡蜜桃| 精品视频久久久久| 2021少妇久久久久久久久久| 少妇人妻综合久久中文字幕| 国产成人精品久久亚洲高清不卡 | 日本五月天婷久久网站| 国内精品伊人久久久久影院对白 | 奇米影视7777久久精品| 久久91这里精品国产2020| 久久人人爽人人爽人人AV东京热 | 久久精品国产99国产电影网 | www.久久精品| 性欧美丰满熟妇XXXX性久久久 | 久久久久久国产精品无码下载| 久久国产欧美日韩精品| 亚洲国产成人精品91久久久 | 亚洲AV无码久久精品狠狠爱浪潮 | 国产偷久久久精品专区| 久久香综合精品久久伊人| 久久人妻少妇嫩草AV蜜桃| 中文字幕亚洲综合久久2| 国产精品禁18久久久夂久| 久久久久久亚洲AV无码专区| 日本欧美久久久久免费播放网| 久久久久久久波多野结衣高潮 | 久久天天躁狠狠躁夜夜网站| 久久AV高潮AV无码AV| 久久天天躁狠狠躁夜夜不卡| 国产成人久久777777| 国产免费久久精品99re丫y| 奇米影视7777久久精品| 久久无码av三级|