
汇编
badman250
专注分享IT知识技能
展开
-
1.DLL注入相关概念
DLL注入相关概念DLL注入与DLL劫持的比较: DLL劫持相当于一个定时的炸弹,只等待可执行文件双击运行,拔出导火线,而DLL注入,目标必须处于运行状态,而且DLL注入很容易被拦截。DLL注入需要一个跳板,也就是发射导弹的发射器,让其注入到目标进程,而DLL劫持不需要,只需要埋地雷一样,埋在目标文件目录下,可以埋一堆雷。伪造的DLL需要构造与真实DLL一样的导出函数表,注原创 2016-10-22 22:46:22 · 30346 阅读 · 0 评论 -
10.函数库-静态库和共享库
10.函数库-静态库和共享库函数库是指由若干目标文件按某种格式构成的集合,它分为两种类型:静态库和共享库。应用程序在链接静态库时是将所需的静态库函数嵌入至可执行文件中(并非全部静态库),而在链接共享库时它仅在可执行文件中保存加载目标对象所需的信息,真正调用时才将目标对象加载至内存。1. 静态库由ar工具创建和更新,库文件命名规则为libxxx.a,以lib开头,.a作为文件名原创 2016-10-22 23:05:13 · 31508 阅读 · 0 评论 -
9.链接阶段
9、链接阶段链接是将各种代码和数据部分收集起来并合并为一个单一文件的过程,该文件最后被加载到存储器中并运行。链接可以执行于编译时,由静态链接器完成;也可以执行于加载和运行时,由动态链接器完成。可以看出链接器在软件开发中扮演一个关键的角色,它使得分离编译成为可能。在我们开发一个大型程序的时候,通用的做法是将它分解为更小、更好管理的模块,独立地修改和编译这些模块,当改变其中的一个模块时只需原创 2016-10-22 23:01:21 · 32663 阅读 · 0 评论 -
8.内存管理的概述
8.内存管理的概述当程序被加载到内存的时候,它在内存中会大致被组织成三个部分:代码区,静态存储区和动态存储区。代码区存放的是将要执行的程序的机器语言表示,包括组成程序的各种用户自定义函数和系统调用函数。关于静态存储区和动态存储区:The word static refers to things thathappen at compile time and link time when th原创 2016-10-22 22:58:14 · 30975 阅读 · 0 评论 -
7.C语言调用帧结构
7.C语言调用帧结构IA32程序用程序栈来支持过程调用。它包括将数据(参数和返回值)和控制从代码的一部分传到另一部分,另外还包括进入时为过程的局部变量分配空间,并在退出时释放空间。一般地,机器只提供转移控制到过程和从过程中转移出控制的简单指令,数据传递、局部变量的分配和释放必然通过程序栈实现机器用栈来传递过程参数、存储返回信息、保存寄存器用于以后恢复和本地存储。我们称为单个过程分配的那原创 2016-10-22 22:55:08 · 31053 阅读 · 1 评论 -
6.C语言控制结构的汇编表示
6.C语言控制结构的汇编表示在C语言中有提供这样的结构:条件语句、循环语句和分支语句。那么在机器级指令中提供怎样的机制来实现C语言控制结构的行为。它的主要思路是借助条件码寄存器和跳转指令来实现有条件的行为。现代计算机中实现条件操作有两种方法:利用控制的条件转移和数据的条件转移。数据的条件转移更好地匹配了现代处理器的性能特性,但这里主要讲述控制的条件转移这种传统方法。条件码和跳转原创 2016-10-22 22:53:30 · 30640 阅读 · 0 评论 -
5.算术和逻辑操作
原创 2016-10-22 22:52:22 · 30498 阅读 · 0 评论 -
4.寻址模式与数据访问
4.寻址模式与数据访问IA32 CPU中央处理单元会提供一组8个存储32位的整数寄存器。名字以%e开头,一般来说前6个寄存器都可堪称通用寄存器,它的使用没有限制。 注意:· 这组IA32整数寄存器,有些可以存储C语言中的指针和整数数据,有些用来记录某些重要的程序状态,而有些用来保存临时数据如局部变量和函数的返回值· 所有的8个寄存器都可以作为一个原创 2016-10-22 22:51:09 · 30669 阅读 · 0 评论 -
3.C程序的机器级表示
3.C程序的机器级表示强行访问不同数据对象的字节:对于C语言来说,它支持整型数据、浮点数据等多种采取不同编码方式的数据类型。从机器角度看,他们又是一样的,均表示为一个连续的字节序列。根据机器的不同,数据使用的字节顺序也有所不同:l 小端法:最低有效字节存储在所用字节中的最低地址。随着地址的增大,它在存储器中按照最低字节到最高字节的顺序进行存储。绝大部分Intel兼容机都是采用小端原创 2016-10-22 22:47:53 · 30699 阅读 · 0 评论 -
2.GCC相关概念
1 GCC相关概念gcc编译器通常是由多达六七个稍小的程序所组成,这些程序是由一个叫编译器驱动程序来调用。从宏观角度讲编译器有以下几个可分离出来的单独程序,包括:预处理器(preprocessor)、编译器(compiler,又分为两个部分:前端,进行语法和语义解析,生成一抽象语法树;后端,进行代码生成和相关的代码优化)、汇编器(assembler)、链接器(linker)1.选项原创 2016-10-22 22:47:17 · 30504 阅读 · 0 评论 -
11.执行阶段
11.执行阶段: 运行时内存模型一个普通的C程序经过预处理器、编译器、汇编器和链接器后生成一个可执行的目标文件,它由最初的一段ASCII文本文件转化成为一个二进制文件,且这个二进制文件包含加载程序到内存并运行它所需的所有信息。 C运行时内存模型进程在运行时为C程序提供了一个通用的运行时存储器映像。 Linux将这个运行时存储器映像组织成若干段的集合,它主要有两部原创 2016-10-22 23:07:06 · 30496 阅读 · 0 评论