??
該程序模擬UNIX中save與resume函數,并介紹在VC中如何使用匯編進行機器級的操作.
主函數很簡單首先引入兩個外部函數,extern "C"表示按傳統C命名習慣.函數save將程序指針保存在 - 免費下載
匯編語言資源
文件大小:7 K
?? 資源詳細信息
?? 溫馨提示:本資源由用戶 BO__1 上傳分享,僅供學習交流使用。如有侵權,請聯系我們刪除。
?? 資源簡介
該程序模擬UNIX中save與resume函數,并介紹在VC中如何使用匯編進行機器級的操作.
主函數很簡單首先引入兩個外部函數,extern "C"表示按傳統C命名習慣.函數save將程序指針保存在(*s)中并返回0,為什么有
if(save(&sp)){...}
if后的語句看起來永遠都不會被執行,但是運行結果表明它被執行了.這個問題同UNIX中處理機調度函數(switch)的那個if語句(第一句)一樣.
程序執行完save(&sp)后得到因為條件為假而執行else語句,卻在判斷之前將程序指針保存在sp中了.
else語句中的resume(&sp),該函數很狡猾將堆棧中的返回地址改變了,改到了sp所指出,即將程序指針改到了執行條件判斷前.resume返回1,條件滿足,執行if語句.
save函數堆棧:
eip ebp+8
s ebp+4
ebp ebp+0
resume函數堆棧與save的相同.
新建一個win32的工程,將unixc.cpp和unix.obj加入過程即可.
unix.obj是用masm6.11生成的:ml /c /coff unix.asm,生成coff格式的obj而不是omf格式.
?? 源碼文件列表
??
溫馨提示:點擊文件名或"查看源碼"按鈕可在線瀏覽源代碼,支持語法高亮顯示。
??
立即下載此資源
?? 提示:下載后請用壓縮軟件解壓,推薦使用 WinRAR 或 7-Zip
?? 資源說明
?? 下載說明
- 下載需消耗 2積分
- 24小時內重復下載不扣分
- 支持斷點續傳
- 資源永久有效
?? 使用說明
- 下載后用解壓軟件解壓
- 推薦 WinRAR 或 7-Zip
- 如有密碼請查看說明
- 解壓后即可使用
?? 積分獲取
- 上傳資源獲得積分
- 每日簽到免費領取
- 邀請好友注冊獎勵
- 查看詳情 →