首页
社区
课程
招聘
[注意]访问当前目录下的文件
发表于: 2010-3-30 15:32 3712

[注意]访问当前目录下的文件

2010-3-30 15:32
3712
刚刚得到邀请码,发文庆祝一下吧,看到本版是安全编程,就写了下面一个入门级的,水平有限,大家不要介意。

为方便阐述,先做前提假设:
有两个文件c:\load.exe,c:\1.dll,当load.exe运行起来后,需要加载1.dll
有些人喜欢直接写:LoadLibrary(1.dll)
但这样写会会有问题--如果当前路径不是C,就可能加载错误的dll或者提示寻址错误

于是,有人喜欢用SetCurrentDirectory(C:),然后在LoadLibrary(1.dll)
这样也不安全,如果在SetCurrentDirectory之后本线程中断,其他线程调度运行时,也调用了
SetCurrentDirectory,那么切换回本线程时依然会错。

安全的方法是:
GetModuleFileName获得load.exe全路径,即 c:\load.exe
PathRemoveFileSpec获得路径,即c:\
lstrcat追加1.dll,即c:\1.dll
LoadLibrary(...)

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不懂C语言
2010-3-30 15:40
0
雪    币: 636
活跃值: (174)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
3
lstrcat应追加\1.dll,不在根目录的话PathRemoveFileSpec会把\阉掉。其实该函数不如自己实现,带个shlwapi库,麻烦。
2010-3-30 15:56
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
拜保研帝。。。。。。。
其实无论什么时候都加\1.dll就是了,反正c:\\1.dll也是会加载成功的
2010-3-30 19:54
0
游客
登录 | 注册 方可回帖
返回
//