如何使.NET应用程序“大地址识别”?

时间:2009-08-28 11:41:56

标签: .net windows memory

假设我使用/ 3GB开关启动了32位Windows Server,如何让.NET应用程序使用额外的地址空间?

5 个答案:

答案 0 :(得分:51)

该标志是图像标题的一部分,因此您需要使用editbin修改它。

editbin /LARGEADDRESSAWARE <your exe>

使用dumpbin /headers并查找是否存在Application can handle large (>2GB) addresses,以查看该标志是否已设置。

答案 1 :(得分:8)

据我所知,您必须使用现有答案中显示的editbin实用程序。似乎没有任何方法可以使用Visual Studio .NET设置标志,看起来他们鼓励人们在可能的情况下编译64位而不是使用标志

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=93771

答案 2 :(得分:2)

要从Visual studio自动执行,请参阅此问题: flag from visual studio

答案 3 :(得分:1)

到目前为止,还没有给出跨平台和开源方式在 PE 可执行文件上设置 LAA 位的答案,所以我决定填补空白。

注意:确保您有备份!

您可以使用逆向工程框架radare2。如果您使用 Linux 发行版,radare2 通常位于存储库中。不幸的是,设置位的功能不是内置的,但使用以下脚本很容易:

e cfg.newshell=true      # allows nested $(…) commands
s/ PE\0\0                # search PE file signature
s +4                     # skip the signature
echo "Original content:"
pf.pe_image_file_header.characteristics
echo "Patching the file…"
s+ 0x12                  # go to the characteristics field
wv2 $(?v $(pv2) \| 0x20) # 0x20 is the LAA bit, binary-OR it in the address
s-
echo "The new content:"
pf.pe_image_file_header.characteristics

这里有一个演示如何使用它(脚本在 script.r2 文件中)和一个 notepad.exe 文件:

 λ r2 -qi script.r2 -nnw notepad.exe
Searching 4 bytes in [0x1-0x620ca]
0x00000080 hit0_0 .mode.$PE\u0000\u0000Ld`J.
Original content:
      characteristics : 0x00000096 = characteristics (bitfield) = 0x00000107 : IMAGE_FILE_RELOCS_STRIPPED | IMAGE_FILE_EXECUTABLE_IMAGE | IMAGE_FILE_LINE_NUMS_STRIPPED | IMAGE_FILE_32BIT_MACHINE
Patching the file…
The new content:
      characteristics : 0x00000096 = characteristics (bitfield) = 0x00000127 : IMAGE_FILE_RELOCS_STRIPPED | IMAGE_FILE_EXECUTABLE_IMAGE | IMAGE_FILE_LINE_NUMS_STRIPPED | IMAGE_FILE_LARGE_ADDRESS_AWARE | IMAGE_FILE_32BIT_MACHINE

要仔细检查它是否有效,您还可以使用 objdump -p notepad.exe | grep "large address aware" 命令并查看它是否有输出。

答案 4 :(得分:0)

将这些行添加到Post构建中:

call "$(DevEnvDir)..\tools\vsdevcmd.bat"
editbin /largeaddressaware "$(TargetPath)"

发件人:vsvars32.bat in Visual Studio 2017

相关问题