• <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 閱讀(3875) 評(píng)論(3)  編輯 收藏 引用 所屬分類(lèi): 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)論   


            国产精品久久久久久久人人看 | 亚洲精品久久久www| 无码国内精品久久人妻麻豆按摩| 亚洲精品NV久久久久久久久久 | 少妇久久久久久被弄高潮| 久久精品麻豆日日躁夜夜躁| 国产巨作麻豆欧美亚洲综合久久 | 久久WWW免费人成一看片| 午夜精品久久久久久久久| 国产精品久久永久免费| 青青久久精品国产免费看| 99国产精品久久| 久久久久久久久波多野高潮| 亚洲国产精品久久久久婷婷软件 | 97久久超碰国产精品2021| 久久久久亚洲精品男人的天堂| 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 | 亚洲国产天堂久久久久久| 欧美久久综合性欧美| 偷偷做久久久久网站| 久久天堂电影网| 丰满少妇高潮惨叫久久久| 久久午夜无码鲁丝片秋霞| 国产综合成人久久大片91| 久久综合视频网| 色欲av伊人久久大香线蕉影院| 色综合久久88色综合天天| 伊人久久大香线蕉亚洲| 日产久久强奸免费的看| 久久精品亚洲福利| 久久国产精品偷99| 亚洲国产精品综合久久一线| 亚洲国产精品成人AV无码久久综合影院 | 久久夜色精品国产亚洲| 狠狠色婷婷久久一区二区三区| 人妻精品久久久久中文字幕一冢本 | 精品无码久久久久久久动漫| 久久精品国产69国产精品亚洲| 国产精品一区二区久久国产| 99久久人妻无码精品系列蜜桃| 久久精品夜夜夜夜夜久久|