从汇编到c 调用约定 堆栈原理

时间:2014-07-08 10:08:42
【文件属性】:

文件名称:从汇编到c 调用约定 堆栈原理

文件大小:203KB

文件格式:PDF

更新时间:2014-07-08 10:08:42

汇编 c 函数调用 反汇编 破解

学习汇编的一个重要的方法就是将汇编代码和c代码之间进行转换练习,这样的练习做的越多,对汇编就越熟悉,同时对c代码的理解也更加深刻。很多时候,拿到一个程序的反汇编代码,虽然可能每一行汇编代码都知道什么意思,但却发现对于整个程序干了什么却不知道,原因在于一个简单的程序,翻译成汇编的代码量相对于c程序而言多了好多,而且因为汇编代码和人的思维差别比较大,所以,对于整个逻辑的理解就很困难。然而如果经常做一些将汇编翻译成c代码的练习,那么你渐渐就会发现,汇编代码其实也很都有规律,看到这一段汇编代码,你就很自然的联想到它对应的c代码。 下面我们就开始做一下这样的练习,首先看一下下面的汇编代码: ##### 第一段第代码 00401020 push ebp ; 保存epb 00401021 mov ebp,esp ; 将ebp指向栈顶 00401023 sub esp,4Ch ;为局部变量分配空间,sub esp, xxx相当于多个push 00401026 push ebx ; 保存ebx 00401027 push esi ; 保存esi 00401028 push edi ; 保存edi, 上面3个寄存器在使用之前必须保存 00401029 lea edi,[ebp-4Ch] ; 将刚刚分配的局部空间的地址送到edi 0040102C mov ecx,13h ; ecx这里是循环次数=4ch/4h =13h 00401031 mov eax,0CCCCCCCCh ; 将4个int 3指令放入eax 00401036 rep stos dword ptr [edi] ; 将分配的局部变量空间都用int 3指令填充 .....


网友评论

  • 学习汇编了
  • 汇编与C语言之间的翻译
  • 将简单汇编翻译成C语言
  • 正确的标题应该是:一次将简单汇编翻译成C语言的实践。
  • 正在学习,可能是自己刚入门,觉得学起来有些吃力,但是感觉资料是很不错的,慢慢消化吧
  • 很难得的资料,主要是因为是作者自己的心得。8页pdf,没有目录,但讲解C语言和汇编的对应关系很到位,而且在关键的代码和内容有红色的注解,醒目且详实...建议C语言理解不透或者汇编学习不够扎实的人看....