簡體   English   中英

如何了解我是為 32 位還是 64 位編譯以及如何更改?

[英]How to learn if i am compiling for 32bit or 64bit and how to change that?

所以我在閱讀 memory 時遇到了麻煩。 我成功地讀取了具有短地址(例如0x5CD38994 )的值,但是當我嘗試使用更長的地址(例如0x2840C6C68D8時,我只得到 0。有人說我應該將我的代碼編譯為 64 位。 但我不知道我是為 32 位還是 64 位編譯它。 如何學習它,它是在我的 IDE 上改變還是與編譯器有關? 我正在使用 Eclipse IDE 和 GCC 編譯器。 我應該怎么做才能將我的代碼編譯為 64 位?

這樣可行:

ReadProcessMemory(pHandle, (LPVOID)0x5CD38994, &my_value, sizeof(my_value),0);

那不會:

ReadProcessMemory(pHandle, (LPVOID)0x2840C6C68D8, &my_value, sizeof(my_value),0);

0x2840C6C68D8 是一個 64 位地址。 您不能從 32 位進程中使用 ReadProcessMemory() 並嘗試讀取 64 位地址,您必須針對 x64 進行編譯。

要在 GCC 上為 x64 編譯,請使用gcc -m64 ,您應該能夠將其添加到 Z581D6381F3F35E4F9D77201ACF78 設置中某處的編譯器/鏈接器標志中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM