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

مشروع كتابة AV لحماية الملفات عبر استخدام CRC

مغلقرائج
بدأه Xacker في 30 يناير 2007 · 58 رد · 9,371 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#51

حتى لا تكثر الامور ونضيع بينها نبسطها الى اقصى حد، نترك مسالة البحث عن المفات فيما بعد

ناخد ملف واحد فقط ونطبق عليه الحماية وعند نجاحها يمكن اضافة فحص السواقة و المجلدات والملفات...

-

في حالة كان الملف معطوب يحاول كود الحماية المحقون ارجاع الامور الى اصلها حسب ما لديه من معلومات

مثلا ان وجد ان نقطة بداية البرنامج تغيرت يرجعها للقيمة الاصلية

ان وجد ان First bytes تغيرت يرجها بال32 التي حفظها من قبل

-

نزع الحماية من ملف تكون بالطريقة العكسية التي اضيفت بها الحماية

-

الان هذه الطريقة لا تنفع مع كل الفيروسات لكنها ليست سيئة كبداية ويمكن اضافة امور اخرى فيما بعد

d4baa0.gif
#52

ما هي بدايتنا اذن؟

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#53

حتى لا يكون الامر مجرد كلام، نقسم الامر الى عملي/نظري

البداية العملية:

- اضافة / حقن كود لملف تنفيذي دون التاثير على عمله

طبعا الكود سيكون مجموعة NOP و JMP لنقطة البداية الاصلية

ايضا لتسهيل الامر الاضافة تكون يدوية وعندما تكون ناجعة نبرمجها

البداية النظرية:

الاتفاق/مناقشة خواريزمية CRC على ملف واحد فقط- فيما بعد نعممها على كل الملفات-

d4baa0.gif
#54

علينا اذن بمناقشة الجزء الذي سنقوم بحقنه كي نقوم بالحقن اليدوي عند الاختبار

ما الشكل الذي يجب ان يكون الكود عليه.

اتصور علينا تطبيق فكرة الاقسام لو اتفقتم معي عليها ايضا من البداية كي نقوم بتطبيق هذا ضمن الكود المحقون

من واجب الكود المحقون التأكد من ان الملف لم يتم التلاعب به - اذن سيقوم بفحص القسم الثاني وحساب الـ CRC له, تطبيق خوارزمية الـ CRC سهل, موجودة ضمن الشفرة الموضحة بنفس الموضوع من البداية

علينا ان نقوم بتنفيذ خطوة التقسيم وقراءة القسم الثاني وحساب CRC له.

ما رأيكم؟

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#55

صحيح، علينا تبسيط وتجزئة الامور بشكل اكبر لضمان سير العملية

اقتباس
علينا اذن بمناقشة الجزء الذي سنقوم بحقنه كي نقوم بالحقن اليدوي عند الاختبار

ما الشكل الذي يجب ان يكون الكود عليه.

فعلا هذه اهم نقطة

اقتباس
اتصور علينا تطبيق فكرة الاقسام لو اتفقتم معي عليها ايضا من البداية كي نقوم بتطبيق هذا ضمن الكود المحقون

من واجب الكود المحقون التأكد من ان الملف لم يتم التلاعب به - اذن سيقوم بفحص القسم الثاني وحساب الـ CRC له, تطبيق خوارزمية الـ CRC سهل, موجودة ضمن الشفرة الموضحة بنفس الموضوع من البداية

علينا ان نقوم بتنفيذ خطوة التقسيم وقراءة القسم الثاني وحساب CRC له.

حسنا انا اتفق معك في هذه الفكرة ، كما قال B.M.AbdelAziZ على الاقل يكون هناك بداية عملية

-البرنامج يقوم بعمل قسم جديد ويقوم بتطبيق خوارزمية الCRC وتخزين القيمة داخل القسم الجديد

-ثم يقوم بتوليد الكود الذي سيحقن بحيث يراعي البرنامج:

- مكان تخزين قيمة الCRC

- مكان تخزين أول 32 بايت

- توليد الكود المحقون الذي يقوم بالتحقق من قيمة الCRC

كمثال على شكل الكود المحقون :

mov	  eax , StoredCRCvalue
للاقسام crc  ثم كود يطبق بها حساب 
cmp	  NewCRCvalue , StoredCRCvalue
jne	  Alert_MsgBox

يعني مجرد مثال على شكله

"اتوقف عند Alert_MsgBox لنتأكد من الامور تمشي في نصابها ولتبسيط الامور"

(طبعا لما نقوم بحقن الكود لن نقوم بحقنه على شكل كلمات jmp mov يحقن بشكل بايتات تمثل الopcodes)

(نحتاج الى طريقة توليد ال opcodes)

- البرنامج يقوم بتغيير نقطة البداية الى قفزة للكود المحقون بتغيير اول 32 بايت

