
1. 什么是 export_symbol
export_symbol 是一种内核中的符号导出,它是指定一个函数、变量或者结构体在动态链接库(Dynamic-Link Libraries)中可以被使用,但在其他模块无法访问到。
2. export_symbol 的作用
export_symbol 的作用是在编写动态链接库时,可以灵活控制函数的使用范围,使其仅仅可在该动态链接库可以使用,为其他模块保护重要的内容以避免被破解。
3. export_symbol 必须锐写在so中
export_symbol代表着一个函数、变量或者结构体在动态链接库中可以被使用,这样其他模块就无法访问它了,因此,必须在so文件中精确声明export_symbol,以此表明其他的模块无法使用该函数。
(1)export_symbol
export_symbol,也就是导出符号,是指编译程序时,将指定格式的全局变量/函数/对象的符号名写入可执行文件夹中的一个特殊的块区中。用这些符号可以在其他程序中访问这些变量/函数/对象。export_symbol可以被视为将变量/函数/对象进行共享,以供其他程序使用。
export_symbol把符号导出出来,得到的信息将会被放到 elf 格式的可执行文件中,这样别的应用程序如果想使用则就可以使用了。通常在编译的时候将 -export_symbol指定的函数或变量等符号文件放到可执行文件中,当可执行文件被加载的时候,Export 部分内容就会被写到 nes namespace中,并以可导出的格式存在,这样其他 Dll 就可以找到它们。
典型的情况下,我们如果使用C/C++编程,可以定义全局变量、函数或类,就可以使用export_symbol,来把变量/函数/对象加载到exe文件中,做到全局变量/函数/对象的共享。
(2)import_symbol
import_symbol,也叫做导入符号,就是在一个EXE文件或dll文件中引用另一个dll文件中暴露出来的信息。使用该信息必须由import_symbol首先把信息载入当前的程序空间中。import_symbol也可以被视为访问共享变量/函数/对象的手段。
和 export_symbol相反,import_symbol是指在程序中使用/调用其他程序中的函数、变量或者类,在现在的操作系统中,程序与程序之前的跨越是通过 dll 实现的,这就涉及到动态链接了,而要实现动态链接,就必须使用import_symbol来实现。
典型的情况下,同样也是用C/C++编程,我们可以定义import_symbol来发出一个请求,申请从运行环境中加载其他应用程序(\"myapp.exe\")中export_symbol定义的变量/函数/对象,这样就可以较为容易的实现访问共享变量/函数/对象。
本文由作者笔名:电脑管家 于 2024-01-17 22:05:14发表在本站,原创文章,禁止转载,文章内容仅供娱乐参考,不能盲信。
本文链接: http://www.lovelp.cn/wen/1463.html