请教一个DLL的问题(100分)

  • 主题发起人 主题发起人 mykonica
  • 开始时间 开始时间
M

mykonica

Unregistered / Unconfirmed
GUEST, unregistred user!
OD中的插件是DLL实现的。一般用法,如果DLL被加载,在调用FreeLibrary之前是无法删除DLL文件的。可是OD加载了插件后就可以删除DLL文件,而且插件照样可用。请问这是怎么实现的?
 
弱弱的问一句,OD是什么?[:D]
会不会是它弄个了副本后再加载
 
不会,我查了的
我在想它是不是把DLL加载到内存中去了?
我一般这样用DLL:
在程序初始化的时候LoadLibrary,保存得到的HINSTANCE,然后在程序退出的时候FreeLibrary。但是OD肯定不是这种做法。好像它LoadLibrary后“经过一番处理”就直接FreeLibrary了,所以这时可以删除DLL文件了。但是显然DLL还在内存中(或者在其它我不知道的地方)!照我那种用法,在FreeLibrary之前是不可能删除DLL文件的。现在我就是不知道它经过了什么样的处理。
ps:OD的全称是OllyDebug,是一款Ring3下的Exe调试软件
 
没用过,猜测是存在另外的地方了,可能都不是dll扩展名了。如果重启OD程序插件还能用,那肯定是存在磁盘上了。
 
重启OD后插件当然不能再用了。我只是说先运行OD(OD启动时即加载插件),然后删除硬盘上对应的插件DLL,这时OD的插件功能还在。如果关了OD再重启,因为刚才已经把插件DLL删了,所以它就没有办法加载插件了。
 
那应该是在内存吧
 
应该是动态加载,获取到想要的数据或资源后即刻就 FreeLibrary 了,然后就只管在内存中使用已获取的数据和资源,而不管dll的死活了。 没用过OllyDebug ,猜测而已, 楼主介绍一下这个东东的用处和长处嘛
 
想详细了解ollydbg的就应该到看雪学院深造深造~~~~~~~~~~~~~~~~(www.pediy.com),
 
OllyDg 是个强大的调试工具,我想这旨把DLL读入内存了吧。
 
既然已经FreeLibrary了,内存中还会存在DLL中的数据和资源吗?
另,把DLL加载到内存中和一般的用法,到底哪种更好呢?
 
唉,美国人一个花哨的烂系统,把中国许多所谓的程序都整晕了。
还是改用LINUX吧,或者自己写系统用吧。哈哈。
 
后退
顶部