كتمهيد:

.586
.model flat,stdcall
option casemap:none

include		..\include\windows.inc
include		..\include\kernel32.inc
include		..\include\user32.inc

includelib	..\lib\kernel32.lib
includelib	..\lib\user32.lib



.data

calc		db	"calc.exe",0
entrydata	db	32 dup (?)
caption1	db	"Error",0
Text1		db	"This File is Not Executable File",0
Text1		db	"This File is Not a PE Executable File",0

.data?

hfile		dd	?
hMap		dd	?
fsize		dd	?
fMap		dd	?
PEsign		dd	?


.code

start:

invoke	CreateFile, addr calc, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL;اخترت ملف الآلة الحاسبة كبداية بنسخه لمجلد البرنامج
mov	hfile, eax
invoke	GetFileSize, hfile, NULL
mov	fsize, eax
invoke	CreateFileMapping, hfile, NULL, PAGE_READONLY, NULL, NULL, NULL
mov	hMap, eax
invoke	MapViewOfFile, hMap, FILE_MAP_READ, NULL, NULL, NULL
mov	fMap, eax
cmp	word ptr [eax], "ZM";check if the file has executable signature (first 2 byte "MZ")
jne	not_exe;msg Error & Exit
mov	edx, dword ptr [eax+60];mov the offset that pointer to "PE" signature
lea	ecx, dword ptr [edx+eax];laod the "PE" address
cmp	dword ptr[ecx], "EP";check the "PE" signature
jne	not_PE;msg Error & Exit
mov	PEsign, ecx
add	ecx, 40;EntryPoint
mov	esi, dword ptr [ecx]
add	ecx, 4;Base Of Code
mov	edx, dword ptr [ecx]
add	ecx, 40;Header Size
mov	edi, dword ptr [ecx]
sub	esi, edx
add	esi, edi;
mov	ecx, fMap
add	esi, ecx;Now esi will have the entry point offset
xor	ecx, ecx
add	ecx, 32;put 32 to save the first 32 byte.
lea	edi, entrydata
dec	edi
rep movsb byte ptr [edi], byte ptr [esi]; save the first 32 byte into variable		
;هنا ان شاء الله نطبق فكرة انشاء القسم وتطبيق خوازمية الCRC

not_exe:
invoke	MessageBox,0, addr Text1 ,addr caption1, MB_OK
jmp	GoExit

not_PE:
invoke	MessageBox,0, addr Text2 ,addr caption1, MB_OK
jmp	GoExit

GoExit:
invoke	ExitProcess, 0

end start

بالامكان تغيير كل ما سبق

نعود لرأيكم.

امتــــــــحـــــــــــــــــــانــــــــــــــــــــــــــــــــــــات

استر يا رب (ادعولنا).

#56
اقتباس
اقتباس
(طبعا لما نقوم بحقن الكود لن نقوم بحقنه على شكل كلمات jmp mov يحقن بشكل بايتات تمثل الopcodes)

(نحتاج الى طريقة توليد ال opcodes)

الطريقة سهلة، نكتب الكود بحيث يكون قابل للتنفيذ في اي مكان / على طريقة ShellCode

ونحدد موضع StoredCRCvalue فيه ونعدلها بقيمة ناتج خواريزمية CRC ثم يحقن

d4baa0.gif
#57

جميل جداً, اود ان اكتب فورا, لكن هذا الامر بحاجة الى الاختبار الدائم للنتائج.. ساضطر الى انتظر بضع ساعات حتى تصبح ملفاتي بين يدي

يمكن الاعتماد على مكتبة pelib

يمكن الحصول عليها من موقع iczelion

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#58

شباب نريد تفاعل / تقاسم المهام / وضع جدول زمني / تنفيذ / شيئ ملموس

d4baa0.gif
#59
اقتباس
شباب نريد تفاعل / تقاسم المهام / وضع جدول زمني / تنفيذ / شيئ ملموس

أنا أعتذر بشدة منكم يا شباب لأنه غدا صباحا علي امتحان أخذ وقتي وتفكيري عن الموضوع والكتابة فيه،وبعد

فترة قليلة امتحان بعده.

بمرور سريع وجدت هذه الاداة PE Library.Version 0.3c By pumqara

اقتباس
What is it all about ?

This is a small library for handling the PE Header, Import Table, Export Table and Section Table of the Pe files.It is fully coded in mASM, so it is very fast and really small.It is updated non stop.If you find bugs, please send me an e-mail to pumqara(at)abv.bg.

بها طريقة لشرح الدوال تشبه MSDN

لنا عودة ان شاء الله

وشكرا لكم.

امتــــــــحـــــــــــــــــــانــــــــــــــــــــــــــــــــــــات

استر يا رب (ادعولنا).

هذا الموضوع مغلق.

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

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

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

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

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