首页
社区
课程
招聘
读取内存给一个变量如何再从右向左付值给一个数组
发表于: 2012-11-28 16:10 3970

读取内存给一个变量如何再从右向左付值给一个数组

2012-11-28 16:10
3970
请教:比方说在内存中
0x12345678  A0 45 B3 87
我想把0x12345678这个地址中的内容读出来,放到一个BYTE bb[12]数组中(放到前四个元素中)。如果定义一个变量ULONG aa用ReadProcessMemory读取到aa中。aa中显示的是0x87B345A0。哪么我怎样把aa的值从右向左存入BYTE bb[12]数组中?哪位兄弟给写个例子??(我记得有篇文章介绍来,找不到了)谢了

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 623
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
1) bb[0] <= 0xa0 ?

PULONG p = (PULONG)&bb[0];
*p = aa;

2) bb[0] <= 0x87 ?

PCHAR p = (PCHAR)&aa;
bb[0] = p[3];
bb[1] = p[2];
bb[2] = p[1];
bb[3] = p[0];
2012-11-28 16:29
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
用htol函数
2012-11-28 22:26
0
雪    币: 7498
活跃值: (5327)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
直接读取就可以了
读取到bb可以把A0 45 B3 87当做字符串直接读取,读取4个字节便会覆盖bb头4个元素

读取bb:
ReadProcessMemory(hProcess,(LPVOID)0x12345678,bb,4,NULL);
for (int i=0;i<4;i++)
{
        printf("%02x ",bb[i]);
}
printf("\n");
输出结果为:A0 45 B3 87

读取aa:
ReadProcessMemory(hProcess,(LPVOID)0x12345678,&aa,4,NULL);
printf("%08x \n",aa);
输出结果为:0x87B345A0
2012-11-28 23:59
0
雪    币: 615
活跃值: (172)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
5
memcpy(bb, htonl(aa), 4)
2012-11-29 02:07
0
雪    币: 7498
活跃值: (5327)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
内存复制的话
不用htonl()吧?
可以直接复制的
memcpy(bb, &aa, 4) ;
2012-11-29 07:14
0
雪    币: 39
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼上的各位谢了
2012-11-29 08:13
0
雪    币: 164
活跃值: (39)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
前来学习!膜拜各位!
2012-12-1 12:54
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
unsigned char bb[0x20]={0};
        __asm{
                mov eax,DWORD ptr [0x12345678]
                lea ebx,bb
                add ebx,0xC
                mov DWORD ptr [ebx],eax
        }
2012-12-1 14:24
0
游客
登录 | 注册 方可回帖
返回
//