楼主: 银砾石
收起左侧

[原创工具] 文件一致性验证工具(10.6修复下以前的错误)

  [复制链接]
银砾石
 楼主| 发表于 2010-10-3 17:17:53 | 显示全部楼层
本帖最后由 银砾石 于 2010.10.3 17:19 编辑

http://bbs.kafan.cn/forum.php?mo ... DYwOTcyNDh8MjcxNzI5

console,fs.dll应用程序,包含源程序,里面有导出函数说明等


#define maxsize 255
#define commaxsize 4096
#define larmaxsize 65535
#define FS_NotExists 0x01
#define FS_NotDir 0x02
#define FS_Empty 0x03
#define FS_NotReady 0x04
#define FS_NotReg 0x05
#define FS_NotSupported 0x06
#define FS_DataChanged 0x07  
#define FileSystem_FAT16 0x01
#define FileSystem_FAT32 0x02
#define FileSystem_NTFS 0x03
#define FileSystem_EXFAT 0x04
#define FileSystem_REG 0x1001
#define FileSystem_PARTITION 0x2001
#define REG_KEY 101
class FS_TIME{
public:
WORD year;
BYTE month;
BYTE day;
BYTE zero;
BYTE hour;
BYTE minute;
BYTE second;
};
typedef class  FAT {
public:
WORD ErrorCode;
WORD fs;
WORD fstype;
BYTE filetype;
WCHAR shortname[13];
WCHAR longname[maxsize];
        LARGE_INTEGER filesize;
LARGE_INTEGER base;
LARGE_INTEGER r_base;
DWORD offset;
DWORD clust;
FS_TIME ctime;
FS_TIME mtime;
FAT * head;
FAT * next;
FAT * pre;
}FS_FAT,*pFS_FAT;
typedef class NTFS {
public:
WORD ErrorCode; //错误信息
WORD fs; //FS标记
WORD fstype;
BYTE filetype;//文件类型--目录、文件
WCHAR shortname[13];//短文件名
WCHAR longname[maxsize];
// BYTE padding1;
    LARGE_INTEGER filesize;//文件大小
DWORD mftnum;//MFT记录号
// BYTE padding2;
FILETIME ctime;//创建日期
FILETIME mtime;//修改日期
FILETIME mfttime;//MFT修改日期
NTFS * head;
NTFS * next;
NTFS * pre;
BYTE hardlinkname[commaxsize];  
BYTE symboliclinkname[commaxsize];
BYTE streamname[commaxsize];
}FS_NTFS,*pFS_NTFS;
typedef class REG{
public:
WORD ErrorCode;
WORD fs;
WORD fstype;
WORD regtype;
DWORD base;
    DWORD r_base;
WCHAR name[maxsize];
BYTE data[larmaxsize];
DWORD datalen;
FILETIME mtime;
REG * head;
REG * next;
REG * pre;
}FS_REG,*pFS_REG;
class Partition
{
public:
WORD ErrorCode;
WORD fs;
WORD fstype; //节点类型,期待值FileSystem_PARTITION
LARGE_INTEGER StartPos; //分区开始位置
LARGE_INTEGER Size; //分区大小
BYTE Active; //是否活动分区
BYTE Flag; //分区类型,参考MBR定义
Partition * head;//第一分区
Partition * next;//下一分区
Partition *pre;//上一分区
};
typedef BYTE * (* FSREAD)(LARGE_INTEGER base,DWORD size) ;
typedef bool (* FSWRITE)(LARGE_INTEGER base,DWORD size,BYTE * mem) ;
typedef USHORT (* FSCLEAR)(LARGE_INTEGER total,LARGE_INTEGER current,LARGE_INTEGER left) ;
typedef bool ( * FS_PRE_READ)(FSREAD FSIO_READ);
typedef bool ( * FS_PRE_WRITE)(FSWRITE FSIO_WRITE);
typedef void *  (* FS_ENUMFILE)(const wchar_t * path,void * node) ;
typedef int (* FS_COPYFILE)(const wchar_t * path,const wchar_t * Stream);
typedef BYTE * (* FS_PRE_REG)(const wchar_t * path,const wchar_t * Stream);
typedef bool (* FS_REGFIRE)(const wchar_t * regcode);
typedef void * (* FS_ENUMREG)(const wchar_t * RegPath,BYTE * key,void * node);
typedef int (* FS_REL_REG)(BYTE * key);
typedef int (* FS_DELETEFILE)(const wchar_t * path,const wchar_t * Stream,BYTE Mode);
typedef int (* FS_GETERROR)();
typedef Partition * (* FS_ENUMPARTITION)(Partition * node);
typedef bool (* FS_DELETENODE)(void * node);//删除链表
typedef int (*FS_DELETEREG)(const wchar_t * RegPath,const wchar_t *  DeleteReg,const wchar_t *  FilePath,BYTE * key);//删除注册表
typedef int (* FS_RENAMEFILE)(const wchar_t *  path,const wchar_t *  NewName);//重命名文件
typedef USHORT (*FS_CLEAR)(FSCLEAR FSIO_CLEAR);//清除剩余空间函数

评分

参与人数 1人气 +1 收起 理由
wo1234 + 1 感谢解答: )

查看全部评分

dl123100
发表于 2010-10-3 17:20:46 | 显示全部楼层
支持下 貌似没删除IDA打开fs.dll后的临时文件
liulangzhecgr
发表于 2010-10-3 20:43:12 | 显示全部楼层
本帖最后由 liulangzhecgr 于 2010.10.3 20:47 编辑

回复 1楼 银砾石  的帖子

应该有个提示才对啊?!让我等了好几分钟。。。无奈!打开任务管理器。。。





dl123100
发表于 2010-10-3 21:02:43 | 显示全部楼层
试了下 不支持子目录
byxxdrls
头像被屏蔽
发表于 2010-10-3 21:15:18 | 显示全部楼层
好东西,早就想到需要这东西对付TDSS了。
银砾石
 楼主| 发表于 2010-10-3 21:26:42 | 显示全部楼层
回复 23楼 liulangzhecgr  的帖子
死机应该没有,system32有几千个文件,时间确实很久,如果有下一版,我会加入提示功能。
感谢测试。

   
byxxdrls
头像被屏蔽
发表于 2010-10-3 21:50:20 | 显示全部楼层
最好能选择不同类型的文件来校验
liulangzhecgr
发表于 2010-10-3 21:51:53 | 显示全部楼层
回复 26楼 银砾石  的帖子

总于等到结果!好慢啊。。。



能否加个单文件的检测吗?!
银砾石
 楼主| 发表于 2010-10-3 22:03:34 | 显示全部楼层
本帖最后由 银砾石 于 2010.10.3 22:08 编辑

回复 28楼 liulangzhecgr  的帖子
输入框内选单个文件或者直接将单个文件拖入程序界面或选中下面的选择文件框

以前也有这个功能,但居然没加输出,也就是说,验证后没输出验证结果。

子目录支持的话,那选择根文件夹岂不是要比较整个磁盘的文件。。。

xueqi
发表于 2010-10-3 22:09:17 | 显示全部楼层
不知道有什么用??本人小白
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-12-26 08:30 , Processed in 0.098530 second(s), 16 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

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