MSVC++ - 强制将除“.reloc”之外的所有内容放入一个单独的部分中

发布于 2024-11-24 21:32:47 字数 309 浏览 3 评论 0原文

我尝试在静态只读字符串数据上使用 Microsoft Visual C++ #pragma section( ".text" )__declspec(allocate(".text")) 。但二进制文件中仍然有一个 .rdata 部分。我没有使用标准 C 库。我使用 MSVC++ 作为字节码编译器,用于代码注入。

通过在“.text”部分中包含只读数据而不是在“.rdata”部分中,它将极大地简化注入。我怎样才能做到这一点?是否有一个链接器选项可以将所有内容填充到一个部分中,或将两个部分合并在一起?

I've tried using Microsoft Visual C++ #pragma section( ".text" ) and __declspec(allocate(".text")) on static read-only string data. But there is still a .rdata section in the binary. I am NOT using the standard C libraries. I am using MSVC++ as a bytecode compiler for use with code injection.

It would greatly simplify injection by having read-only data inside the ".text" section and not the ".rdata" section. How can I do that? is there a linker option to stuff everything into one single section, or merge 2 sections together?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜宝宝 2024-12-01 21:32:47

Microsoft 链接器中有一个合并节选项。这看起来适合我的目的。 /MERGE:[from=to]

There is a merge sections option in the Microsoft linker. This looks like it will work for my purposes. /MERGE:[from=to]

岁月染过的梦 2024-12-01 21:32:47

手动将所有字符串和其他静态数据放入堆栈中。

因此,除了 .text 之外,您不需要其他部分。

char String[] = { 's', 't', 'r', 'i', 'n', 'g', 0 };

和统一码:

wchar_t WideString[] = { L'H', L'e', L'l', L'l', L'o', L'\0' };

Put all strings and other static data in stack manually.

So you don't need other sections, except .text.

char String[] = { 's', 't', 'r', 'i', 'n', 'g', 0 };

And Unicode:

wchar_t WideString[] = { L'H', L'e', L'l', L'l', L'o', L'\0' };
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文