当前位置: 代码迷 >> VC/MFC >> 有没有或者修改一个没源代码的程序,让他运行时加载指定DLL
  详细解决方案

有没有或者修改一个没源代码的程序,让他运行时加载指定DLL

热度:78   发布时间:2016-05-02 03:32:42.0
有没有可能修改一个没源代码的程序,让他运行时加载指定DLL
就是说程序A,没有源代码,该程序也没加壳。

然后自己写一个DLL组件B

需求就是让A运行时自动加载这个B,有没有可能呢?

需求比较特殊..对程序A一无所知的,也不知道他有没有外部接口之类的 谢谢大家
------解决思路----------------------
远程线程注入??
CreateRemoteThread
------解决思路----------------------
下载个LoadPE,修改A程序的导入表,把B DLL加入A程序的导入表
------解决思路----------------------
可以,HOOK API呗,detours就是干这个的
------解决思路----------------------
Win7中AppInit_DLLs的变化

软件和应用 

在Windows中提供了这样一个机制:在制定的注册表位置(HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows:AppInit_DLLs)指定一个virus.dll文件,然后启动桌面应用程序app.exe。如果这个exe使用到了user32.dll,那么app.exe的进程将加载先前指定的这个virus.dll(任何使用到user32.dll的程序都会加载这个dll)。具体见这篇KB
实际用户环境中的情况是,绝大多数使用了应用程序会使用user32.dll,而这个机制很容易被病毒利用,加载自己后进行“病毒行为”。犹如先前提到的自动运行机制,这些系统机制都为病毒传播带来了便利。
从Vista开始,windows对于这个键值的限制加强了。vista中默认禁用了AppInit_DLLs,方法是在相同的注册表位置增加了一个LoadAppInit_DLLs,值设置为0(1为启用)。
windows7沿用了这个机制,不仅如此,对于windows7和windows2008 R2,又新增了一个值:RequireSignedAppInit_DLLs 用于设置只允许加载有数字签名的dll。在win7中这个值默认没有启用,在windows2008 R2中这个值设置为1,强制进行数字签名检查增加安全性。

新一变化即在兼容性和安全性间找到了一个平衡,又将杜绝病毒利用这一机制危害系统。 
  相关解决方案