关于Linux和Unix动态链接库的安全 (关于linux说法错误的是)

教程大全 2025-07-19 04:36:31 浏览

实际上所有程序执行都依赖于库。在包括Linux的大多数现代类UNIX系统中,程序缺省使用动态连接库(DLL)进行编译。这样就可以更新某个库,所有使用该库的程序如果可能的话,都将使用新的(希望有所改进的)版本。

动态连接库通常被放在若干特殊目录下。通常这些目录包括/lib、/usr/lib、有关PAM模块的/lib/security、有关X-windows的/usr/X11R6/lib和/usr/local/lib。

对于库的命名和进行库的符号连接有些特殊约定,这样就可以更新库,同时继续支持需要使用不具有反向兼容的老版本库的程序。在执行特定程序时可以覆盖某个指定库,甚至只覆盖某个库里的指定函数。这是类Unix系统相对于类Windows系统的一个实际优点;我相信类Unix系统有一个更好的系统来处理库的更新,这也是Unix和Linux系统被认为比基于Windows的系统更稳定的原因。

在包括所有Linux系统的基于GNU glibc的系统中,程序启动时自动寻找的目录列表存储在文件/etc/ld.so.conf中。很多源于Red Hat的发行版一般在文件/etc/ld.so.conf中不包含/usr/local/lib。我认为这是个Bug,要在源于Red Hat的系统里运行很多程序都需要进行一个通用的“修复”,把/usr/local/lib加入/etc/ld.so.conf。

关于linux说法错误的是

如果只是想覆盖某个库里的若干函数,而想保留该库的其它部分,可以在/etc/ld.so.preload中输入要覆盖的库名(.o文件);这些“预载入”的库会优先于标准库使用。通常这种预载入文件是用于紧急补丁的;发行版在发行时一般不会包含这样的文件。

在程序启动时寻找所有这些目录太花时间,所以实际上使用了一个cache管理方法。程序ldconfig(8)缺省读入文件/etc/ld.so.conf,在动态连接目录里建立相应的符号连接(这样就遵循了标准约定),然后把cache写入/etc/ld.so.cache,这样就可以被其它程序使用了。所以一旦增加一个DLL,或删除一个DLL,或者DLL目录集发生改变,ldconfig就要运行一次;在安装库时,运行ldconfig通常是软件包管理程序需要执行的一个步骤。在启动时,程序使用动态加载程序来读入文件/etc/ld.so.cache,然后载入其所需的库。

各种环境变量可以控制这一过程,而且事实上也有允许覆盖此过程的环境变量(所以可以在某次特别的执行过程中临时替换某个不同的库)。在Linux下,环境变量LD_LIBRARY_PATH是一组用逗号隔开的目录,在查找标准目录集之前先查找这些库;这在调试新库或为特殊目的使用非标准库时很有用。变量LD_PRELOAD列出了覆盖标准集的函数所在的目标文件,就像/etc/ld.so.preload一样。

如果不采取特别的措施,允许用户控制动态连接库会对setuid/setgid程序造成灾难性的后果。因此在实现GNU glibc时,如果是setuid或setgid程序,将忽略这些变量(和其它类似的变量),或者严格限制这些变量所起的作用。GNU的glibc库通过检查程序的证明来确定其是否为setuid或setgid程序;如果uid和euid不同,或者gid和egid不同,则库就假设该程序为setuid/setgid程序(或者为其子程序),然后严格限制它控制连接的能力。如果载入GNU的glibc库,就可以看到这种情况;

请特别阅读一下文件elf/rtld.c和sysdeps/generic/dl-sysdep.c。这就意味着如果使uid和gid等于euid和egid,再调用程序,这些变量就具有完全的效力。其它类Unix系统处理这些情况有所不同,但原因相同:一个setuid/setgid程序不应受到环境变量集的过分影响。


无法定位程序输入点

