前言
最近在編寫dll注入程序的時候,因為想注入到系統進程,結果發現總是注入失敗。自閉了好長一會發現我忘記了我的系統是64位的,系統進程也是64位的,而我編寫的待注入的DLL是32位了,所以才導致失敗。在配置編寫64位dll環境時碰見一些坑,總結一下希望能幫助到其他人。
環境配置
以vs2010的設置為例,其他版本的vs應該差不多。
- vs2010默認生成的是32位版本的程序(EXE,DLL),我們需要點擊配置管理器自己進行配置
- 然后我們在活動解決方案平台下拉,新建。
- 然后設置為x64,其余選項默認不變。
- 確定后關閉,我們這是可以在配置處看到現在為x64版本。但是還沒有配置完成,我們需要在修改一下配置。
- 我們在項目處右擊-》配置,然后我們需要確實平台處顯示的是X64,保證我們修改的是剛剛新建的x64版本的配置。如果不是x64需要選擇x64后再進行下面的配置。
- 我們選擇c/c++ -》 預處理器,然后將默認的WIN32改為WIN64。
- 接着我們選擇鏈接器 -》 高級,確定目標計算機處為64位版的,如果不是需要選擇為64位版本的。這樣設置就完成了。
判斷DLL位數
- 我們先判斷在WIN32版本下生成的DLL的位數,打開VS自帶的命令提示工具。 輸入dumpbin /headers + DLL路徑,查看DLL位數為32位
- 我們在判斷X64版本下生成的DLL的位數,發現其為64位