首页
论坛
专栏
课程

[原创]文件沙盘代码YasVps

2009-12-10 12:49 15857

[原创]文件沙盘代码YasVps

2009-12-10 12:49
15857
之前计划写的沙盘系统,刚写好文件部分,也不算太完善,碰巧有人问起,遂贴上代码大家看去,你可以在此基础上完善之。 代码没什么WS技术,但做文件沙盘还是有不少问题的,需要的朋友可以下, 贴上主要头文件。基本代码是围绕这个头文件展开的。
#include <ntddk.h>

#pragma once

//        ucReseaon :
//
// Basic
//
#define YASVPS_CREATE_FILE     0x00

#define YASVPS_MOVE_FILE       0x01
#define YASVPS_REPLACE_FILE    0x02
#define YASVPS_RENAME_FILE     0x03
#define YASVPS_WRITE_FILE      0x04

//
//Option
//
#define YASVPS_SETFILE_BASICINFO 0x05
#define YASVPS_SETFILE_ENDINFO   0x06
#define YASVPS_SETFILE_POSINFO   0x07
#define YASVPS_SETFILE_SECINFO   0x08

//
//删除以存在文件时追踪,
//对已存在文件的删除是不可恢复的,所以这个链表跟进程的生命周期一样,而且只能添加节点不能删除。
//
typedef struct __YASVPS_DELETETRACE
{
        ULONG uPid;
        CHAR lpszDelFilePath[YASVPS_MAX_PATH];
        struct __YASVPS_DELETETRACE* lpNext;
}YASVPS_DELETETRACE;

//
//创建新文件时追踪,添加节点前,先判断文件是否 “删除文件追踪” 存在,若存在,则删除对应节点
//删除文件时,需要查找这个表的信息,如果发现删除的是自己创建的文件,则允许删除。并删除相关跟踪节点
//同样的任何修改文件也需要先找这张表
//外界不应该操作在YASVPS中运行进程创建的文件。
//

/*
dir 规则:
如果在枚举目录文件时, “删除以存在文件” 中有文件在对应的目录中。
如果在YASVPS_CREATEFILETRACE 没有相应节点,则过滤掉删除的文件,不显示
否则显示之
*/

/*
覆盖文件:
覆盖新创建文件: 直接允许
覆盖已存在文件: 相当于 删除原来存在的文件,再创建一个新的文件。
*/

/*
移动已存在文件: eg: c:\123.exe --->> c:\windows\123.exe  --->> c:\123.exe
相当于删除文件再创建文件。
*/

//
//修改以存在文件时追踪。删除下面匹配的文件时,相应节点也要删除。
//

typedef struct __YASVPS_CREATETRACE
{

        //
        //任何修改文件也需要先找这张表,再根据 ucReseaon 做相应的操作
        //

        struct __YASVPS_CREATETRACE* lpNext;
       
        ULONG uPid; //进程PID
        HANDLE hFile;
        PFILE_OBJECT lpFileObj; //保留

        /*
        ucReseaon :
        #define YASVPS_CREATE_FILE     0x00
        #define YASVPS_MOVE_FILE       0x01
    #define YASVPS_REPLACE_FILE    0x02
    #define YASVPS_RENAME_FILE     0x03
    #define YASVPS_WRITE_FILE      0x04
        */

        UCHAR ucReseaon;
       
        /*
        ucReseaon = YASVPS_CREATE_FILE
        eg:    lpszCreatePath : C:\123.exe
        重定向 lpszTracePath : C:\YasVPS\C:\123.exe
        之后 修改名字为 hello.exe 则 lpszCreatePath : C:\hello.exe
        对YASVPS_CREATE_FILE 文件的操作,都直接PASS, 删除文件时,需要删除lpszLinkPath,
        并删除对应YASVPS_CREATETRACE节点

    “外界不应该操作在YASVPS中运行进程创建的文件!!!!!”
        */

        //
        //重命名/移动文件/覆盖文件/创建后后新的路径
        //
        CHAR lpszNewPath[YASVPS_MAX_PATH];
        //
        //指向的原始路径, 当该文件被写时,这个地方为TMP文件,写的文件不能超过10M(*)
        //
        CHAR lpszLinkPath[YASVPS_MAX_PATH];
                                           
        //
        //下面的暂时保留,不支持,主要是从效率和节省内存考虑
        //
        /*        FILE_BASIC_INFORMATION stFileBasicInfo;
        FILE_END_OF_FILE_INFORMATION szFileEndInfo;
        */
}YASVPS_CREATETRACE, *PYASVPS_CREATETRACE;

