c++ - 在 BYTE 数组中存储 BYTE* 地址
问题描述
我有一个 type 变量BYTE*
,其中来自内存的地址是:BYTE* address = (BYTE*)0x4A4B4C4D
和一个BYTE Array
5 位数字,我想在其中完全复制地址。BYTE* jmp = new BYTE[5] {0xE9, 0x00, 0x00, 0x00, 0x00}
这个数组应该代表一个 32 位跳转,我必须将地址复制到最后 4 位,因为它有 4 个字节大。我以前试过memcpy
,但似乎memcpy
只是复制内存中那个地址的字节,这就是我不想要的。所以我的目标是有一个看起来像这样的字节数组BYTE[5] {0xE9, 0x4A, 0x4B, 0x4C, 0x4D}
:
编辑:
BYTE* jmp = new BYTE[5] {0xE9, 0x00, 0x00, 0x00, 0x00};
BYTE* address = (BYTE*)0x4A4B4C4D;
memcpy((jmp + 1), &address, 4);
delete[] jmp;
解决方案
你非常“指针重”。
BYTE jmp[5] = {0xE9};
uint32_t address = 0x4A4B4C4D;
memcpy(jmp + 1, &address, 4);
或者,根据字节顺序,
BYTE jmp[5] = {0xE9};
uint32_t address = 0x4D4C4B4A;
memcpy(jmp + 1, &address, 4);
推荐阅读
- c# - asp.net - 访问多对多关系属性
- masstransit - MassTransit 在所有消息完成后发布消息
- ios - 如何让 UICollectionViewCell 在 UICollectionView 之外存活几个点?
- javascript - (更改)事件不会触发功能
- python - 任何 SMTP 服务器都可以向任何其他 SMTP 服务器发送邮件吗?
- ssl - openssl 和通过 SSL/HTTPS 访问网页的问题
- react-native - 在本机反应中使用 NativeBase textArea
- excel - Excel countif公式两个条件
- spring-boot - Web应用程序Spring Boot中的“没有限定类型的bean”
- google-apps-script - 使用 Google Docs 的应用脚本检测超链接点击