这种情况应该 hook 哪个 WINAPI??? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ixbozai
V2EX    程序员

这种情况应该 hook 哪个 WINAPI???

  •  
  •   ixbozai 2017-02-15 23:23:38 +08:00 3159 次点击
    这是一个创建于 3163 天前的主题,其中的信息可能已经有所发展或是发生改变。
    是这样的 一个程序 打开之后从 Windows “我的文档”文件夹里面读取配置,我要让它从我自定义的文件夹读取配置该怎么办?

    我的想法就是让程序认为我自定义的文件夹就是“我的文档”,有没有什么办法啊?我暂时想到的可能可以 hook 系统函数, 但是不知道具体是哪个函数
    10 条回复    2017-02-16 13:37:20 +08:00
    Kisesy
        1
    Kisesy  
       2017-02-15 23:30:34 +08:00   1
    SHGetFolderLocation
    SHGetSpecialFolderLocation
    SHGetKnownFolderPath
    SHGetSpecialFolderPath
    SHGetFolderPath

    这类 api 挺多的...这几个都行吧,我也忘了,慢慢测吧....
    ixbozai
        2
    ixbozai  
    OP
       2017-02-15 23:36:23 +08:00
    感谢啊 我查了一下程序 import 的 function ,应该用的是 SHGetFolderPath
    zk8802
        3
    zk8802  
       2017-02-16 03:20:49 +08:00 via iPhone
    一个或许更简单的方法,供楼主参考:在我的文档下面创建一个到自定义文件夹的符号链接。 Windows 上可以用 mklink 来创建。
    yangff
        4
    yangff  
       2017-02-16 05:25:38 +08:00 via Android
    也有可能是环境变量吧
    XiaoFaye
        5
    XiaoFaye  
       2017-02-16 05:54:54 +08:00
    “我的文档”文件夹的位置是可以更改的呀,这是最简单的方法, Hook 也可以,但是太麻烦了。
    crab
        6
    crab  
       2017-02-16 06:12:22 +08:00
    最简单的是把我的文档删除,把你自定义的文件夹通过 mklink /D "我的文档" "你文件夹“
    nifury
        7
    nifury  
       2017-02-16 07:43:37 +08:00
    hook CreateFile 不是更方便么,连文件名都能改了
    4ever911
        8
    4ever911  
       2017-02-16 10:51:32 +08:00
    一楼的回复不正确, 因为你在这些函数里面是不能知道判断是否是在加载你的文件。

    正确是 Hook CreateFile, 里面可以读取完整的文件路径,判断是否你要处理的文件,然后替换自己的文件。
    ixbozai
        9
    ixbozai  
    OP
       2017-02-16 13:30:00 +08:00
    @XiaoFaye @crab
    额 不仅仅是改变我的文档的问题 还涉及到程序多开 所以最好要可以每个进程都可以自己设置读取配置文件的位置
    ixbozai
        10
    ixbozai  
    OP
       2017-02-16 13:37:20 +08:00
    @nifury
    @4ever911
    我 hook 了 SHGetFolderPathW 发现程序也确实调用了这个函数……但是我 hook 之后对原来的函数没做更改 只是测试一下程序调用这个函数的参数和运行结果 结果返回文件路径都是乱码 用 SHGetFolderPath 就一切正常

    总之就是我 hook 了 SHGetFolderPathW 但是没做任何改变,结果程序在 hook 后在当前目录下建了个乱码文件夹存放配置。。。

    看来我还要再研究研究这个 Unicode 和 ASNI 编码有什么影响

    另外这个 createfile 程序也有调用 我还没来得及看它是干啥用的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3613 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 00:41 PVG 08:41 LAX 17:41 JFK 20:41
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86