⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 addshellformfile.cpp

📁 可以使用硬件指纹作为密钥加密文件
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "MyClassFile.h"
#include "EncryptFormFile.h"
#include "DecryptFormFile.h"
#include "AboutFormFile.h"
#include "AddShellFormFile.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma link "DiskInfo"
#pragma link "Explform"
#pragma link "XPMenu"
#pragma resource "*.dfm"
TAddShellForm *AddShellForm;
TPascalFun *PascalFun; //引用Delphi函数的类
TMyClass *MyClass;  //作者自定义的类
//---------------------------------------------------------------------------
__fastcall TAddShellForm::TAddShellForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TAddShellForm::EncryptFileClick(TObject *Sender)
{
EncryptForm->Show();
this->Close();
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::OpenClick(TObject *Sender)
{
if(OpenDialog->Execute())
FileName->Text=OpenDialog->FileName;
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::OpenAboutClick(TObject *Sender)
{
AboutForm->Show();
this->Close();
}
//---------------------------------------------------------------------------

void __fastcall TAddShellForm::UseNormalEncryptClick(TObject *Sender)
{
InputPassword->Enabled=UseNormalEncrypt->Checked;
if(!InputPassword->Enabled)
{
Password->Text=""; Repeat->Text="";
}        
}
//---------------------------------------------------------------------------

void __fastcall TAddShellForm::UseLimitTimeClick(TObject *Sender)
{
InputTime->Enabled=UseLimitTime->Checked;
if(InputTime->Enabled)
{
  ST->Value=0;
  ET->Value=23;
}
if(!InputTime->Enabled)//24表示不使用“限时加密”
{
  ST->Value=24;
  ET->Value=24;
}        
}
//---------------------------------------------------------------------------


void __fastcall TAddShellForm::UseCDVOLClick(TObject *Sender)
{
if(UseCDVOL->Checked)
{
DiskInfo->Disk=MyClass->FindCD(AddShellForm->DiskInfo);
if(DiskInfo->DiskSize>1) //尝试检测光盘
ShowMessage("在解密文件前,请妥善保管这张光盘");
else{
    ShowMessage("请把光盘插进光驱里!");
    UseCDVOL->Checked=false;
}
}
}
//---------------------------------------------------------------------------

void __fastcall TAddShellForm::StartAddClick(TObject *Sender)
{
unsigned long BanMove,CDVOL;
 FILETIME *creation=new  FILETIME;
 FILETIME *lastwrite=new  FILETIME;
 HFILE hfile;
 hfile=_lopen(PascalFun->MypChar(OpenDialog->FileName),OF_READ);
 GetFileTime((HANDLE *)hfile,creation,NULL,lastwrite);
  _lclose(hfile);

if(OpenDialog->FileName.Length()<1)
{
   ShowMessage("请先查找欲加密的文件!");
   return;
}
if(Password->Text!=Repeat->Text)
 {
   ShowMessage("输入的密码与重复的密码不符!");
   return;
  }
if(ST->Value>ET->Value)
{
   ShowMessage("限制解密的时间不能从大到小!");
   return;
}
if(UseBanMove->Checked)
{
   BanMove=MyClass->GetBanMove(AddShellForm->DiskInfo,OpenDialog->FileName);
}
if(!UseBanMove->Checked)
  BanMove=19851120;
if(UseCDVOL->Checked)
{
  DiskInfo->Disk=MyClass->FindCD(AddShellForm->DiskInfo);
  CDVOL=abs(DiskInfo->SerialNumber+DiskInfo->DiskSize/1024);
}
if(!UseCDVOL->Checked)
  CDVOL=19860308;
MyClass->ShowMyMessage("EXE文件加口令","正在为 "+ExtractFileName(OpenDialog->FileName)+" 加口令......");
try{         //先压缩文件,再加密
MyClass->Compress(OpenDialog->FileName);
AnsiString CryptFile; //文件名为XXXXXXXXXXXXXXX.exe.gv.exe

CryptFile=MyClass->EncryptFile(OpenDialog->FileName,".gv",Password->Text,ST->Value,ET->Value,BanMove,CDVOL);
//将目标与源文件合并
PascalFun->CombineFile("DialogEXE","ExeFile",OpenDialog->FileName+".gv.exe",CryptFile);
Sleep(4000);//等待系统修改时间
//更改文件的时间属性
 hfile=_lopen(PascalFun->MypChar(OpenDialog->FileName+".gv.exe"),OF_WRITE);
 SetFileTime((HANDLE *)hfile,creation,NULL,lastwrite);
  _lclose(hfile);
}
catch ( ... )
   {
   MyClass->CloseMyMessage();
     ShowMessage("EXE文件加口令失败!");
     return;
   }
MyClass->CloseMyMessage();
ShowMessage("EXE文件加口令成功!\n请记住您使用的加密方式!");
TCloseAction *Action;
AddShellForm->FormClose(Sender,*Action);
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::DecryptFileClick(TObject *Sender)
{
DecryptForm->Show();
this->Close();
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::ShowHint(TObject * Sender)
{
  StatusBar->SimpleText=Application->Hint;
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::FormActivate(TObject *Sender)
{
Application->OnHint=ShowHint;
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::ViewHelpClick(TObject *Sender)
{
AnsiString Helpfile=ExtractFilePath(Application->ExeName)+"Help.CHM";//帮助文档的路径
ShellExecute(Handle,NULL,Helpfile.c_str(),NULL,NULL,SW_SHOWNORMAL);  //打开帮助文档
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::FormClose(TObject *Sender,
      TCloseAction &Action)
{
  //----------------清除上一次的操作
FileName->Text="";
if(UseNormalEncrypt->Checked)//被选中时
{   UseNormalEncrypt->Checked=false;
    UseNormalEncrypt->OnClick(Sender);
}
if(UseLimitTime->Checked)//被选中时
{   UseLimitTime->Checked=false;
    UseLimitTime->OnClick(Sender);
}
if(UseBanMove->Checked)//被选中时
 UseBanMove->Checked=false;
if(UseCDVOL->Checked)//被选中时
{   UseCDVOL->Checked=false;
    UseCDVOL->OnClick(Sender);}
    AboutForm->Show();
}
//---------------------------------------------------------------------------

void __fastcall TAddShellForm::SetupAllDeleteClick(TObject *Sender)
{
if(Application->MessageBoxA("<<灭文器 v1.00>>可以彻底地删除文件(即文件删除被恢复后也只是一堆乱码),更好地保证您文件的安全。\n是否想安装<<灭文器 v1.00>>到系统文件夹“发送到”?",Application->Title.c_str(),MB_YESNO)==IDYES)
{
PascalFun->LoadFromRes("AllDeleteEXE","ExeFile",PascalFun->GetSystemPath()+"\\灭文器 v1.00.exe");
ShowMessage("安装成功!您若想用<<灭文器 v1.00>>删除文件,就把选定的文件或文件夹发送到<<灭文器 v1.00>>。");
}
}
//---------------------------------------------------------------------------

void __fastcall TAddShellForm::ExitClick(TObject *Sender)
{
Application->Terminate();        
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -