码迷,mamicode.com
首页 > 数据库 > 详细

学汇编的时候可以拿IDA之类的反汇编工具辅助学习,再用gdb或者IDA动态调试,跟踪每条指令的 执行结果。都不难

时间:2018-03-29 22:35:35      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:follow   jpg   target   反汇编   ofo   get   .com   height   gdb   

作者:潘安仁
链接:https://www.zhihu.com/question/40720890/answer/87926792
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

建议先去了解GCC的内联汇编的格式,我之前也没接触过GCC的内联汇编,都是看intel的汇编。临时找了一篇文章GCC内联汇编基础-zhuhefang2006-ChinaUnix博客,学习了一下。
根据文章里的例子:

技术分享图片书中第二行汇编可以翻译成intel的:
lea eax,[eax+2*eax]
也就是eax*3的意思,lea指令是一个取地址指令,具体可以去查手册,简单来说就是把右操作数的"["和"]"之间的值放到左操作数里,这里就是把eax+2*eax放到eax里。

 

而第六行汇编其实是取指针指向的值的意思,也就是intel汇编的:
mov eax,[edx+4*eax]
意思是取内存地址edx+4*eax里的值,放到eax里。至于这个值是什么,我们是不知道的,所以书里也只写了个M[……]。
如果把上条指令的mov变成lea:
lea eax,[edx+4*eax]
意思就是把edx+4*eax的值,放到eax里。

学汇编的时候可以拿IDA之类的反汇编工具辅助学习,再用gdb或者IDA动态调试,跟踪每条指令的 执行结果。都不难。

学汇编的时候可以拿IDA之类的反汇编工具辅助学习,再用gdb或者IDA动态调试,跟踪每条指令的 执行结果。都不难

标签:follow   jpg   target   反汇编   ofo   get   .com   height   gdb   

原文地址:https://www.cnblogs.com/findumars/p/8672478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!