朋友,这是你的电脑“丢失”或“误删”了“系统文件”,或“系统文件”被病 毒和“顽固”木马“破坏”,我给你8种方法:(答案原创,严禁盗用) 1.下载个:“360系统急救箱”!(安全模式下,联网使用,效果更好!) (1)先“查杀”病毒,再删除后,“立即重启”! (2)重启开机后,再点开“隔离|恢复”,点:“彻底删除”,病毒文件和“可 疑自启动项”! (3)再点开“修复”,“全选”,再“立即修复”文件! (4)再点开:“恢复丢失的dll文件”,扫描一下,如果没有就行了! 2。 用“360安全卫士”里“系统修复”,点击“使用360安全网址导航”,再 “全选”,“一键修复”,“返回”! 3。 用“360安全卫士”的“扫描插件”,然后再“清理插件”,把它删除! 4。 再用“360杀毒双引擎版”,勾选“自动处理扫描出的病毒威胁”,用“全盘 扫描”和“自定义扫描”,扫出病毒木马,再点删除! 重启电脑后,来到“隔离区”,点“彻底删除”! 5。 使用360安全卫士的“木马云查杀”,全盘扫描,完毕再“自定义扫描”! 扫出木马或恶意病毒程序,就点删除! 重启电脑后,来到“隔离区”,点“彻底删除”! 6。 如果还是不行,试试:“金山急救箱”的扩展扫描和“金山网盾”,一键修 复! 7。 再不行,重启电脑,开机后,按F8,回车,回车,进到“安全模式”里, “高级启动选项”里,“最后一次正确配置”,按下去试试,看看效果! 8。 实在不行,做“一键还原”系统!(方法:我的网络空间的博客里有)

电脑开机出现(加载出错)

开始菜单-运行-输入msconfig回车在里边的启动栏里把**前面的勾去掉就行了1、开始—运行—msconfig—启动—把加载项***的那个勾勾去掉。 重启电脑,通常到这就可以了,如果还弹出来再进行第二步2、开始——运行——regedit 在下面的位置删除相应键值:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run说明:以上问题大多是杀毒残留,就是杀毒后,病毒被删除,但启动项里相关加载设置还在,解决方法就是上述方法,如果找不到那个加载失败的启动项说明是做了伪装,具体他伪装到那个启动项不好说需要自己分析分析。 也有可能杀毒软件无法删除某个文件。 建议重新杀毒,找出无法删除文件(应该伪装在驱动里C:\WINDOWS\system32\drivers\ 此文件夹里的 加载时出错的 *** 文件!注意: 不是 加载时出错的*** 文件);再在安全模式下,用IceSword冰刃强制删除;重新启动两次。 【注意】如果启动项没有的话,请接着用下面软件解决的方法1、AutoRuns 8.73 汉化版 下载地址运行“”,点“全部”,然后按“Ctrl+F”(或点文件---查找)---输入加载时出错的“***”文件名,找到后右键点删除。 2、IceSword冰刃 1.22 中文版 下载地址打开,点左下角的“文件”,在目录+找到加载时出错的文件所在文件夹,加载时出错的文件上键点“强制删除”。 dll是何文件?DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。 Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。 DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。 它们向运行于Windows操作系统下的程序提供代码、数据或函数。 程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。 DLL是Dynamic Link Library的缩写,意为动态链接库。 在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL 文件,放置于系统中。 当我们执行某一个程序时,相应的DLL文件就会被调用。 一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的 DLL文件被称为共享DLL文件。 DLL文件一般被存放在C:\Windows\System目录下。 1、如何了解某应用程序使用哪些DLL文件右键单击该应用程序并选择快捷菜单中的“快速查看”命令,在随后出现的“快速查看”窗口的“引入表”一栏中你将看到其使用DLL文件的情况。 2、如何知道DLL文件被几个程序使用运行Regedit,进入HKEY_LOCAL_MACHINE\Software\Microsrft\Windows\Current-Version\SharedDlls子键查看,其右边窗口中就显示了所有DLL文件及其相关数据,其中数据右边小括号内的数字就说明了被几个程序使用,(2)表示被两个程序使用,(0)则表示无程序使用,可以将其删除。 3、如何解决DLL文件丢失的情况有时在卸载文件时会提醒你删除某个DLL文件可能会影响其他应用程序的运行。 所以当你卸载软件时,就有可能误删共享的DLL文件。 一旦出现了丢失DLL文件的情况,如果你能确定其名称,可以在Sysbckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。 如果这样不行,在电脑启动时又总是出现“**dll文件丢失…”的提示框,你可以在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,单击选择 “”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了。

缺少msvcr120 dll文件怎么办

电脑中毒的话,打开电源,按F8进入安全模式查杀木马病毒,比较有效,因为这种环境下很多你可以找另一台的电脑上去复制下这个缺失的文件,看看能否解决问题或者你可以尝试使用腾讯电脑管家来修复缺失DLL文件具体方法是,打开腾讯电脑管家--电脑诊所--软件问题--丢失 文件--一键修复--完成如果还是解决不了,去脚本之家下一个文件直接复制进去就能搞定了 如果找不到,还可以下载一个dx修复工具3.0增强版,去修复一下

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