温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:05
对初学者来说呢,我们可能更习惯于说。这样的。代码为我们的用户入口,我们会认为程序是从这儿执行的。它实际上并不是。啊,现在的电池语啊,它的后台非常复杂。啊,它可能有自己的一些垃圾回收器啊,调度器啊等等一些东西,这些东西呢,需要在我们用户代码执行之前进行初始化。换句话说,你即便不用go,你哪怕用C语言去写一个程序,它的真正的程序入口的也不是你写的那行代码。它可以做一些简单的事儿,比如说处理命令行对吧,内行有些参数需要处理,所以我们需要呢,分析的时候,我们可能需要找到程序的真正的入口。只有找这个真正的入口,我们才知道啊,调度器对吧,垃圾回收器分配器是怎么初始化的。
01:03
因为这个初始化的过程中,我们很重要,我们得知道它初始化了以后,它会把程序空间布置成什么样子。对吧,它对哪些参数,比如说现成的数量,阿里回射器的一些处理机制做出限制,我们需要知道这些东西,所以我们需要找到程序真的入口。怎么着呢,我们就准备这样一个简单的空程序,对吧,什么都没有,然后呢,编译。我们得到了一个什么可执行文件?有这样的一个可视性文件。我们可以用简单的方式啊,去读取这个和平文件的头部信息,我们在这儿呢,能看到什么长期真正的入口?是这样一个地址。我们可以在把这个地址呢,用一些简单的方式来查找它的相关的信息。啊,我们可以看到啊,这是一个函数名字,但是问题比较麻烦的是,我们知道这样有函数名字叫符号名字,但是我们并不知道它是在哪个文件里面。
02:06
所以我们可以用一些其他的工具。来处理这件事儿。啊,这时候我们就可以看到呢,函数名字以及它处在哪个文件里面,这样我们就能找到这样的一个什么程序的真正的第一行代码是什么,我们会发觉的,它是用会编写的,这是一种方式,我们通过命令行的方式设,还有一种方式我们可以通过调试器来获得。我们可以先输出呢,这个特执行文件,这些相关信息我们在这儿同样能看到是吧,这样的一个。入口地址。然后呢,我们可以在这个入口地址呢断点。拉上站点的时候,其实我们就可以看到了什么。它的文件名。包括具体的行号,那么我们在执行的时候啊,我们可以查看到具体的源代码啊,它的我们会发觉呢。
03:02
这个程序执行的第一行代码是这样一个东西。然后沿着这个线索,我们就可以往下去找。也就是程序执行的第一行代码,实际是这一块,这这个东西才是我们真正要找的入口。当然了,你可能说还有一些简单的方法,同样也用调制器。我们直接用这样一个命令就可以找到真正的入口,不需要你们处理那么麻烦。我们去执行的时候呢,就可以看到什么相关这些东西,对找到程序真的入口,然后。去一步一步的分析,不管是用静态分析还是动态分销,才能去完成我们的工作,这一步呢其实很重要,需要我们对可执性文件呢有些基本的了解。或者说对会员指令有些简单的阅读能力,这是很重要的。
我来说两句