delphi4arab منتديات دلفي للعرب

نسخة كاملة : برنامج يخفي المجلدات صعب الكسر
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
استخدمت هذا البرنامج لاخفاء مجلد به ملفات مهمة ونسيت كلمة السر التي وضعتها
وعندما حاولت ان اكتشف وجدت قفزات كثيرة وامور معقدة ربما تفيدكم في دراسته
اسم البرنامج
كود :
WinMend-Folder-Hidden
السلام عليكم
الرد ليس له صلة بالبرنامج .هي طريقة لاخفاء الملفات و المجلدات
وضعته فقط للاستفدة باقي الزملاء
الطريقة مشهورة لكن رأيت أن طرحها يمكن أن يستفيد منه شخص ما. الله أعلم
أنا شخصيا أقوم باخفاء الملفات والمجلدات بكود دوس
Attrib "Nom de Dossier" +a +r +s +h
و لاخفاء ملف معين
Attrib "Nom de Fichier.extention" +a +r +s +h
Attrib "Alko.rar" +a +r +s +h
و لاعادة أظهار المجلد أو الملف استبدال + بـ -
Attrib "Nom de Dossier" -a -r -s -h
استخدم النجمة لاخفاء كل الملفات داخل المجلد * أو *.*
انسخ الكود في ملف نصي بالنوت باد و احفظه باي اسم لكن الامتداد يكون bat
ثم ماعليك الا دوبل كليك على الملف و هو يقوم بالمهمة
و عليكم السلام و رحمة الله
للأسف آلية الحماية التي يستعملها البرنامج ضعيفة جدا و يمكن تخطيها بسهولة باستعمال WinRAR مثلا للحصول على الملفات المخفية و كلمة المرور التي يحفظها البرنامج كما هي بدون تشفير...

هذه محكاة عملية انشائه للمجلدات المحمية التي سوف تستقبل الملفات التي سوف يتم اخفائها.
PHP كود :
#include <windows.h>
#include <ntdll.h>

#ifdef _WIN64
char *captionMsg = "64-bit Application";
#else
char *captionMsg = "32-bit Application";
#endif

char *statusMsg = "FAILED!";

#define MAIN_FOLDER L"\\??\\C:\\Winmend~Folder~Hidden"

wchar_t *folders[] = {
 
   MAIN_FOLDER,
 
   MAIN_FOLDER L"\\..." ,
 
   MAIN_FOLDER L"\\...\\cn"
};

void Report(NTSTATUS NtStatus, char *msg, wchar_t *path) {
 
   char buffer[256] = {0};

 
   if (NtStatus == 0)
 
       statusMsg = "SUCCESS";

 
   sprintf(buffer,
 
           "Task:\t%s\nPath:\t%S\nStatus:\t0x%X (%s)",
 
           msg,
 
           path,
 
           NtStatus,
 
           statusMsg);

 
   if (NtStatus == 0)
 
       MessageBoxA(NULL,
 
                   buffer,
 
                   captionMsg,
 
                   MB_ICONINFORMATION);
 
   else
        MessageBoxA
(NULL,
 
                   buffer,
 
                   captionMsg,
 
                   MB_ICONERROR);
}

int main() {

 
   NTSTATUS NtStatus;
 
   HANDLE hTarget;
 
   UNICODE_STRING ObjectName;
 
   OBJECT_ATTRIBUTES ObjectAttributes;
 
   IO_STATUS_BLOCK IoStatusBlock;

 
   for (int x = 0; x < 3; x++) {
 
       RtlInitUnicodeString(&ObjectName, folders[x]);
 
       InitializeObjectAttributes(&ObjectAttributes,
 
                                  &ObjectName,
 
                                  OBJ_CASE_INSENSITIVE,
 
                                  NULL,
 
                                  NULL);

 
       NtStatus = NtCreateFile(&hTarget,
 
                               FILE_READ_DATA | FILE_WRITE_DATA,
 
                               &ObjectAttributes,
 
                               &IoStatusBlock,
 
                               NULL,
 
                               FILE_ATTRIBUTE_HIDDEN,
 
                               FILE_SHARE_READ | FILE_SHARE_WRITE,
 
                               FILE_CREATE,
 
                               FILE_DIRECTORY_FILE,
 
                               NULL,
 
                               0);

 
       Report(NtStatus, "Creating folder...", folders[x]);
 
       NtClose(hTarget);
 
   }

 
   for (int x = 2; x >= 0; x--) {
 
       RtlInitUnicodeString(&ObjectName, folders[x]);

 
       InitializeObjectAttributes(&ObjectAttributes,
 
                                  &ObjectName,
 
                                  OBJ_CASE_INSENSITIVE,
 
                                  NULL,
 
                                  NULL);

 
       NtStatus = NtDeleteFile(&ObjectAttributes);
 
       Report(NtStatus, "Deleting folder...", folders[x]);
 
   }

 
   return 0;
} 

المرفق يحتوي على الملفات المصدرية و التنفيذية للتجربة...
اضافة بسيطة للب العملية  بالباسكال:
PHP كود :
var
 
 ObjectAttributes: OBJECT_ATTRIBUTES;
 
 IoStatusBlock: IO_STATUS_BLOCK;
 
 hTarget: THandle;
 
 Status: NTSTATUS;
 
 FolderName: UNICODE_STRING; 
 
 
begin
RtlInitUnicodeString
(@FolderName, '\??\C:\Winmend~Folder~Hidden\...\cn');
InitializeObjectAttributes(@ObjectAttributes, @FolderName, OBJ_CASE_INSENSITIVE, 0, nil);

Status := NtCreateFile(@hTarget,
 
FILE_WRITE_DATA + SYNCHRONIZE,
 @
ObjectAttributes,
 @
IoStatusBlock,
 
nil,
 
FILE_ATTRIBUTE_HIDDEN,
 
FILE_SHARE_READ + FILE_SHARE_WRITE,
 
FILE_CREATE,
 
FILE_DIRECTORY_FILE,
 
nil,
 
0);

if 
Status = STATUS_SUCCESS then  
(* Display Message box *)

NtClose(hTarget);
end;