求一个简单的透明加密源代码?

附带使用说明,好用再加分。请发ygl365166495@126.com使用文件系统过滤驱动方面的知识。谢谢liwx988的代码,我认真的看了。能实现加密的功能。不过关键的... 附带使用说明,好用再加分。请发ygl365166495@126.com
使用文件系统过滤驱动方面的知识。
谢谢liwx988 的代码,我认真的看了。能实现加密的功能。不过关键的是透明。下面是有关透密加密的一点简介,欢迎有相关经验的继续参与。基于 Windows 底层的驱动级透明加解密技术。透明性,对文件加解密过程全是在操作系统后台完成,不需要对文件做任何额外操作,不改变操作文档的习惯。体验就如同它为透明的一样,用户不会受到任何影响,甚至感觉不到它的存在。对于受保护的文件,只有合法用户在被授权的终端上进行应用。合法用户可以以任何方式访问受保护文件时,信息内容在调入内存时才会被自动解密,不会在硬盘留下任何形式的明文临时文件。.............每个 irp 都是针对 DEVICE_OBJECT 发出的。只有针对由该驱动所生成的 DEVICE_OBJECT 的IRP, 才会发给该驱动来处理。具体的分发函数,决定于 DEVICE_OBJECT下的DriverObject 域。当一个应用程序打开文件并读写文件的时候,windows 系统将这些请求变成 irp 发送给文件系统驱动。文件系统过滤驱动将可以过滤这些 irp.这样,你就拥有了捕获和改变文件系统操作的能力。
展开
 我来答
匿名用户
2008-08-12
展开全部
事本没改过一个代码(但要把代码嵌入,所以变大了)

可以象普通记事本那样使用,但储存出来的文件会自动加密.

那么即使别人 copy 走了你的文件,也无法打开看到正确的内容.

如果配合机器码加密的话,那么就算别人把这个记事本Copy走了,也无法打开得到正确的内容.

该技术同样可以应用在任何软件比如 OFFICE 系列上.

这里下载测试的 Notepad.rar

核心代码如下,其中用到我写的 Hook 控件系列和加密方案:

unit MainProc;

interface

uses
Windows, Classes,
HookCoreUnit, EncrypFileUnit;

procedure Start;
procedure Stop;

implementation

const
ReadFileAddr = $1005244;
ReadFileAddrRts = ReadFileAddr + SizeOf(HookCodeEx);

WriteFileAddr = $1004C2A;
WriteFileAddrRts = WriteFileAddr + SizeOf(HookCodeEx);

var
ReadFileHooker, WriteFileHooker: THookerCoreEx;
MemList: TList;
EF: TEncryptFile;

function EncryptBuffer(hFile: THandle; const Buffer; nNumberOfBytesToWrite: DWORD;
var lpNumberOfBytesWritten: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;
var
Data: PChar;
tmp: string;
Size: DWORD;
begin
Data:= @Buffer;

//加密
tmp:= EF.EncryptBuffer(Data, nNumberOfBytesToWrite);
Size:= Length(tmp);

Result:= WriteFile(hFile, tmp[1], Size, lpNumberOfBytesWritten, lpOverlapped);
end;

function DecryptBuffer(hFileMappingObject: THandle; dwDesiredAccess: DWORD;
dwFileOffsetHigh, dwFileOffsetLow: DWORD; dwNumberOfBytesToMap: DWORD): Pointer; stdcall;
var
MemAddr: Pointer;
tmp: string;
Size: DWORD;
begin
Result:= MapViewOfFile(hFileMappingObject, dwDesiredAccess, dwFileOffsetHigh, dwFileOffsetLow, dwNumberOfBytesToMap);

//解密
tmp:= EF.DecryptBuffer(Result, dwNumberOfBytesToMap);
Size:= Length(tmp);

//如果解密有效
if Size <> 0 then
begin
//分配内存
MemAddr:= VirtualAlloc(nil, Size, MEM_COMMIT, PAGE_READWRITE);
CopyMemory(MemAddr, @tmp[1], Size);
Result:= MemAddr;

//加入内存表
MemList.Add(Result);
end; //解密不了按原内容打开
end;

procedure ProcessReadFile;
asm
//解密
call DecryptBuffer

//返回
push ReadFileAddrRts
end;

procedure ProcessWriteFile;
asm
//加密
call EncryptBuffer;

//返回
push WriteFileAddrRts
end;

//需要控件的请联系 kryso@21cn.com(msn), 非商用勿扰

procedure Start;
begin
{$I .\K_SDK\VM_Start.inc}
EF:= TEncryptFile.Create(nil);
EF.Enable_Encryption:= True;
EF.E_PGM:= True;
EF.FileHead:= 'NotepadEx';

MemList:= TList.Create;

ReadFileHooker:= THookerCoreEx.Create;
ReadFileHooker.HookType:= CHT_JMP;

ReadFileHooker.Instruction:= PHookCodeEx(ReadFileAddr);
ReadFileHooker.Event:= DWORD(@ProcessReadFile);

WriteFileHooker:= THookerCoreEx.Create;
WriteFileHooker.HookType:= CHT_JMP;

WriteFileHooker.Instruction:= PHookCodeEx(WriteFileAddr);
WriteFileHooker.Event:= DWORD(@ProcessWriteFile);

ReadFileHooker.Hook:= True;
WriteFileHooker.Hook:= True;
{$I .\K_SDK\VM_End.inc}
end;

procedure Stop;
var
i: Integer;
begin
{$I .\K_SDK\VM_Start.inc}
WriteFileHooker.Hook:= False;
ReadFileHooker.Hook:= False;

WriteFileHooker.Free;
ReadFileHooker.Free;

//释放内存
for i:= 0 to MemList.Count - 1 do
VirtualFree(MemList[i], 0, MEM_RELEASE);
MemList.Free;

EF.Free;
{$I .\K_SDK\VM_End.inc}
end;

end.

参考资料: http://www.ff18.com/blog/post/5.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
百度网友14b6cc6de
2008-08-20 · 超过24用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:0
展开全部
参考truecrypt源代码即可,地址:http://www.truecrypt.org/
新版本实现了操作系统加密,整个系统盘全部加密,启动时输入密码才能引导,很好很强大。开源的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liwx988
2008-08-14 · TA获得超过679个赞
知道答主
回答量:79
采纳率:0%
帮助的人:98.8万
展开全部
我发到你的邮箱里面去了!你确认查收一下。
就是用liwx988@163.com这个邮箱发给你的。
原理和基础都附在上面。
是很基础的加密,原理很简单,若想增强功能可以自己改进
希望对你有用,有用的话请将分数给我,谢谢

呵呵!那你不应该在C语言里提问哦!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式