فحص الـ الصور jpg قبل تشغيل البرنامج
#1
السلام عليكم ورحمة الله وبركاته
عندي صورة Jpg على الفورم
كيف يفحص البرنامج نفسه ولا يعمل اذا تم تعديل الصورة ؟
يعني لو فكر المستخدم تغيير الصورة ببرنامج ResHacker أو Resource Tuner
الرد
#2
وعليكم السلام ورحمة الله وبركاته
فحص حجم الصورة:
كود :
function ReadMWord(f: TFileStream): Word; type TMotorolaWord = record case Byte of 0: (Value: Word); 1: (Byte1, Byte2: Byte); end; var MW: TMotorolaWord; begin { It would probably be better to just read these two bytes in normally } { and then do a small ASM routine to swap them. But we aren't talking } { about reading entire files, so I doubt the performance gain would be } { worth the trouble. } f.read(MW.Byte2, SizeOf(Byte)); f.read(MW.Byte1, SizeOf(Byte)); Result := MW.Value; end; procedure GetJPGSize(const sFile: string; var wWidth, wHeight: Word); const ValidSig: array[0..1] of Byte = ($FF, $D8); Parameterless = [$01, $D0, $D1, $D2, $D3, $D4, $D5, $D6, $D7]; var Sig: array[0..1] of byte; f: TFileStream; x: integer; Seg: byte; Dummy: array[0..15] of byte; Len: word; ReadLen: LongInt; begin FillChar(Sig, SizeOf(Sig), #0); f := TFileStream.Create(sFile, fmOpenRead); try ReadLen := f.read(Sig[0], SizeOf(Sig)); for x := Low(Sig) to High(Sig) do if Sig[x] <> ValidSig[x] then ReadLen := 0; if ReadLen > 0 then begin ReadLen := f.read(Seg, 1); while (Seg = $FF) and (ReadLen > 0) do begin ReadLen := f.read(Seg, 1); if Seg <> $FF then begin if (Seg = $C0) or (Seg = $C1) then begin ReadLen := f.read(Dummy[0], 3); { don't need these bytes } wHeight := ReadMWord(f); wWidth := ReadMWord(f); end else begin if not (Seg in Parameterless) then begin Len := ReadMWord(f); f.Seek(Len - 2, 1); f.read(Seg, 1); end else Seg := $FF; { Fake it to keep looping. } end; end; end; end; finally f.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); var wWidth, wHeight: Word; begin if OpenPictureDialog1.Execute then GetJPGSize(OpenPictureDialog1.FileName, wWidth, wHeight); Caption := IntToStr(wWidth) + ' X ' + IntToStr(wHeight); end;
لاستخراج الصورة من الـ Resource راجع مواضيع المنتدى...

للتنبيه: هذا غير كاف لحماية مصادر التطبيق من العبث!

بالتوفيق.
الرد
#3
طيب هل لديك طريقة لحماية المصادر أخي ؟

الكود الظاهر يقرأ المقاس
و أنا أقصد الحجم بمعنى بالكيلو بايت .
الرد
#4
[COLOR="black"]
إقتباس :و أنا أقصد الحجم بمعنى بالكيلو بايت .
تقصد حجم الملف:
http://www.delphi4arab.net/forum/showpos...ostcount=2

إقتباس :طيب هل لديك طريقة لحماية المصادر أخي ؟
الأفضل فحص Hash (ابحث في المنتدى)، أو برامج حماية التطبيقات.[/COLOR]
الرد
#5
طيب كيف أستخدم الـ Hash

Md5 , CRC32 , وغيرها ؟
الرد
#6
السلام عليكم
مكتبات-خوارزميات التشفير والهاش
كيفية يتم حماية البرنامج بعد برمجته
بالتوفيق,,
I'M Fly Like A G6

الرد
#7
خويا tf6m بارك الله فيك
شكرا على التعاون Smile
الرد
#8
أشكركم
على التعاون ساعدتوني بصراحة
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم