汇编语言ShellCode的问题

movesp,ebp;pushebp;movebp,esp;把当前esp赋给ebpxoredi,edi;pushedi;压入0,esp-4,;作用是构造字符串的结尾\0字... mov esp,ebp ; push ebp ; mov ebp,esp ; 把当前esp赋给ebp xor edi,edi ; push edi ;压入0,esp-4,; 作用是构造字符串的结尾\0字符。 sub esp,08h ;加上上面,一共有12个字节,;用来放"command.com"。 mov byte ptr [ebp-0ch],63h ; c mov byte ptr [ebp-0bh],6fh ; o mov byte ptr [ebp-0ah],6dh ; m mov byte ptr [ebp-09h],6Dh ; m mov byte ptr [ebp-08h],61h ; a mov byte ptr [ebp-07h],6eh ; n mov byte ptr [ebp-06h],64h ; d mov byte ptr [ebp-05h],2Eh ; . mov byte ptr [ebp-04h],63h ; c mov byte ptr [ebp-03h],6fh ; o mov byte ptr [ebp-02h],6dh ; m一个一个生成串"command.com". lea eax,[ebp-0ch] ; push eax ; command.com串地址作为参数入栈 mov eax, 0x7801AFC3 ; call eax ; call System函数的地址 我想知道 这一段他到底是干什么额。 mov esp,ebp ; push ebp ; mov ebp,esp ; 把当前esp赋给ebp xor edi,edi ; 展开
 我来答
大侠楚留香0089
2015-04-14 · 超过69用户采纳过TA的回答
知道答主
回答量:201
采纳率:0%
帮助的人:138万
展开全部
able同学在研究shellcode吗? mov esp, ebp push ebp // mov ebp,esp ; 把当前esp赋给ebp <—— 多余代码 不过看起不太对 如果这些代码在函数开头的话,我觉得应该是 push ebp ; 保存旧的ebp(调用本函数的函数的栈基址) mov ebp, esp ; 划定本函数的栈基址,从ebp开始向前的一段空间 sub esp, 100 ; 类似的代码是为函数局部变量预留存储空间,然后以[ebp-xxx]的形式引用它们 之后那一大串mov byte ptr [ebp-xx], yy 就是修改这片内存的值为command.com这个字符串 然后lea eax,[ebp-0ch] ; 获取字符串首地址,后面的push和call就不用说了吧,函数调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
福州吧壹母U瑖
2015-04-15 · 超过52用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:119万
展开全部
保存当前堆栈指针 清空edi 保存以后,可以通过访问ebp+4+4n来访问压入堆栈的第n个参数 这样可以避免过程中因为储存ebx,ecx,edx等等造成的堆栈指针的修改
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式