从C语言到汇编,从汇编到C语言

社区服务
高级搜索
猴岛论坛电脑百科从C语言到汇编,从汇编到C语言
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
9个回复

从C语言到汇编,从汇编到C语言

楼层直达
﹏.夏天∞.

ZxID:10114357

等级: 元帅
&

举报 只看楼主 使用道具 楼主   发表于: 2010-07-07 0
要从事“逆向工程”工作,或对其感兴趣,请必然要接触到汇编语言。然而我们在对计算机语言的了解大都是从高级语言(如C、VB、Dephi)开始的。那当我们阅读由高级语言翻译成的机器语言时肯定会遇到很多障碍。下面是我在看了相关书籍后,做的一些笔记,希望有点参考价值!
  
  一、循环语句与发汇编后的机器语言
  1、for循环
  下面是一段C语言的代码,我们的目的是来看其反汇编的结果:
  int myfunction(int a,int b)
  {
  int c = a+b;
  int i;
  for(i=0;i<50;i++)
  {
  c = c+i;
  }
  return c;
  }
  前面的反汇编暂时不理它,这里从for的地方开始反汇编,结果如下:
  for(i=0;i<50;i++)
  00412BC7  mov        dword ptr ,0  // i=0; 给循环变量赋初值
  00412BCE  jmp        myfunction+39h (412BD9h)// 跳到第一炊喘环处
  >  00412BD0  mov        eax,dword ptr
  |  00412BD3  add        eax,1  // i++;修改循环变量
  |  00412BD6  mov        dword ptr ,eax
  |  00412BD9  cmp        dword ptr ,32h //  比较 i 与50的关系, 检查循环条件
  |  00412BDD  jge          myfunction+4Ah (412BEAh)  // 当 i>=50 [即 !(i<50) ] 时则跳出循环
  |  {
  |      c = c+i;
  |  00412BDF  mov        eax,dword ptr [c]  // 变量 c
  |  00412BE2  add        eax,dword ptr  // 变量 i
  |  00412BE5  mov        dword ptr [c],eax  // c=c+i;
  |  }
  <  00412BE8  jmp        myfunction+30h (412BD0h)  // 跳回去修改循环变量
  00412BEA  mov        eax,dword ptr [c]
  }
  可以看到for循环主要用这么几条指令来实现:mov进行初始化。jmp跳过循环变量改变代码。cmp实现条件判断,jge根据条件跳转。
  用jmp回到循环改变代码进行下一炊喘环。所以for结构有以下的显著特征:
  
  mov <循环变量>,<初始值>  ; 给循环变量赋初值
  jmp B      ;跳到第一炊喘环处
  A: (改动循环变量)      ;修改循环变量。
  …
  B: cmp <循环变量>,<限制变量>  ;检查循环条件
  jgp  跳出循环
  (循环体)
  …
  jmp A      ;跳回去修改循环变量
  
  2、do循环
  再看一下do循环,因为 do循环没有修改循环变量的部分,所以比for循环要简单一些。
  do
  {
  c = c+i;
  00411A55  mov        eax,dword ptr [c]
  00411A58  add        eax,dword ptr
  00411A5B  mov        dword ptr [c],eax
  } while(c< 100);
  00411A5E  cmp        dword ptr [c],64h
  00411A62  jl          myfunction+35h (411A55h)
  return c;/
本帖de评分: 1 条评分 DB +6
DB+6

我很赞同

゛蝣蕩啲龍っ

ZxID:7865773

等级: 元老
‘燕鸥’是种水鸟,听说,它们会从几千里外,飞回自己的家,而且,是‘情有独钟’,终身不换伴侣 ..

举报 只看该作者 沙发   发表于: 2010-07-07 0
谢谢分享、
yuaijiahui

ZxID:12581230

等级: 上士
举报 只看该作者 板凳   发表于: 2010-07-07 0
我哭了  好深奥啊  像是天书
悲伤丶已落幕

ZxID:12569558

等级: 大尉
问世间情为何物,情是怪物。
举报 只看该作者 地板   发表于: 2010-07-07 0
有人发过了。
残留的回忆丶

ZxID:10486868

等级: 中校
举报 只看该作者 4楼  发表于: 2010-07-07 0
什么乱七八糟的看不懂  
iphone丶≈

ZxID:11670762

等级: 禁止发言

举报 只看该作者 5楼  发表于: 2010-07-07 0
不懂-= -
wanmayizhui

ZxID:6274786

等级: 中士
举报 只看该作者 6楼  发表于: 2010-07-18 0
我是第1条  开始时一定要把我换掉啊
Masterchan

ZxID:11196595

等级: 元帅
配偶: 简、
今夕何夕,君已陌路

举报 只看该作者 7楼  发表于: 2010-07-20 0
谢谢支持
dingxiaowen123

ZxID:12718129

等级: 列兵
举报 只看该作者 8楼  发表于: 2010-07-20 0
不懂
◇祭奠◆

ZxID:11048175

等级: 大将
举报 只看该作者 9楼  发表于: 2010-07-20 0
看不懂~!~!
« 返回列表
发帖 回复