首页
社区
课程
招聘
[旧帖] [求助]问一个字符串传送指令的问题 0.00雪花
发表于: 2009-4-30 12:15 2953

[旧帖] [求助]问一个字符串传送指令的问题 0.00雪花

2009-4-30 12:15
2953
指令:
        std
        rep     movs dword ptr es:[edi], dword ptr ds:[esi]

寄存器数据:
ecx=00000003 (十进制 3.)
ds:[esi]=[0048C88A]=6E656461
es:[edi]=[00A8564D]=080048F6

为执行前内存数据:
0048C87A  FF FF 0E 00 00 00 69 20 61 6D 20 42 69 6E 20 4C  ...i am Bin L
0048C88A  61 64 65 6E 00 00 FF FF FF FF 12 00 00 00 69 20  aden.....i
0048C89A  61 6D 20 79 69 20 7A 68 69 20 6C 61 6F 20 68 75  am yi zhi lao hu

00A8562D  00 00 00 01 00 00 00 19 00 00 00 77 68 61 74 64  .........whatd
00A8563D  61 79 69 74 69 73 00 00 00 00 20 00 00 00 00 08  ayitis.... ....
00A8564D  F6 48 00 08 00 48 00 08 F6 48 00 08 F6 48 00 A8  鯤..H.鯤.鯤.

执行后
00A8562D  00 00 00 01 00 00 00 19 00 00 00 77 68 61 74 64  .........whatd
00A8563D  61 79 69 74 69 73 00 00 61 6D 20 42 69 6E 20 4C  ayitis..am Bin L
00A8564D  61 64 65 6E 00 48 00 08 F6 48 00 08 F6 48 00 A8  aden.H.鯤.鯤.

这个和我预想的不同 我想的是0048C88A开始的3个双字 复制到00A8564D开始的地址中还对 意思是说不管是源地址还是目标地址都是应该增加的 为什么向减少的地址中复制呢  现在是在反向复制 是不是std这个指令的原因呢?
这是 std的解释  例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.
看了下还是不清楚  请各位帮我解答下

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
STD-Set Direction Flag

Description
Sets the DF flag in the EFLAGS register.When the DF flag is set to 1,string operations
decrement the index registers(ESI and/or EDI).
This instruction's operation is the same in non-64-bit modes and 64-bit mode.

Operation
DF<-1;


就是它的原因,不知道够不够清楚。
2009-4-30 15:41
0
雪    币: 115
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
哦 这个就够清楚了 其实从结果我也猜到了 只是再确认一下 机器来不得半点虚假撒 呵呵
2009-4-30 18:37
0
游客
登录 | 注册 方可回帖
返回
//