首页
社区
课程
招聘
[旧帖] [求助]一个很简单的汇编问题 0.00雪花
发表于: 2007-7-31 15:51 4222

[旧帖] [求助]一个很简单的汇编问题 0.00雪花

2007-7-31 15:51
4222
在汇编里面经常看到

mov dword ptr [i],0
rep stos dword ptr [edi]

那个 dword ptr 是什么意思啊?

我知道这问题很基本,可是我就是不懂

请大虾们指教

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
2
rep stos dword ptr [edi]
就是把eax的值 写入到以[edi]开头的地址中,每次写入一个双字,循环ecx次
dword ptr [edi] 就是定义[edi]开始的内存变量为dword属性
byte ptr [edi]就是定义[edi]开始的内存变量为byte属性
word ptr ................
mov dword ptr [i],0,就是把[i]地址开始的第一个双字变成0
mov byte ptr [i],0 就是把[i]地址开始的第一个字节变成0
2007-7-31 21:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=bithaha;340048]
mov dword ptr [i],0,就是把[i]地址开始的第一个双字变成0
[/QUOTE]

不好意思,如果翻成 C 语言的话,会是长怎样呢?
DWORD *i;
...
*i = 0;
类似这样吗?

感谢
2007-7-31 23:43
0
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
4
你可以自己找个简单的程序试试,三两行程序就能收获很多东西:
程序1:
定义了两个int :
int a=5,b=6;
反汇编会出现:
004010A8   mov         dword ptr [ebp-4],5
004010AF   mov         dword ptr [ebp-8],6
程序2:
这样定义一个指针
int *i;
*i=0
反汇编是这样的:
004010A8   mov         eax,dword ptr [ebp-4];先保存地址
004010AB   mov         dword ptr [eax],0;再给地址赋值,注意,这里会有错误,指针没有初始化,ebp-4中保存的数字不是一个真实的地址或者该地址不能访问,向一个无效的地址放东西,当然会出现错误.但是编译时是通过的.
程序3;
这样定义一个指针
int *i;
i=0;
反汇编是这样的:
004010A8   mov         dword ptr [ebp-4],0;指针不指向任何地方
注意第三个程序必须是i=0而不能i=5或者其它数字.
i=0是初始化指针为一个null指针,通过三个小程序也能看出指针保存的都是地址,而一般变量保存的数据.哈哈,这样学习比老师在课堂上讲好理解多了.
2007-8-1 02:06
0
游客
登录 | 注册 方可回帖
返回
//