汇编–一个rep stosd循环的简单理解

源代码:

汇编–一个rep stosd循环的简单理解_第1张图片

IDA汇编代码:

汇编–一个rep stosd循环的简单理解_第2张图片

rep stosd循环:
从lea edi , [EBP+arg_0] 开始,到rep stosd 结束。EDI中存入的是循环操作的起始地址,ECX存入的是循环次数,EAX是循环填入的值。这一段的操作就是从EBP+var_40处开始,循环十次,向下依次填入CCCCCCCC,写入的长度由EAX决定,32位。

OD动态调试:

初始状态:

汇编–一个rep stosd循环的简单理解_第3张图片

EDI赋值:

汇编–一个rep stosd循环的简单理解_第4张图片

ECX EAX 赋值:

汇编–一个rep stosd循环的简单理解_第5张图片

循环一次,ECX减一,将EDI地址处写入CCCCCCCC,EDI存入下一个地址

汇编–一个rep stosd循环的简单理解_第6张图片

循环第二次:

汇编–一个rep stosd循环的简单理解_第7张图片

.........

汇编–一个rep stosd循环的简单理解_第8张图片

 

JGE跳转
前≥后则跳转,注意可能直观上与源代码中有些不同,这里的跳转是跳过if语句,直接跳转到之后的语句。

文章同步到我的博客:http://www.zjzhhb.com/archives/571

禁止转载

你可能感兴趣的:(汇编与逆向,学习笔记)