Posted on 2005-12-03 12:33
Tommy Liang 閱讀(1727)
評(píng)論(0) 編輯 收藏 引用
/GS編譯選項(xiàng)是檢測(cè)改寫返回地址的某些緩沖區(qū)溢出的編譯選項(xiàng),具體表現(xiàn)在
以下的代碼里面:
0040B577
mov esi,esp0040B579 lea edx,[ebp-14h]
0040B57C push edx
0040B57D call dword ptr [__imp__LoadLibraryA@4 (00424138)]
0040B583 cmp esi,esp
0040B585
call __chkesp (004010c0)0040B58A mov dword ptr [ebp-4],eax
為了學(xué)習(xí)關(guān)于緩沖區(qū)溢出編程的知識(shí),我們得從簡(jiǎn)入難,因此要關(guān)閉這個(gè)選項(xiàng)。
VC6的project setting沒有這個(gè)選項(xiàng),/GS是VC7 用的
/nologo /MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"Debug/OverFlow.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
嗯。。。?
查一查,看一看,原來是 /GZ 起作用.
我把 /GZ編譯選項(xiàng)去掉就OK了,沒有討厭的call __chkesp了,
