subst模拟盘符

前言

以前也用过subst模拟盘符, 那时觉得用了就是调试目录统一些, 每个迁出工程的同事,都能统一开发目录, 不用再去改自己的开发目录设置.
今天想到,还有安全性问题啊. 因为编译出来的PE文件里面有开发目录的全路径,这属于信息泄漏.
写好设置开发目录模拟盘的脚本后,测试过了,即使是编译的是Debug版程序,PE中也没有原始开发目录的信息了, 只能看到基于虚拟盘的相对开发路径.
如果不隐藏开发目录,有些场景下后果还是很严重的.

用mklink组织工程文件目录

当工程目录要包含其他目录(其他分区上的目录或是在工程目录之外的目录时),拷贝过来不好。
可以用mklink将其他目录的连接放到本目录下。

C:\Users\me\Desktop>mklink /H /J 3rd D:\3rd\
为 3rd <<===>> D:\3rd\ 创建的联接

C:\Users\me\Desktop>dir
 驱动器 C 中的卷没有标签。
 卷的序列号是 780F-2AA4

 C:\Users\me\Desktop 的目录

2017/12/11  10:19    <DIR>          .
2017/12/11  10:19    <DIR>          ..
2017/12/11  10:19    <JUNCTION>     3rd [D:\3rd\]
2017/11/27  17:53               815 IDA Pro (32-bit).lnk
2017/11/27  17:53               827 IDA Pro (64-bit).lnk

设置开发目录为虚拟盘的脚本

echo off
rem @file 设置开发目录虚拟盘符.cmd

rem ------------------------------------------------------------
echo 卸载Y盘
rem ------------------------------------------------------------
subst Y: /D

rem ------------------------------------------------------------
echo 挂载Y盘 - 挂载调试目录(挂载当前目录下子目录的例子)
rem ------------------------------------------------------------
subst Y: %~dp0"doc\PEiD.0.95"

rem ------------------------------------------------------------
echo 卸载Z盘
rem ------------------------------------------------------------
subst Z: /D

rem %~dp0 是.cmd所在的当前目录, 将此.cmd放到开发目录顶级目录

rem ------------------------------------------------------------
echo 挂载Z盘 - 挂载开发目录
rem ------------------------------------------------------------
rem %~sdp0 是全路径的短名称, %~dp0是全路径的长名称
rem 测试过了, 挂载的目录后不能带\符号
rem e.g. OK    subst Z: c:\testDir
rem e.g. ERROR subst Z: c:\testDir\
rem so subst Z: %~sdp0 不会成功的, 因为 %~sdp0 全路径后面有\
subst Z: %~sdp0"ReKanalPlugin"

rem ------------------------------------------------------------
rem 执行过脚本后的效果
rem ------------------------------------------------------------
rem .\doc\PEiD.0.95\plugins为Y盘
rem .\ReKanalPlugin为Z盘
rem 开发前,只在绝对路径执行开发目录设置成虚拟盘的脚本.cmd
rem 开发时,直接点开Z盘,编译工程进行开发, 不打开绝对路径开发
rem 编译时, 宿主程序也写成相对于虚拟盘的路径, e.g. Y:\PEID_dump.exe
rem 编译时, 编译出的程序也写成相对于虚拟盘的路径, e.g. Y:\plugins\ReKanalPlugin.dll
rem 即使工程发布出去,别人也看不出我的开发目录的绝对路径
rem 经过测试,从编译后的PE文件也看不出开发目录的绝对路径
rem 在PE文件中能看到的开发目录的痕迹也只是虚拟盘的相对路径.

rem ------------------------------------------------------------
echo off
pause

<2016-1022>
整理了一个新的脚本, 可以将脚本放到开发根目录, 将开发根目录模拟成虚拟盘, 比原来方便一些.

echo off
rem @file 设置开发目录虚拟盘符.cmd

rem ------------------------------------------------------------
echo 卸载Z盘
rem ------------------------------------------------------------
subst Z: /D

rem %~dp0 是.cmd所在的当前目录, 将此.cmd放到开发目录顶级目录

rem ------------------------------------------------------------
echo 挂载Z盘 - 挂载开发目录
rem ------------------------------------------------------------
rem %~sdp0\..\"devDir" 可以避免写全路径,只写开发根目录就行.
subst Z: %~sdp0\..\"MyDevDir"

rem ------------------------------------------------------------
echo off
pause

<2017-06-19>
想起来,模拟工程为虚拟盘后,还要自动打开虚拟盘才方便:)

echo off
rem @file 设置开发目录虚拟盘符.cmd

rem ------------------------------------------------------------
echo 卸载Z盘
rem ------------------------------------------------------------
subst Z: /D

rem %~dp0 是.cmd所在的当前目录, 将此.cmd放到开发目录顶级目录

rem ------------------------------------------------------------
echo 挂载Z盘 - 挂载开发目录
rem ------------------------------------------------------------
rem %~sdp0\..\"devDir" 可以避免写全路径,只写开发根目录就行.
subst Z: %~sdp0\..\"MyProjectDir"

rem 打开虚拟出来的Z盘
start explorer.exe Z:\

rem ------------------------------------------------------------
echo off
pause
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值