摘要:
不管什么是什么样的操作系统 什么样的计算机架构 进程使用的内存 都可以按功能 分成 4个 部分 代码区 .text 数据区 .data 堆区:进程可以在堆区动态地请求一定大小的内存,并在用完之后归还给堆区。 栈区:用于动态地存储函数之间的调用关系,以保证被调用函数在返回时恢复到母函数中继续执行 (具 阅读全文
摘要:
操作系统装载应用程序后,做完初始化工作后就转到程序的入口点执行 程序的默认入口由 连接程序 设置。 不同的连接器选择的入口函数也不尽相同。 在VC++下, 连接器对 控制台程序 设置的入口函数是 mainCRTStartup mainCRTStartup 再调用 main 函数 对图形用户界面程序设 阅读全文
摘要:
IDA 的任务是将选定的可执行文件加载到内存中 并对相关部分进行分析 随后, IDA 会建立一个数据库 其组件分别保存在4个文件中 在关闭当前项目时 这4个文件会被存档 你可以选择将它们压缩成一个 IDB 文件 通常人们引用 IDA 数据库时实际上 是引用 IDB文件 如果数据库正常关闭,绝不会在工 阅读全文
摘要:
加载选项: windows PE 加载器 和 MS-DOS EXE 加载器 PE文件格式 是 MS-DOS EXE文件格式的扩展形式 Binary File 是这个列表中的最后一个选项 它是用来加载无法识别的文件的默认选项 它提供了最低级的文件加载方法 如果 Binary file 是出现在 加载器 阅读全文
摘要:
连接器不会将所有函数紧挨着放在一块儿了,他们会在函数之间加上padding,这个时候函数要想添几句指令就有余地了。只要我们的改动不大,没有超过padding的范围连接器就不需要重新洗牌,这大大提高了链接的速度 假如我们的改动很大,以至于超过padding能够搞定的范围怎么办?如上图,我们还会在整个s 阅读全文