الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

برنامج لتفريغ الملفات قبل الحذف لتفادي الاسترجاع

بدأه العيافـي في 3 أغسطس 2010 · 29 رد · 2,012 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#26

الأسمبلى شكله مقروء إلى حد كبير....

هأعتبر نفسي جربته :D ...

#27

طيب انظر هذه الدالة :

ULONGLONG *GetFileClusters(
	PCHAR lpFileName,
	ULONG ClusterSize,
	ULONG *ClCount,
	ULONG *FileSize
)
{
	HANDLE  hFile;
	ULONG   OutSize;
	ULONG   Bytes, Cls, CnCount, r;
	ULONGLONG *Clusters = NULL;
	BOOLEAN Result = FALSE;
	LARGE_INTEGER PrevVCN, Lcn;
	STARTING_VCN_INPUT_BUFFER  InBuf;
	PRETRIEVAL_POINTERS_BUFFER OutBuf;

	hFile = CreateFile(lpFileName, FILE_READ_ATTRIBUTES,
               		FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
               		NULL, OPEN_EXISTING, 0, 0);

	if (hFile != INVALID_HANDLE_VALUE)
	{
    	*FileSize = GetFileSize(hFile, NULL);

    	OutSize = sizeof(RETRIEVAL_POINTERS_BUFFER) + (*FileSize / ClusterSize) * sizeof(OutBuf->Extents);

    	OutBuf = (PRETRIEVAL_POINTERS_BUFFER)malloc(OutSize);

    	InBuf.StartingVcn.QuadPart = 0;

    	if (DeviceIoControl(hFile, FSCTL_GET_RETRIEVAL_POINTERS, &InBuf,
                        	sizeof(InBuf), OutBuf, OutSize, &Bytes, NULL))
    	{
        	*ClCount = (*FileSize + ClusterSize - 1) / ClusterSize;

        	Clusters = (PULONGLONG)malloc(*ClCount * sizeof(ULONGLONG));

        	PrevVCN = OutBuf->StartingVcn;

        	for (r = 0, Cls = 0; r < OutBuf->ExtentCount; r++)
        	{
            	Lcn = OutBuf->Extents[r].Lcn;

            	for (CnCount = (ULONG)(OutBuf->Extents[r].NextVcn.QuadPart - PrevVCN.QuadPart);
                    	CnCount; CnCount--, Cls++, Lcn.QuadPart++) Clusters[Cls] = Lcn.QuadPart;

            	PrevVCN = OutBuf->Extents[r].NextVcn;
        	}
    	}

    	free(OutBuf);

    	CloseHandle(hFile);
	}
	return Clusters;
}

ترجع مصفوفة من الـVCN تمثل الـClusters التي يشغلها Stream خاص بملف .

مأخوذة من كود لـms-rem .

تم تعديل هذه المشاركة بواسطة GamingMasteR في 21 أغسطس 2010 في 20:47 — السبب: لا اعرف لماذا عدد المسافات في الكود يتم تغي&#

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#28

سؤال:

هل يتوجب اذا معرفة الSectors التي تم تخزين الملف عليها ثم تغيير قيمها كلها ؟؟

و هل يمكن ذلك من خلال الجافا ؟

شكرا

#29

أي نعم .

لا أعرف شئ عن الجافا tongue.gif

هذه طريقة ... وهناك طرق اخرى .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#30
اقتباس
و هل يمكن ذلك من خلال الجافا ؟

نعم من خلال JNI :P

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…