吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1652|回复: 0
收起左侧

[求助] Hook CreateFile 改写文件

[复制链接]
罗萨 发表于 2022-4-17 19:05
288吾爱币
本帖最后由 罗萨 于 2022-4-17 19:21 编辑

目标:通过对目标EXE注入dll,Hook CreateFile来将目标文件替换成我内存中一个解密后文件的句柄。
目前我使用了
CreateNamedPipe(mypath, PIPE_ACCESS_DUPLEX, 0, PIPE_UNLIMITED_INSTANCES, filesize, filesize, 0, 0);
后通过CreateFile Write写入文件到管道后。

[C++] 纯文本查看 复制代码
HANDLE CreateMemFileA( char* filebuff,DWORD sizeo)
{
    CString mypath ;
    DWORD filesize = sizeo;
    DWORD hWriteSize;
    _LARGE_INTEGER offst;
    offst.HighPart = 0;
    offst.LowPart = 0;
    mypath.Format ( _T("\\\\.\\Pipe\\Unde\\dat") );
    
    HANDLE pipehandle = CreateNamedPipe(mypath, PIPE_ACCESS_DUPLEX, 0, PIPE_UNLIMITED_INSTANCES, filesize, filesize, 0, 0);
    if (pipehandle == INVALID_HANDLE_VALUE)
    {       
        return 0;
    }
    HANDLE mfhandle = CreateFile(mypath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ| FILE_SHARE_WRITE,0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);
    if (mfhandle == INVALID_HANDLE_VALUE)
    {     
        CloseHandle(pipehandle);
        return 0;
    }
    else if (WriteFile(mfhandle, filebuff, filesize, &hWriteSize, 0) == FALSE)
    {
        CloseHandle(pipehandle);
        CloseHandle(mfhandle);
        return 0;
    }
    else if(SetFilePointerEx(mfhandle, offst, 0, FILE_BEGIN) == FALSE)
    {
        CloseHandle(pipehandle);
        CloseHandle(mfhandle);
        return 0;
    }
    

    CloseHandle(mfhandle);
    
    return pipehandle;
}

我将管道句柄返回给EXE发现并不能读取文件,有朋友说我需要使用
DuplicateHandle(GetCurrentProcess(), pipefile, (HANDLE)hProcess, &hTargetHandle, 0, TRUE, DUPLICATE_SAME_ACCESS)
来将句柄返回给exe,经测试DuplicateHandle并不能执行成功且Error代码为6(句柄无效)

请问是哪里的问题?或者通过别的方式实现我的目标,整个过程我不希望我解密后的文件出现在硬盘中
以上,感谢前辈们指教

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表