zoukankan      html  css  js  c++  java
  • windows-System权限获取任意用户权限目录-举例GetTempPath

    一丶简介

    在System权限启动我们的程序之后.如果程序内部使用了GetTempPath()函数.或者使用了其它跟用户权限有关的函数.则获取的路径不是你想要的.
    比如 你在System权限下使用了GetTempPath() 那么获取的temp路径有可能就是 "C:WindowsTemp" 而我们想要获取的路径则是 "C:userxxxAppdatalocal emp"
    这里贴出代码. 原理就是 使用用户权限的Token 配合函数ExpandEnvironmentStringsForUserW 函数来获取.

    二丶代码

    #include <TlHelp32.h>
    #include <userenv.h>
    #pragma comment(lib, "Userenv.lib")
    
    BOOL ExpandSysEnvsByName(const WCHAR* envsName, std::wstring& envsPath)
    {
        HANDLE hToken = nullptr;
        HANDLE hProcessSnap = nullptr;
        PROCESSENTRY32 pe32 = { 0 };
        pe32.dwSize = sizeof(PROCESSENTRY32);
    
        hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        if (INVALID_HANDLE_VALUE == hProcessSnap)
            return FALSE;
        if (!Process32First(hProcessSnap, &pe32))
            return FALSE;
        do
        {
            if (_wcsicmp(pe32.szExeFile, L"explorer.exe") == 0)
            {
                HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pe32.th32ProcessID);
                if (NULL == hProcess)
                    return FALSE;
                if (!OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, &hToken))
                    return FALSE;
                CloseHandle(hProcessSnap);
                break;
            }
        } while (Process32Next(hProcessSnap, &pe32));
    
        WCHAR szEnvsPath[MAX_PATH] = { 0 };
        if (!ExpandEnvironmentStringsForUserW(hToken, envsName, szEnvsPath, MAX_PATH))
            return FALSE;
    
        envsPath = szEnvsPath;
        return TRUE;
    }
    int main()
    {
    
        wstring Ret;
        ExpandSysEnvsByName(TEXT("%Appdata%"), Ret);
    }
    

    上方代码以appdata举例 %%这种环境变量大家可以多搜一下. 这里不整理了.
    使用函数获取来的路径如下:
    Ret = "C:UsersibinaryAppDataRoaming""
    通过你自己的拼接路径就可以拼接处Temp路径了.
    也可以直接输入%temp%来获取.

    作者:IBinary


    坚持两字,简单,轻便,但是真正的执行起来确实需要很长很长时间.当你把坚持两字当做你要走的路,那么你总会成功. 想学习,有问题请加群.群号:725864912(收费)群名称: 逆向学习小分队 群里有大量学习资源. 以及定期直播答疑.有一个良好的学习氛围. 涉及到外挂反外挂病毒 司法取证加解密 驱动过保护 VT 等技术,期待你的进入。

    详情请点击链接查看置顶博客 https://www.cnblogs.com/iBinary/p/7572603.html
  • 相关阅读:
    从0开始学Swift笔记整理(二)
    从0开始学Swift笔记整理(一)
    JAVA反射机制
    Spring基础知识汇总
    关于类和对象的进一步讨论 C++
    C++ 共用体 枚举类型 所有
    自定义数据类型 C++ 结构体类型 共同体类型 枚举类型 类类型{}
    C++ 指针 引用 变量引用
    函数和指针 C++
    C++字符串与指针 所有的内容也就这么多了。
  • 原文地址:https://www.cnblogs.com/iBinary/p/14704376.html
Copyright © 2011-2022 走看看