![]() |
|
Stolen bytes أقوى طريقة لحماية البرامج التجارية - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي الأخرى (https://delphi4arab.net/forum/forumdisplay.php?fid=4) +--- قسم : الامن و تحليل التطبيقات البرمجية (https://delphi4arab.net/forum/forumdisplay.php?fid=31) +--- الموضوع : Stolen bytes أقوى طريقة لحماية البرامج التجارية (/showthread.php?tid=2490) الصفحات:
1
2
|
Stolen bytes أقوى طريقة لحماية البرامج التجارية - kachwahed - 13-10-2010 [COLOR="black"]السلام عليكم ورحمة الله الطريقة ببساطة: - خذ أهم وظيفة من برنامجك وضعها في DLL منفصلة - خذ بعض الـ Bytes الثابتة من مكتبة DLL - اجعل برنامجك يقوم بـ Try "استخدام الوظيفة" و Except "يعرض رسالة النسخة التجريبية" - رقم التسجيل هو نفسه الـ Bytes المسروقة، طبعا مع بعض بهارات التشفير والتمويه... ![]() المثال المرفق يوضح ببساطة مبدأ الطريقة. طريقة البايتات المسروقة من أقوى طرق الحماية ولا يمكن القيام بشيء حيال ذلك لتبقى البرمجة وليسقط الكراكرز ...من سلبياتها أن رقم التسجيل يكون ثابت وعام مما يسهل قرصنة النسخة ويكفي نسخ مكتبة DLL المسجلة يمكن جعل رقم التسجيل متغير بإحدى الخدع وبالتالي الحصول على نتيجة أفضل ... لكن ما الذي يجعله يتغير؟ أيضا ينبغي استخدامها بحكمة فالحماية ليست في ذات الطريقة في النهاية قد يكون من الحكمة (أحيانا) أن تترك بعض الهفوات التي تمكن من قرصنة برنامجك فقد يوفر ذلك بعض عناء التسويق عليك، ويسـاعدك على قياس سمعة المشروع.[/COLOR] Stolen bytes أقوى طريقة لحماية البرامج التجارية - TF6M - 14-10-2010 "لتبقى البرمجة وليسقط الكراكرز :..." 1- هناك طريقة لإسترجاع الـ Stolen Byte (IdaFicator PlugIn)i 2- فقط كملاحظة , لو لم تعطي القيمة الإبتدائية للـ LibName ستعرض البرنامج كود : const
LibName = '';//RegistrationDLL.dllالمسارات المستغلة, كل ما هو مسجل في: كود : cmd > set > %path%Stolen bytes أقوى طريقة لحماية البرامج التجارية - محمد عبد العزيز - 14-10-2010 [COLOR="#0000ff"] إقتباس :...لا يمكن القيام بشيء حيال ذلكهناك مقولة اجنبية او مثل لااتذكره ما معناه: ما قام به انسان يمكن لانسان اخر القام به (او بعكسه) لكن ما الذي يجعله يتغير؟ استخدم Polymorphism تغير الكود (OpCode) بكود اخر مختلف ويؤدي نفس الغرض يمكنك مراجعة بعض المقالات والملفات المصدرية الخاصة بالفيروسات مثل الموجودة بموقع VX Heavens احسن من طريقة طريقة البايتات المسروقة طريقة الالة الافتراضية virtual machines [/COLOR] Stolen bytes أقوى طريقة لحماية البرامج التجارية - Ahmed18 - 14-10-2010 اخي كاش واحد اختلف معك في هذا الموضوع فطريقة ال Stolen bytes مستخدمة من قبل العديد من برامج الحماية من فترة طويلة مثل Themida و ASProtect وهي تعتبر اسهل مرحلة في عملية فك الضغط Unpacking
Stolen bytes أقوى طريقة لحماية البرامج التجارية - kachwahed - 14-10-2010 [COLOR="black"]شكرا لكم على المشاركة ![]() @TF6M @Ahmed18 كما وضح أخونا Zool@nder في الـ Plugin تلك البياتات المسروقة هي من OEP للبرنامج أي أنها هي نفسها الموجودة في التطبيقات المترمجة بنفس الـ Compiler هنا لا نتحدث عن سرقة بايتات بشكل آلي (كما يفعل ASProtect وغيره) بل البايتات تؤخذ من دوالك الخاصة الأكثر أهمية في برنامجك (الطباعة، الحذف، العمليات الحسابية...) سأرفق مثال للحماية بطريقة غير حكيمة... إقتباس :هناك مقولة اجنبية او مثل لااتذكره ما معناه: ما قام به انسان يمكن لانسان اخر القام به (او بعكسه)بالفعل، سمعتها من أحدهم يدافع عن أخطاء Micro$oft ![]() إقتباس :استخدم Polymorphismكنت أقصد ما يتغير في كل نسخة (اسم المستخدم وبعض البيانات...) لكن هذه تبدو شهية، سأبحث... إقتباس :طريقة الالة الافتراضية virtual machinesتبدو مكلفة (الجهد)، وأعتقد أنها تهاجم بـ Emulator! سأبحث...[/COLOR] Stolen bytes أقوى طريقة لحماية البرامج التجارية - kachwahed - 15-10-2010 مثال للحماية من حذف السجلات بسرقة 12 bytes المسؤولة عن ذلك تم استخدام هذه الطريقة في برنامج تجاري للمبيعات طبعا، بفرض أن قاعدة البيانات ليست BDE وأنك لا تملك صلاحية الحذف مباشرة التجاوز سهل جدا... الحل بعد أسبوع من اليوم. Stolen bytes أقوى طريقة لحماية البرامج التجارية - STRELiTZIA - 15-10-2010 و عليكم السلام و رحمة الله الكل يعلم من دون شك ان: - المنتجات DEMO يتم عدم وضع اصلا اوامر معينة مثل الطباعة و الحذف و التسجيل...الخ - المنتجات TRIAL محدودة المدة او مرات الاستعمال و عدم تفعيل خصائص معينة و لكن هذه الخضائص اوامرها موجودة في المنتج. الآن طريقة Stolen bytes: حسب ما فهمت من شرح كاش واحد، يتم برمجة التطبيق باضافة دوال الخضائص كاملة بشكل عادي، ثم يتم حذف بايتات معينة منها و نشرها كنسخ تجريبية محدودة الخضائص. اخ كاش واحد هل يمكن شرح آلية التحقق من حيث: هل خوارزمية التسجيل تحتوي على ثوابت Hard coded للبيتات المسروقة و في حالة نجاح عملية التسجيل يتم عمل Patch للتطبيق لاضافة الباتات الناقصة من هذه الثوابت ؟ او ان معلومات التسجيل بعد معالجتها تصبح نفسها البايتات المسروقة ؟ على طريقة تحديات Mouradpr الأمر الذي يهمني هو اين يتم حفظ البيتات المسروقة و كيف -اقصد المنبع و ليس الهدف- لانني اعتبرها الحلقة الضعيفة في كسر الحماية.... كيف يتم التحكم في عدم نشر النسخ الكاملة على النت بعد شراءاحد الكراكرز نسخة مرخصة من الشركة المنتجة ؟ بالتوفيق ان شاء الله Stolen bytes أقوى طريقة لحماية البرامج التجارية - kachwahed - 15-10-2010 أهلا STRELiTZIA ![]() إقتباس :الكل يعلم من دون شك ان:بالفعل، يمكن أن نسمي هذه الحماية Demo لكن الفرق سهولة التسجيل بإرسال رقم تسلسلي فقط عوض الملفات... إقتباس :هل خوارزمية التسجيل تحتوي على ثوابت Hard coded للبيتات المسروقة و في حالة نجاح عملية التسجيل يتم عمل Patch للتطبيق لاضافة الباتات الناقصة من هذه الثوابت ؟لم أفهم جيدا الفرق، لكن أعتقد أنني أقصد هذه ![]() إقتباس :الأمر الذي يهمني هو اين يتم حفظ البيتات المسروقة و كيف -اقصد المنبع و ليس الهدف- لانني اعتبرها الحلقة الضعيفة في كسر الحماية....طبعا، تبقى عند المنتج إقتباس :كيف يتم التحكم في عدم نشر النسخ الكاملة على النت بعد شراءاحد الكراكرز نسخة مرخصة من الشركة المنتجة ؟على النت أو غير النت، الزبائن في الغالب يتناقلون المنتجات فيما بينهم حتى تسقط أحدها بيد كراكر هنا التحدي... لو استطعنا أن نمزج الفكرتين استخدام Polymorphism Code (كما قال أشار الأستاذ عبد العزيز) مع فحص HardwareID مثلا، أعتقد أننا سنصل إلى نتيجة جيدة. Stolen bytes أقوى طريقة لحماية البرامج التجارية - STRELiTZIA - 15-10-2010 السلام عليكم و رحمة الله إقتباس :لكن الفرق سهولة التسجيل بإرسال رقم تسلسلي فقط عوض الملفات...حسب رائي... هنا يكمن ضعف الحماية، ارسال رقم يتاثر عمله بصحة ما يتم ادخاله، يعني اذا كان الرقم صحيح تتم عملية الباتش لاضافة البايتات المسروقة و تصبح الخصائص كاملة... و طبعا اذا كان الرقم غير صحيح لا يتم الباتش... حسب ما فهمت فان البايتات المسروقة تكون مخزنة في البرنامج نفسه بما انه يتم ارسال رقم تسلسلي فقط لا غير، في هذه الحالة يكفي تتبع البرنامج و خوارزمية التسجيل الى الوصول الى شرط او شروط التحقق. و ان كان جل عملك يدور حول محاولة منع الوصول الى شرط او شروط التحقق فان مبدأ Stolen bytes في الحماية يصبح غير نافع لانك ان استطعت منع الوصول الى الأجزاء الحساسة من خوارزمية التسجيل، اي طريقة اخرى في الحماية مثل Trial تصبح فعالة. لان السر في حماية البرامج هو منع او تعطيل الوصول الى الأجزاء الحساسة -الضعيفة- في آلية التسجيل بكاملها... إقتباس :لو استطعنا أن نمزج الفكرتين استخدام Polymorphism Code (كما قال أشار الأستاذ عبد العزيز) مع فحص HardwareID مثلا، أعتقد أننا- Polymorphic Code سوف يسبب لك المشاكل لانك تعتمد على عناوين ثابتة Offsets للتعديل على بايتات الخصائص. - البصمة HardwareID طريقة جيدة لمنع عدم تكرار استعمال مفاتيح التسجيل على اجهزة اخرى. هناك عمل تقني على احد برامج الحماية EXECryptor لــ Zoolander يوضح فيه الية الحماية من وجهة نظر من يحاول كشفها، ربما احد الأخوة عنده نسخة من العمل يرفعها لاثراء الموضوع... بالتوفيق ان شاء الله Stolen bytes أقوى طريقة لحماية البرامج التجارية - kachwahed - 15-10-2010 إقتباس :و طبعا اذا كان الرقم غير صحيح لا يتم الباتش...كلا، سيتم الباتش بأي رقم (يتم فحصه طبعا) والمستخدم يتحمل النتيجة السريال الخاطئ! إقتباس :البايتات المسروقة تكون مخزنة في البرنامج نفسهطبعا لا، فهكذا لن تكون مسروقة ![]() رقم التسجيل هو نفسه البايتات لكن مشفرة (أو مقارنة Hash)، مثال: - البايتات المسروقة هي: E8EB6BFE - يرسل المستخدم اسمه إلى المنتج + مبلغ $$$ - رقم التسجيل هو ناتج تشفير هذه البايتات+اسم المستخدم: 28W23-27N14-21Q17 - يدخل المستخدم اسمه ورقم تسجيله -> يتم تشفير الرقم واستخراج اسم المستخدم والبايتات -> مقارنة اسم المستخدم المدخل مع الاسم المستخرج من رقم التسجيل -> إذا تطابقا يتم حقن البياتات وتسجيل البرنامج... إقتباس :- Polymorphic Code سوف يسبب لك المشاكل لانك تعتمد على عناوين ثابتة Offsets للتعديل على بايتات الخصائص.أخشى أن يثير بعض AV أيضا... إذا البحث والاستبدال (Search & Replace) ما رأيك بتنفيها من عنوانين عشوائية!، مثال: كود : ...
procedure RunHexCode(I1, I2: Integer;P1, P2: Pointer);
begin
asm
push I1
push I2
push P1
Push P2
call Code
end;
end;
...
Randomize;
I := RandomRange(50, 400);
for N := I to Length(S)+I do begin
Code[N] := S[N-I+1];
end;
RunHexCode(StrToInt(Edit1.Text), StrToInt(Edit2.Text), @MsgYes, @MsgNo);
end;إقتباس :- البصمة HardwareID طريقة جيدة لمنع عدم تكرار استعمال مفاتيح التسجيل على اجهزة اخرى.فيها وعليها... ماذا لو قام المستخدم بتغيير في النظام (إعادة تثبيت Windows مثلا) وأو تغيير قطعة من العتاد أيضا المقارنات وحدها غير كافية، فهي في النهاية تصبح قفزات JNZ أو JE أو غيرها... وجميعها كما تعلمون ... |