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内核原理与分析》第二周作业