能力值:
( LV2,RANK:10 )
2 楼
KeServiceDescriptorTable只是一个自定义的变量名吗? struct只是定义个结构类型,或者是一段内存区域的存储结构。据我观察,你所定义的KeServiceDescriptorTable变量是带有extern属性的外部变量,外部变量的实体应该实在其它dll或者exe中表述的,其中文件中也包含它的链接名,在编译之后的链接过程外部变量是通过链接名判断存在性的,你用的变量链接名不对,即会提示找不到的外部变量。你可以MSDN一下 PE结构和函数调用约定,其中也有链接过程中对函数或者变量名的链接名生成规则,虽然KeServiceDescriptorTable是个特殊的变量,并非普通的声明方法声明,但原理应该是类似的
能力值:
( LV2,RANK:10 )
3 楼
我也纠结这个问题 顶一下
能力值:
( LV2,RANK:10 )
4 楼
因为微软有个Symol 文件里是这样 命名的吧,如果命成其他名字,就认不出来了,不用太纠结这个了。
能力值:
( LV4,RANK:50 )
5 楼
你都写extern了 说明肯定外部定义了这个变量 你现在只是声明了它而已 如果你换了名字 就肯定找不到那个变量了
能力值:
( LV3,RANK:20 )
6 楼
原来如此.感谢解惑.
能力值:
( LV2,RANK:10 )
7 楼
是symbol文件 符号的那个单词 不过你的说法是不对的 或者是因果关系反了 不是因为有symbol才要是这个名字 而是因为编写系统核心的时候程序员写的是那个名字 symbol中最后才是那个名字
其实呢 为什么叫symbol文件 具体我没研究过 也或许和pe的导出函数和到处函数有关? 但应该不是 因为在编译时 不仅仅是导入函数和到处函数 都是会有链接名生成的 因为到一个个的cpp编译成成obj之后 各个obj在通过链接生成 可执行文件Portable Executive 大概是这样的吧 也就是pe文件(对于计算机一般exe,dll或lib 对于单片机或者嵌入式系统 可能四hex、 bin等等 其实不过都是汇编语言对应的机器码而已 ) 在链接的过程中 外部函数的调用 是通过链接名来识别的 C语言的函数链接名好像是函数名前面加_? 总之是不包含函数的参数信息的,也就是不包含函数参数的个数和大小,因为链接名不包含函数参数的信息,那么不同的参数的同名函数函数的链接名是一样的 无法区分, 而对于链接的过程需要对参数压栈,比如要知道参数个数,也因为这个原因导致C语言不支持函数重载。
symbol文件对于经常开发程序的程序员应该并不陌生,因为symbol文件就是程序的调试信息文件,里面包含了,exe文件和源代码之间的关系,有了这个文件才能进行源代码级别的断点调试,symbol文件一般是在IDE生成程序时自动生成的,只是很多软件发布时不会发布这个罢了, 难道要方面你们调试破解么?呵呵
能力值:
( LV3,RANK:20 )
8 楼
32bit ssdt这方面资料很多可以去搜索一下,64bit的较少。