مشاهدة النسخة كاملة : [تمرين] كيف احمي برنامجي من الـــ rce ؟
STRELiTZIA
18-07-2009, 11:25 AM
السلام عليكم و رحمة الله
فكرة التمرين :
1- انجاز الجزء الخاص بحماية برنامجك قبل نشره كنسخة تجريبية، يعني جعله Trial.
2- انجاز خوارزمية فصح معلومات التسجيل.
3- طرح افكار خاصة جديدة لحماية برنامجك من الكسر او شرح طرق حماية موجودة.
قوانين المشاركة:
- وضع الملفات التنفيذية فقط و في حالة اكتشاف ثغرة في الحماية يتم مناقشتها.
- بعد اسبوع ان شاء الله توضع الملفات المصدرية الخاصة بكل مشاركة.
على بركة الله... المشاركة مفتوحة للجميع.
o15s19
18-07-2009, 02:06 PM
يعني ممكن احمي برنامجي و اضعه هنا و سيتم نقاش قوة و فكرة الحماية؟؟؟؟؟؟؟
STRELiTZIA
18-07-2009, 03:17 PM
يعني ممكن احمي برنامجي و اضعه هنا و سيتم نقاش قوة و فكرة الحماية؟؟؟؟؟؟؟
نعم اخي الكريم هذا هو المطلوب و الهدف من التمرين.
في حالة اكتشاف ثغرة فانت المستفيد :d و في حالة عدم ايجاد حل للحماية و بعد طرحك للسورس و شرحك الحماية فنحن سنستفيد :d يعني في الحالتين الكل سيستفيد ان شاء الله :d
كل الأفكار مقبولة و الجديد مستحب :d
MjIrIm
21-07-2009, 10:20 PM
في البداية السلام عليكم
بادرة طيبة أخي العزيز STRELiTZIA
:D
مشاركة خفيفة و على السريع حتى نستهل الحديث
تم وضع بعض الأفكار تخص النقطة الأولى و الثالثة
النقطة الثانية سهلة بالنسبة للمتعودين على KeyGening
أترككم مع التطبيق, الحماية مقبولة نوع ما حتى يشارك و يستوعبها الجميع
:D
مازلنا في عالم Dream Land أخي العزيز STRELiTZIA
و في انتظار الجديد في عالم الكرنل
أين هو GM
قمت بانجاز هذا التطبيق الصغير خصيصا لهذه المشاركة
حيث يتم التعامل مع (...) فيما بعد !!! ليستفيد الجميع
:cool:
و السلام.
STRELiTZIA
22-07-2009, 12:36 PM
و عليكم السلام و رحمة الله
مشاركة خفيفة و على السريع حتى نستهل الحديث
عظيم...
هيا الى سكاكينكم لتشريح هذا التمرين :)
و لكن من اين تؤكل الكتف ؟
يعني هيا..... ما هي اقتراحاتكم لنبدا بتحليل تمرين اخي MJ ؟
1- كيف الحصول على عناوين الفحص ؟
2- هل نحلله تحليل Static او Dynamic ؟
3- ما علاقة و الهدف من الملفات المرفقة مع التمرين ؟
Dr.MOT
22-07-2009, 05:39 PM
السلام عليكم
أخي MJ لقد حملت المرفق وعند محاولة التشغيل تظهر رسالة " Try again without opening a debugger "
مع العلم أني لم أفتح أي Debugger !?
هل هذا نوع من الحماية لعدم محاولة التنقيح من المنقح ؟
وايظا تم منع فتح الـ Task Manager عن طريق إنشاء مفتاح في : REG add HKCU\Software\Microsoft\Windows\CurrentVersion\Pol icies\System
؟؟
ثم تظهر معي رسالة خطأ من الويندوز " تعذر تشغيل هذا البرنامج "
وشكرا
Dr.MOT
22-07-2009, 05:56 PM
نسيت أن اذكر : إغلاق explorer.exe فيذهب شريط إبدأ !
Fzarada
23-07-2009, 07:47 AM
نسيت أن اذكر : إغلاق explorer.exe فيذهب شريط إبدأ !
أمر طبيعي، شريط إبدأ = explorer.exe
مع العلم أني لم أفتح أي Debugger
تأكد أخي Dr.MOT من أن JIT معطل على نظامك.
أخي MjIrIm، محاولة جيدة كبداية. أعلم أنك برمجته على السريع. هده بعض الأفكار:
1-يمكن بعثرة ندآت التحقق من وجود المنقح في كود البرنامج أو مناداتها عشوائيا.
2-تفادي إستعمال الشرط الوحيد لمرور إلى المرحلة التالية.
3-تشويش النصوص.
4-حماية الكود من التعديل. (CRC)
أعجبتني تركيبة الخوارزمية.
Name: Fzarada
SN: E825DAED22-D9939E7291
شكراً لك.
MjIrIm
23-07-2009, 07:30 PM
في البداية السلام عليكم
أول مرحبا بك و مشكور على المشاركة
بالنسبة للنقطة الأولى و الثالثة رغبت في ادراجهما لكن في الأخير اقتصرت على الموجود
حتى يستنى للجميع فهم ما قمت به و محاولة كسر التطبيق :D
ان كان التطبيق موجه الى السوق يكون شيء أخر
:D
مشاركة خفيفة و على السريع حتى نستهل الحديث
تم وضع بعض الأفكار تخص النقطة الأولى و الثالثة
النقطة الثانية سهلة بالنسبة للمتعودين على KeyGening
أعمل الان على PHP و MySQl
في مشروع أخذ مني و مازال يأخذ الكثير من الوقت و التفكير
فعندما رأيت مشاركة الأخ STRELiTZIA لم أتردد بهذه المشاركة الخفيفة
للترفيه عن النفس و تقديم شيء بسيط
بالنسبة للنقطة الرابعة اعترضني اشكال لم أتعمق فيه كثيرا فتركته لكن في الأول فكرت في ادراجه
النقطة الثانية جميلة و لهذا قلت تم وضع بعض الأفكار
بالنسبة لحساب السريال جعلته واضح لتسهيل العملية
لا تنسى ان اسم التطبيق RCE Protect Example#01
:D
مشاركة جميلة و سليمة أخي العزيز Fzarada
الان لك الدور لاعانة الاخوة الأعضاء على فهم الحماية التي تم ادراجها بالتطبيق
و كيفية تجاوزها بما أنه تم ذلك
ما هي نقائص النسخة Trial
في انتظار مشاركة البقية أيضا فهو تم انجازه حتى
هيا الى سكاكينكم لتشريح هذا التمرين
هل نحلله تحليل Static او Dynamic
أعجبتني تركيبة الخوارزمية.
Name: Fzarada
SN: E825DAED22-D9939E7291
مولد سريال ليس بالصعب ان حاولت فيه
هذا التطبيق ان شاء الله ستتمكنون منه من التعامل مع العديد من الخصائص يتم ذكرها فيما بعد
المجال مازال مفتوح للحديث
و السلام.
STRELiTZIA
24-07-2009, 09:31 AM
مشاركة جميلة و سليمة أخي العزيز fzarada
الان لك الدور لاعانة الاخوة الأعضاء على فهم الحماية التي تم ادراجها بالتطبيق
كلام صحيح...
هيا اخي العزيز نريد طريقة توصلك الى الحل :D:D:D
من التالي :rolleyes:
Goblin
24-07-2009, 11:41 AM
البرنامج لا يعمل عندي.
http://i32.tinypic.com/2pq9pig.gif
delphiwin2007
24-07-2009, 08:10 PM
السلام عليكم
نفس الشيء البرنامج لا يعمل عندي.
STRELiTZIA
24-07-2009, 08:25 PM
السلام عليكم و رحمة الله
البرنامج لا يعمل كيف اخي الكريم ؟
جرب من جديد مع هذه المكتبة المرفقة...
بالتوفيق ان شاء الله
STRELiTZIA
25-07-2009, 01:14 PM
السلام عليكم و رحمة الله
هذا تمرين بسيط لمحاولة ايصال فكرة معينة من خلاله، و تعتبر هذه الفكرة من اساسيات الهندسة العكسية...
التمرين يحاول تقليص استعمال ادوات الهندسة العكسية RCE Tools الى حد كبير...
المطلوب :
جعل التمرين مسجل باي طريقة :D P@tch, Cr@ck, Seri@l, Keygener@tor او شراء ترخيص من عند اخي DeltaAziz :D
بالتوفيق ان شاء الله
nabilkeb
25-07-2009, 08:55 PM
أنا لن أمانع بالشراء هههههه :D، أولا موش خسارة فيك و لا فيه ، ثانيا و هو الأهم :o العين بصيرة و اليد قصيرة بل لا ماكانش هههههه :D
- سأحاول أستاذي . و لن أنس شكرك على هذه الدروس و المشاركات الرائعة ، و جعلها الله في ميزان حسناتك.
بالتوفيق.
Rover
28-07-2009, 04:15 AM
كيف الحال أخي Streli ...
في الحقيقة تعتبر تطبيقات 16 بت من البرمجيات الصعبة التتبع ..
و لكن مع دلفي يكون الأمر سهلاً نوعاً ما , في حال كان الخيار هو الباتشينغ ..
الثغرات التي يمكن الأستفادة منها و تسهل العملية :
1- وضوح السترينغ داخل البرنامج كما Good Boy ( يمكن استخدام التشفير للتمويه ) ..
2- أسماء العناصر تساعد أيضاً و خاصة ان مواقع احداثها واضحة ( تمويه اسماء العناصر يصعب العملية قليلاً ) ..
3- في تمريننا كانت المقارنة واضحة مما سهل كسر الحماية ..
4- أعتقد ان تعددية مواقع الفحص يسهم في زيادة قوة الحماية ..
5- يمكن زيادة قوة الحماية بتشفير قطعة الكود المسؤولة عن الفحص .. و فك تشفيرها في وقت التنفيذ ..
6- طبعاً أضافة CRC تزيد أيضاً من قوة الحماية ..
7- لا يوجد سابعاً .. :D:D
شكراً لجهودك أخي Streli ..
لك مني أرق تحية ..
STRELiTZIA
28-07-2009, 09:52 AM
السلام عليكم و رحمة الله
مممم جيد حل صحيح اخي Rover :)
بما ان الموضوع وضع للمناقشة و ايصال معلومات عن طرق عمل الهندسة العكسية نبدأ ان شاء الله.
في الحقيقة تعتبر تطبيقات 16 بت من البرمجيات الصعبة التتبع ..
1- محاولة تعطيل الأدوات التي يعتمد عليها المهندس العكسي في تحليل البرنامج.
و هذا يسمى Anti XXX و هذه المضادات تستعمل كثيرا من طرف ادوات الحماية الحالية Protectors.
تم تطوير التمرين على اول اصدار لدلفي Delphi 1 و هو ينتج ملفات تنفيذية 16bit من نوع Ne' New Executable ' و ليست PE' Portable Executable.
يكمن تحليل هذا النوع من الملفات بــ : IDA تحليل static او بـــ SoftICE تحليل Dynamic.
وضوح السترينغ داخل البرنامج كما Good Boy.
2- يجب ان تكون حماية البرامج لا تحتوي على ثغرات مثل رسائل نجاح او عدم نجاح عملية التسجيل.
ايضا تم وضع قيمة ثابتة عمدا تدخل في توليد رقم التسجيل ليتم استغلالها في الوصول الى خوارزمية التحقق
44656C70686920342041726162
و هي تعني Delphi 4 Arab بــ Hexadecimal
function GetValidSerial(Name: string): string;
var i, Serial: integer;
begin
Serial := 0;
Result := '';
if Length(Name) >= 5 then
begin
for i := 0 to Length(Name) -1 do
begin
Serial := Serial + Ord(Name[i]);
end;
Serial := ((Serial mod $256) * $8) + (Length(Name) * $32) + Ord(Name[5]) ;
Result := IntToHex(Serial, 16) + '-' + IntToStr(Serial) + '-' + '44656C70686920342041726162' + IntToStr(Length(Name));
end;
end;
تم وضع بعض المتغيرات التي تؤثر على رقم التسجيل الناتج كطول الاسم المدخل، اخذ محرف من الاسم بترتيب معين...
procedure TMain.TryBtnClick(Sender: TObject);
begin
if SerialEdt.Text = GetValidSerial(UserEdt.Text) then
MsgLbl.Visible := True else
MsgLbl.Visible := False;
end;
procedure TMain.UserEdtChange(Sender: TObject);
begin
if Length(UserEdt.Text) >= 5 then
TryBtn.Enabled := TRUE else
TryBtn.Enabled := FALSE;
end;
الوحدة كاملة للتمرين
unit Mainfrm;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, ExtCtrls, StdCtrls;
type
TMain = class(TForm)
LogoImg: TImage;
UserEdt: TEdit;
SerialEdt: TEdit;
TryBtn: TButton;
MsgLbl: TLabel;
procedure TryBtnClick(Sender: TObject);
procedure UserEdtChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Main: TMain;
implementation
{$R *.DFM}
function GetValidSerial(Name: string): string;
var i, Serial: integer;
begin
Serial := 0;
Result := '';
if Length(Name) >= 5 then
begin
for i := 0 to Length(Name) -1 do
begin
Serial := Serial + Ord(Name[i]);
end;
Serial := ((Serial mod $256) * $8) + (Length(Name) * $32) + Ord(Name[5]) ;
Result := IntToHex(Serial, 16) + '-' + IntToStr(Serial) + '-' + '44656C70686920342041726162' + IntToStr(Length(Name));
end;
end;
procedure TMain.TryBtnClick(Sender: TObject);
begin
if SerialEdt.Text = GetValidSerial(UserEdt.Text) then
MsgLbl.Visible := True else
MsgLbl.Visible := False;
end;
procedure TMain.UserEdtChange(Sender: TObject);
begin
if Length(UserEdt.Text) >= 5 then
TryBtn.Enabled := TRUE else
TryBtn.Enabled := FALSE;
end;
end.
الوحدة كاملة لمولد المفاتيح
unit Mainfrm;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, ExtCtrls, StdCtrls;
type
TMain = class(TForm)
LogoImg: TImage;
UserEdt: TEdit;
SerialEdt: TEdit;
procedure UserEdtChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Main: TMain;
implementation
{$R *.DFM}
function GetValidSerial(Name: string): string;
var i, Serial: integer;
begin
Serial := 0;
Result := '';
if Length(Name) >= 5 then
begin
for i := 0 to Length(Name) -1 do
begin
Serial := Serial + Ord(Name[i]);
end;
Serial := ((Serial mod $256) * $8) + (Length(Name) * $32) + Ord(Name[5]) ;
Result := IntToHex(Serial, 16) + '-' + IntToStr(Serial) + '-' + '44656C70686920342041726162' + IntToStr(Length(Name));
end;
end;
procedure TMain.UserEdtChange(Sender: TObject);
begin
if Length(UserEdt.Text) >= 5 then
SerialEdt.Text := GetValidSerial(UserEdt.Text);
end;
end.
المرفق يحتوي على مولد ارقام التسجيل مبرمج بدلفي 1 ايضا.
الصعوبة كانت تكمن فقط في تتبع مثل هذه التمارين...
----
لم ينتهي التمرين بعد
مطلوب جديد : :D
محاولة ايجاد خوارزمية التحقق في IDA...
اخي Rover هل تتكرم و تضيف الطريقة التقنية للوصول الى حلك :D؟ بارك الله فيك :)
و اخيرا : ماهو الشئ المضاف في الكود فوق لا يدعمه Delphi 1 ؟ نعم انا دائما بمشاكلي :D
بالتوفيق ان شاء الله
Rover
28-07-2009, 02:50 PM
اخي Rover هل تتكرم و تضيف الطريقة التقنية للوصول الى حلك ؟ بارك الله فيك
تفضل أخي Streli هذا شرح سريع لطريقة الباتشينغ ..
مطلوب جديد :
محاولة ايجاد خوارزمية التحقق في IDA...
لم أفهم ما المطلوب أخي Streli
و اخيرا : ماهو الشئ المضاف في الكود فوق لا يدعمه Delphi 1 ؟ نعم انا دائما بمشاكلي
هذا يجب أن تسأل عنها DeltaAziz :D:D
تحياتي ..
STRELiTZIA
28-07-2009, 05:44 PM
لم أفهم ما المطلوب أخي Streli
ايجاد اوامر خوارزمية توليد رقم التسجيل في الــ Listing الخاص بــ IDA :)
شرح خفيف و ممتاز اخي Rover :)
و الله اخواني احب جدا هذا النوع من المشاركات مع وضع شروحات خفيفة لتعم الفائدة.
بارك الله فيك اخي Rover.
في انتظار محاولات اخرى، حلول او تمارين لا يهم...
MjIrIm
31-07-2009, 12:28 AM
في البداية السلام عليكم
أولا عذرا على التأخير أيها الاخوة الكرام
مشاغل كثيرة و كثيرة هي السبب في ذلك و الله أعلم بذلك
أعجبتني تركيبة الخوارزمية.
Name: Fzarada
SN: E825DAED22-D9939E7291
بالنسبة للسريال ليس صحيح لم أذكر ذلك سابقا
لكنه قريب جدا أي هناك خطوة أخيرة غابت عنك نتيجة السرعة في الاجابة على ما اضن
:D
أخي العزيز STRELiTZIA
ما العمل الان, هل أضع الملفات المصدرية الان أو نترك مجال للمحاولة مرة أخرى
أو تقديم بعض التلميحات و Hints
بالنسبة للتطبيق به تعليقات خفيفة قمت بوضعها من الأول
ان شاء الله تسهل فهم عمل البرنامج من جميع النواحي
بالنسبة ل Optimization يمكن يستحق القليل
أسف مرة أخرى, مشروع التخرج أخذ مني الكثير
:D
و السلام.
STRELiTZIA
31-07-2009, 08:55 AM
و عليكم السلام و رحمة الله
ما العمل الان, هل أضع الملفات المصدرية الان أو نترك مجال للمحاولة مرة أخرى
أو تقديم بعض التلميحات و Hints
اذا لم تصل فكرة التمرين بعد، يمكنك اخي MJ ان تقدم Hints و شرح لفكرة الحماية اولا ثم بعد يومين اذا توفر لك الوقت تضع الملفات المصدرية...
مشروع التخرج أخذ مني الكثير
الأولوية له
الله يوفقك :)
o15s19
31-07-2009, 09:24 PM
مع إنو التمرين يبدو سهلا و لكن هناك مشكلة و الله أعلم بالتمرين
بعد تخطي عمليات التحقق من برامج RCE و الحاسب الوهمي و غيره
و بفرض الاسم o15s19
تتم العملية بالشكل الأتي:
بالبداية يتم استخراج القيمة 703E242BE9 من السترنغ Delphi4arab و الاسم المدخل بعملية على ما اظن DES
ثم يتم دمج ال السم المدخل مع -M[j]IrIm لينتج مثلا
-o15s19-M[j]IrIm
ثم يتم استخدام التحويل base 64
لينتج
LW8xNXMxOS1NW2pdSXJJbQ==
و ثم يتم عمل MD5 (مع اعادة ترتيب لثوابت MD5)
لينتج
7cc435b412ba4cf73aa6dec1534df57e
ثم يتم اسستخراج أول عشرة
لينتج
7cc435b412
و يتم دمجها (مع تكبير الأحرف) مع 703E242BE9 و وضع -
لينتج
703E242BE9-7CC435B412
و أخيرا يتم اعادة قلب الناتج من الأخير للأول مع البدء بالرقم قبل الأخير
لينتج
14B534CC7-9EB242E307
و يتم مقارنته مع السيريل المدخل
و هنا النتيجة حتما خاطئة بسبب أن الرقم المقلوب قبل القلب كان 15 خانة و ثم اصبح 14 و لكن يتم حفظ 15 خانة بينما السيريل المدخل 14 خانة مثلا فهنا النتيجة سلبية مهما كان الرقم المدخل لأنه بحال تم زيادة أو نقصان رقم لن يتم التطابق و ستفشل العملية و بحال ادخال الرقم الصحيح لن تتم العملية بسبب اختلاف الأطوال
لهنا وصلت و أأمل من صاحب التمرين أن يعقب على هذا لأنو كمان شوي رح اجن :confused::confused:
MjIrIm
26-08-2009, 01:22 PM
في البداية السلام عليكم
رمضان مبارك للجميع
تحليل سليم مئة مئة تقريبا o15s19
بالنسبة لاخر عملية أي عكس السريال حذفتها الان حتى يزول الاشكال
بارك الله فيك على مجهودك
أضع بين أيدكم الان التطبيق كاملا بالملفات المصدرية
مع مولد السريال الخاص به أيضا
نريد الان من الجميع أن يقوموا بتحليل ما تم كتابته
فالأكواد موجودة الان, أي ذكر ما تم الاعتماد عليه
و ماذا استفدت بعد الاطلاع على التطبيق كاملا
(العملية عكسية هذه المرة)
:monster2:
من اراد اثراء الموضوع بتحسينات لطريقة الحماية أو ذكر أساليب جديدة
يصبح الموضوع مفتوح المجال في الحديث
الاكواد يمكن اختزالها بدرجة أكبر لكن تركتها على حالها حتى تكون باينة للجميع العيان
لي عودة ان شاء الله بعد أسبوع على أقصى تقدير
التطبيق به مجموعة من الأفكار التي تستحق الحوار فلكم الكلمة
عذرا على التأخير أيها الاخوة الكرام
و السلام.
المرفق سليم الان بعد حذف الفيروس منه
phpbb3
26-08-2009, 02:19 PM
اخي M[j]IrIm
http://www.delphi4arab.com/forum/showthread.php?t=1733
يبدو انك مصاب بهذا الفايروس
افحص
Fct.dll
MjIrIm
26-08-2009, 02:37 PM
اخي M[j]IrIm
http://www.delphi4arab.com/forum/showthread.php?t=1733
يبدو انك مصاب بهذا الفايروس
افحص
Fct.dll
في البداية السلام عليكم
صحيح أصبت به و قمت بعملية مسح لجميع الملفات المصابة
لكن الوحيد الذي لم أقم له بعملية جراحية هو Fct.dll
:oops:
حتى مضاد الفيروسات يكشف الان الملفات التنفيدية بصيغة Exe
انها مصابة بهذا الفيروس لكن التي بصيغة dll لا!!!
على فكرة المرفق الشهير الذي وضعته لدى AT4RE
هو من أصابني
:monster2:
(أمزح معك قليلا)
يمكن اعادة عمل Compile ل المكتبة الدينامكية فهو ليس بالصعب
أو من أراد التحميل من الجديد عليه بالمرفقات
أخي العزيز STRELiTZIA أو DeltaAziz
يتم حذف المرفق في المشاركة السابقة
مشكورين تم ذلك منذ قليل
المرفق في المشاركة السابقة سليم الان
شكر خاص للادارة
و السلام.
hanipino
09-04-2010, 10:52 PM
السلام عليكم
مجرد محاولة حاولوا كسر هدا البرنامج .
kachwahed
09-04-2010, 11:27 PM
مجرد محاولة حاولوا كسر هدا البرنامج .
ملعوبة جيدا أخي هاني ;)
Username: HP_D4A
Password: HP_D4A
أو تغيير القفزتين:
00450838 |. /75 1B JNZ SHORT 00450855
0045081B /75 38 JNZ SHORT 00450855
.
hanipino
10-04-2010, 10:27 AM
نعم kachwahed :)
بارك الله فيك .
vBulletin® , Copyright ©2008-2012