2017-2018-1 20179219《Linux内核原理与分析》第二周作业

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017-2018-1 20179219《Linux内核原理与分析》第二周作业相关的知识,希望对你有一定的参考价值。

一、学习笔记

EAX	累加器
EBX	基地址寄存器
ECX	计数寄存器
EDX	数据寄存器
EBP	堆栈基指针
ESI——
	变址寄存器
EDI——
ESP	堆栈顶指针
EIP	指令指针寄存器

CS	代码段寄存器
DS	数据段寄存器
ES	附加段寄存器
SS	堆栈段寄存器
FS	附加段寄存器
GS	附加段寄存器

b	8位
w	16位
l	32位
q	64位

movl %eax,%edx		edx=eax			       寄存器寻址
movl $0x123,%edx	edx=0x123	               立即寻址
movl 0x123,%edx		edx=*(int32_t*)0x123	    直接寻址
movl (%ebx),%edx	edx=*(int32_t*)ebx	       间接寻址
movl 4(%ebx),%edx	edx=*(int32_t*)(ebx+4)	       变址寻址


堆栈是向下增长的,一块堆栈,             |    	|	高地址
			             |    	|
			             |     	|
			             |  	|	低地址


		   subl $4,%eax
pushl %eax
		   movl %eax,(%esp)


		   movl(%esp),%eax
popl %eax
		   addl $4,%esp


		    pushl %eip		伪指令
call 0x12345	
		    pop $0x12345,%eip	伪指令

  

二、作业实验:

技术分享

 

 

 

 

技术分享

 

 

技术分享

 

实验代码如下:

  1 int g(int x)
  2 {
  3   return x + 3;
  4 }
  5 
  6 int f(int x)
  7 {
  8   return g(x);
  9 }
 10 
 11 int main(void)
 12 {
 13   return f(8) + 1;
 14 }

 

汇编程序如下

技术分享

 

上述汇编过程能够叙述下来。但有一个思考,linux下对.c程序进行预处理一直到上述的汇编操作,我想对于同样的程序,使用windows平台上使用VS2015编译后能否通过逆向的工具和方式重现如上述linux上的汇编代码,我使用同样的代码进行了尝试,但是不成功。

技术分享

 

 

以上是关于2017-2018-1 20179219《Linux内核原理与分析》第二周作业的主要内容,如果未能解决你的问题,请参考以下文章

2017-2018-1 20179219 《Linux内核原理与分析》第三周作业

2017-2018-1 20179219《Linux内核原理与分析》第五周作业

2017-2018-1 20179219《Linux内核原理与分析》第二周作业

20179219 《Linux内核原理与分析》第一周学习笔记

Linu计划书

linu运算