首页
社区
课程
招聘
[旧帖] [求助]关于一段字符串累加的代码,请大家帮忙!! 0.00雪花
发表于: 2009-6-1 09:59 1093

[旧帖] [求助]关于一段字符串累加的代码,请大家帮忙!! 0.00雪花

2009-6-1 09:59
1093
:004513D5 8B4DFC    mov ecx,  dword ptr [ebp-4]      ;将用户名保存到ECX中
:004513D8 0FB64C11FF    movzx ecx,  byte ptr [ecx+edx-01]   ;依次取用户名的一个字符的ASCII码的16进制到ECX中
:004513DD 03F1        add esi,   ecx             ;ESI初始值为0
:004513DF  42           inc edx                      ;edx作为4513D8代码取字符的一个参数
:004513E0  48           dec eax                     ;EAX为用户名的长度
:004513E1  75F2        jne 004513D5

这是一段对用户名各个字符依次做累加和的算法,我不明白的是
movzx ecx,  byte ptr [ecx+edx-01] 这一句是如何取到用户名的每个字符的
请大家帮帮忙,解答一下,谢谢啦~~

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
大家帮帮忙啊,movzx ecx,  byte ptr [ecx+edx-01] 这一句是如何取到用户名的每个字符的
想不明白!!
2009-6-1 11:35
0
雪    币: 102
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
MOVZX指令的含义如下:
MOVZX - Move with Zero Extend (386+)

Usage: MOVZX dest,src
Modifies flags: None

Copies the value of the source operand to the destination register
with the zeroes extended.

对于:
:004513D8 0FB64C11FF    movzx ecx,  byte ptr [ecx+edx-01]
应该是把ecx+edx-01地址的一个字节的内容放到ECX(CL)中,高位补0。

ECX是用户名存放内存的基地址,EDX是一个循环变量,表示已经处理的字符数。
2009-6-1 14:05
0
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哦~~,谢谢了啊,呵呵
2009-6-1 15:58
0
游客
登录 | 注册 方可回帖
返回
//