
底层技术
文章平均质量分 94
代码之下,计算机到底在做什么?
_Nino
Master, teaching makes you.
展开
-
C++ 中异常机制的实现机制详解
0x1 C函数的调用和返回0x2 C++函数调用0x3 栈回退(stack unwind)0x4 异常捕获0x5 抛出异常0x6 总结0x1 C函数的调用和返回要理解 C++ 异常机制实现之前,首先要了解一个函数的调用和返回机制,这里面就要涉及到 ESP 和 EBP 寄存器。这两个寄存器是用来维护一个函数栈帧的关键寄存器,我们先看一下函数调用和返回的流程。下面是按函数调用约定 __stdcall 调用函数 test(int p1,int p2) 的汇编代码,假设执行函数前堆栈指针 ESP 为 NN.转载 2021-11-06 21:02:57 · 1434 阅读 · 1 评论 -
管理 Linux 系统中的带版本的共享库
前言之前自己在编译共享库的时候一直就把生成的共享库直接命名成 libxxx.so 的形式,最近遇到需要进行共享库版本管理的问题,发现之前对于 Linux 系统对共享库管理的方式已经不再够用了,所以接下来记录 Linux 系统中管理共享库的解决方法。0x1 约定俗称的命名方式在 Linux 上对共享库的命名采用 libxxx.so.a.b.c 的格式,其中 a 代表主版本号,b 代表次版本号,c 代表发布版本号,其中发布版本号一般是可选的。而因此动态库就有了三种名字:linker name:顾名思原创 2021-09-17 15:47:07 · 567 阅读 · 0 评论 -
Linux 共享库简介(怎样创建共享库)
前言0x1 什么是共享库0x2 共享库在文件系统中的位置0x3 使用 ldconfig 命令0x4 使用非标准库位置0x5 示例(如何创建一个共享库)前言一个库文件由多个不同的目标文件填充组成,众所周知,目标文件是由源代码经过编译得到的二进制中间文件,所以库文件中也是一系列已经编译好二进制代码,而它可能包含着在特定上下文中使用的一组函数。例如,当我们需要用到多线程中所提供的函数时, pthread 库就会被用到。宽泛地讲,一个库(或者说程序库)有两种类型:1、共享库2、静态库在这篇文章中.翻译 2021-09-15 17:15:13 · 4566 阅读 · 0 评论 -
编译过程发生了什么?
编译过程前言0x1 词法分析0x2 语法分析0x3 语义分析0x4 中间代码生成与优化0x5 目标代码生成0x6 总结前言 我们平时用C语言写的代码是一种语法层面接近人思维的代码,而计算机所执行的代码是机器层面的二进制代码,那么要想让我们编写的C语言代码在机器上运行起来,那这中间必然有一个转换过程,这个过程的最主要部分就是编译。我们在这篇文章中主要关注在编译过程中发生了什么(而不是怎么发生),通过Clang/L原创 2020-12-04 01:14:22 · 766 阅读 · 0 评论 -
编译链接简介
pwn核心基础知识二级目录三级目录二级目录三级目录原创 2020-12-05 14:46:19 · 329 阅读 · 0 评论