VC 寫shellcode 時函式位址去掉跳轉表

2021-09-30 16:54:54 字數 386 閱讀 3555

在預設debug/release模式下函式位址不是最終的函式位址,而是e9 + offset 的形式,這使得直接使用函式位址作為shellcode 起始位址時會出現問題。該怎麼修改編譯選項呢?

在專案屬性中,選擇 「配置屬性」 ==> "c/c++" ==> "優化" ==> "全程式優化" ,選擇「是(/gl)」

這樣就去掉了函式跳轉表。但是這個開關會和另乙個開關有衝突:

在「常規」 屬性裡,將除錯資訊格式選擇為「程式資料庫(/zi)」就可以了。

如果想要通過函式名稱拷貝彙編**,並且shellcode按照函式排列,需要指定編譯開關: 「配置屬性」 ==> "c/c++" ==> "**生成" ==> "使用函式級鏈結(enable function-level linking)"  yes

vc 如何自己寫c庫函式lib

步驟1 開啟vc 6.0,新建乙個空win32 static library 靜態函式 新建乙個11.cpp原始檔和22.h標頭檔案 執行,這時候在這個專案下就會生成0654.lib 和22.h檔案 把0654.lib檔案複製到 vc 6.0 的lib資料夾下 例如 visual c 6.0 支援w...

用VC寫執行緒

handle hworkthread hworkthread createthread null,0,lpthread start routine startworkthread,執行緒入口函式 info,傳遞引數給執行緒入口函式 0,null 其中startworkthread為執行緒主函式,其必...

VC 寫Dll和呼叫

先轉過來 下來再看 一 寫addtest.dll 1.新建乙個project win32 dynamic link library,命名為addtest,finish.2.新建乙個c c head file,命名為summath.h,其 為 extern c declspec dllexport i...