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

            的筆記

            隨時隨地編輯

            VC反匯編筆記一

            VC反匯編筆記一                

            對幾個最基礎的c++和對應的反匯編羅列了下,有的有簡要注釋,沒注釋的是一些常規形態。掛在網上,隨時方便參考回顧。看的時候可以參考上一篇《函數反匯編之函數創建和恢復現場》
            http://www.shnenglu.com/flyindark/archive/2012/01/09/163895.html
             

            1  堆棧上分配內存

            本質是在ES上分配一個空間,并用一個標識符表示起始的地址(這里是string),然后初始化的時候將常量區的內容復制到這個分配的空間上。這個ES堆棧空間用BPSP定位。

             
             

            2  常量空間和堆棧空間

             

              

            3  /GS開關

            3.1  SOURCE

            __security_cookie

            http://msdn.microsoft.com/en-us/library/ms235362(v=vs.80).aspx

             

            /GS (Buffer Security Check)

            http://msdn.microsoft.com/en-us/library/8dbf701c(v=VS.80).aspx

            Detects some buffer overruns that overwrite the return address, a common technique for exploiting code that does not enforce buffer size restrictions. This is achieved by injecting security checks into the compiled code.

             

            /GS(緩沖區安全檢查)

            http://msdn.microsoft.com/zh-cn/library/8dbf701c(v=vs.90).aspx

            檢測某些覆蓋返回地址的緩沖區溢出,這是一種利用不強制緩沖區大小限制的代碼的常用技術。這是通過將安全檢查插入到已編譯代碼中完成的。

             

            /Gs (Control Stack Checking Calls)

            http://msdn.microsoft.com/en-US/library/9598wk25(v=vs.80).aspx

            Controls stack probes.

             

            /Gs(控制堆棧檢查調用)

            http://msdn.microsoft.com/zh-cn/library/9598wk25(v=vs.90).aspx

            控制堆棧探測。

             

            check_stack

            http://msdn.microsoft.com/zh-cn/library/ybwsy5f9(v=vs.90).aspx

            Instructs the compiler to turn off stack probes if off (or –) is specified, or to turn on stack probes if on (or +) is specified.


            注意大小寫,
            GSGs是不一樣的,中文文檔里有些小錯誤,關閉GS掉了“-”。

            編譯器進行判斷的,像函數里定義了char數組,后面又用字符串操作函數進行了一定的操作,就說明

            可能存在溢出。編譯器在編譯這個函數里的時候就加上security cookie的保護。

             GS默認是開

            /GS

            /GS-


            GS開后,編譯器插了三行代碼,目的是ebp-4放了一個4字節的保護數,防止向堆棧空間的string地址中寫入時越界(當然是想當然的看法,具體細節還不是很清楚)

              

            4  堆棧變量分配空間初始化的區別



            曾見過爭論
            {0}{}那個效率更高的;這個堆棧變量的初始化竟然要這么多指令,以后256以上的空間還是需要memset了,抑或聽說release時編譯器可能會優化了;

              

            5  函數調用

            5.1  現象快照

             

             

            進入調用函數前

            +            &string 0x001ff8dc char [6]*

            +            &string2       0x001ff8d0 char * *

                          ebp 0x001ff8e8 unsigned long

                          esp 0x001ff7dc unsigned long

            +            &x 0x001ff8c4 int *

            +            &y 0x001ff8b8 int *

             

            進入調用函數第一條指令

                          ebp 0x001ff8e8 unsigned long

                          esp 0x001ff7d0 unsigned long

            +            &a 0x001ff7d4 int *

            +            &b 0x001ff7d8 int *

            5.2  總結

            函數名是函數地址的標識符

            參數地址是常量空間地址,例如這里的&string2&x&y&a&b

            參數是從右向左的順序傳遞的,先處理倒數第一個參數

            參數傳值的時候折騰了下,先將常量傳到標識符(y),然后將y傳遞到EAX,然后將EAX壓棧。跟著是第一個參數x類似。

            調用前的參數入棧后,參數所在的地址就是調用的函數的參數的標識符。這里就免得參數被多次賦值。

            函數返回值放到EAX里了。

            壓入了2int參數,返回后ESP要加8

             

            6  返回結構體

            分析返回結構體的情形

            6.1  簡單結構體

             

             

             

            posted on 2012-02-01 14:43 的筆記 閱讀(1328) 評論(0)  編輯 收藏 引用 所屬分類: C++

            91麻豆国产精品91久久久| 久久丫精品国产亚洲av| 久久99精品久久久久久9蜜桃| 亚洲国产天堂久久久久久| 久久精品国产乱子伦| 久久精品亚洲中文字幕无码麻豆| 日本一区精品久久久久影院| 久久国产综合精品五月天| 伊人久久综合精品无码AV专区 | 久久久无码人妻精品无码| 亚洲av成人无码久久精品| 国产亚洲欧美成人久久片| 日韩精品无码久久一区二区三 | 久久久国产打桩机| 久久亚洲国产欧洲精品一| 久久无码AV中文出轨人妻| 国产日韩久久久精品影院首页| 一本久久a久久精品vr综合| 久久久久黑人强伦姧人妻| AV狠狠色丁香婷婷综合久久| 久久亚洲2019中文字幕| 久久久噜噜噜久久熟女AA片| 久久久人妻精品无码一区 | 久久精品国产亚洲沈樵| 久久精品综合网| 亚洲国产精品久久久久网站| 久久无码人妻一区二区三区| 久久精品国产日本波多野结衣 | 99久久国产主播综合精品| 亚洲精品tv久久久久久久久| 久久综合日本熟妇| 国产一区二区精品久久凹凸| 精品久久香蕉国产线看观看亚洲| 亚洲人成伊人成综合网久久久| 久久这里有精品视频| 久久露脸国产精品| 久久综合九色欧美综合狠狠 | 久久无码人妻一区二区三区午夜| 少妇熟女久久综合网色欲| 国产欧美久久久精品影院| 偷窥少妇久久久久久久久|