PYASVPS_CREATETRACE VpsAddCreateTraceNode( );
PYASVPS_CREATETRACE VpsIsFileRedirect( CHAR* lpszNewPath );
PYASVPS_CREATETRACE VpsIsFileRedirect_2(IN CHAR* lpszLinkPath );
PYASVPS_CREATETRACE __VpsGetRedirectInfo( CHAR* lpszDirPath , IN OUT CHAR* lpszFileName);

BOOLEAN  VpsExaPath(PSTR szFilePath,PSTR szFileName,PSTR szFileDir,PSTR szFileExtName);
BOOLEAN  VpsExaDirPath(PSTR szFilePath,PSTR szFileDir);



[公告]安全测试和项目外包请将项目需求发到看雪企服平台:https://qifu.kanxue.com

上传的附件:
最新回复 (17)
仙果 19 2009-12-10 13:07
2
0
谢谢共享。。。
tigerlhp 2009-12-10 13:38
3
0
   今天都疯了  全看到些头绪都没有的文章
唉,菜得太离谱了
lx6636 2009-12-10 14:14
4
0
能不能介绍下这东西干什么用的?
weolar 10 2009-12-10 14:21
5
0
嘿嘿~
superleft 2009-12-10 15:09
6
0
不错不错~
cvcvxk 10 2009-12-11 17:44
7
0
你这个不如SandBoxie~
xhackx 1 2009-12-12 10:26
8
0
老V介绍一下 sandboxie的实现原理吧 ?
xhackx 1 2009-12-12 10:33
9
0
老V介绍一下 sandboxie的实现原理吧 ?
jerrynpc 2009-12-12 10:37
10
0
V校有 SandBoxie 的源代码。。哈哈
guobing 2009-12-12 22:05
11
0
同感啊。
cvcvxk 10 2009-12-13 11:11
12
0
sandboxie下开个explorer,在windows文件夹下新增几个文件,然后刷新可以看见。
其他多数产品是看不到的,能访问但是列出不了(以前checkSandBox的方法就是先创建一个.EXE到Windows下,然后列出Windows下的EXE,发现没有,这个是sandbox.对于SandBoxie只能创建文件,然后打开文件,再查询文件全路径(ZwQueryObject大法))。
非虫 7 2009-12-13 11:15
13
0
只能说360应该还没有写出来... ...
Sysnap 14 2009-12-13 14:28
14
0
这个文件过滤沙盘。。。选择HOOK FSD DISPATCH。。处理上比较麻烦。。 重定位,也处理了显示问题。。。比如重命名是能即时显示的,建文件也可以。。但删除文件可能由于SHXXX得问题有不人性化,,大家可以处理也应该不难。。主要是SHELL进程注册了ShChangeNotify
  代码我觉得还是蛮容易理解,我都加了注释
lijingli 2009-12-14 12:56
15
0
sysnap大牛
总是放好东西
学习,争取追上大牛
雪妖 2010-9-9 14:50
16
0
mark一下
skyant 2011-3-17 16:14
17
0
关注一下 。。。。
creakerzgz 1 2011-3-18 12:42
18
0
关注一下。。。。mark
游客
登录 | 注册 方可回帖
返回