首页
社区
课程
招聘
[求助] 怎么样用汇编 将一个数组写到一个地址
发表于: 2008-12-14 05:01 5808

[求助] 怎么样用汇编 将一个数组写到一个地址

2008-12-14 05:01
5808
DWORD addr=0x12345678;  //要被写入的地址

BYTE b[]={0x11,0x22,0x33,0x44,0x55,0x66 };

现在要在VC++ 中 ,内联汇编,将 b 数组写到 addr 这个地址。

应该怎么操作呢?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 437
活跃值: (273)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
2
mov byte ptr [0x12345678], 11
mov byte ptr [0x12345679], 22
mov byte ptr [0x1234567A], 33 等等
2008-12-14 11:42
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=bzhkl;549617]mov byte ptr [0x12345678], 11
mov byte ptr [0x12345679], 22
mov byte ptr [0x1234567A], 33 等等[/QUOTE]

只能这样一个字节一个字节的写啊。。。。。。。。要是数组很长怎么办呀
2008-12-14 17:06
0
雪    币: 182
活跃值: (55)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
__asm
        {
                mov eax, addr
                lea ebx, b
                mov edx, 6
l1:
                mov cl, byte ptr [ebx]
                mov byte ptr [eax], cl
                inc eax
                inc ebx
                dec edx
                test edx, edx
                jne l1
        }
注意保护寄存器。
2008-12-14 17:42
0
雪    币: 2522
活跃值: (667)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
用串操作:
mov esi,offset b
mov edi, addr
mov ecx,sizeof b
rep  movsb
这个是不是很简单!!!!!
2008-12-14 18:10
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
只怪当年没好好学。。。原来这就是串操作。。。。

当时以为没用

(不过当时感觉好像不是重点)

感谢几位的热心回复
2008-12-15 07:47
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
暗夜盗魔 兄,,你这样写的是伪代码,,,

具体怎么写。。还真不会写啊
2008-12-15 07:58
0
雪    币: 247
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
RtlMoveMemory(addr, b,  6);
2008-12-15 13:15
0
雪    币: 2522
活跃值: (667)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
9
那个不能用么??
我貌似写的不是伪代码,呵呵!!!
只是那个addr是汇编的关键字,当做变量可能会有问题!!
2008-12-15 17:17
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
mov esi,offset b

这句应该不能这样写吧。。。

(VC内联汇编!!)
2008-12-15 19:52
0
雪    币: 2522
活跃值: (667)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
11
下面是个例子,可以正常运行,楼主试试!!
#include "stdafx.h"
#include "windows.h"
#include "WinDef.h"
#include <iostream>
using   namespace   std;  
int _tmain(int argc, _TCHAR* argv[])
{   BYTE  yan[5];
    BYTE  b[]={0x31,0x32,0x33,0x34,0x00};
        _asm
        {
                lea esi,b
                lea edi,yan
                mov ecx,5
                rep movsb
        }
    cout << b<<endl;
        cout << yan<<endl;
        return 0;
}
2008-12-15 22:46
0
雪    币: 155
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
顶,学习了。。。。。。。。。。。。。。。。
2008-12-16 21:04
0
游客
登录 | 注册 方可回帖
返回
//