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

[ تمت الإجابة ]كيف يمكن معرفة العملية التى تستخدم ملف معين؟

مغلق
بدأه GHOST2010 في 26 مايو 2009 · 27 رد · 16,620 مشاهدة · في أرشيف قسم Windows APIs
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

شد حيلك يا X+G :lol: :lol:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#2

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

Process Explorer

وقد يكون السبب في ذلك هو وضع الحقل dwShareMode بالقيمه 0 عند انشاء الملف CreateFile وبالتالى لا يوجد أي تطبيق يستطيع عمل أي عملية على هذا الملف ،،

وربما غير ذلك :) ، ننتظر GM + Xa :lol:

بالتوفيق ،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#3
Wajdy Essam كتب:
وعليكم السلام ورحمه الله وبركاته ،

Process Explorer

وقد يكون السبب في ذلك هو وضع الحقل dwShareMode بالقيمه 0 عند انشاء الملف CreateFile وبالتالى لا يوجد أي تطبيق يستطيع عمل أي عملية على هذا الملف ،،

وربما غير ذلك :) ، ننتظر GM + Xa :lol:

بالتوفيق ،

أنا عايز اعرف بالكود مش بأداة جاهزة :blink:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#4

معذره أخي :) ،،

على العموم عند انشاء أي Kernel Object باستخدام الدوال CreateFile/Process/Thread فيتم وضع الObject في الKernel Space والـ Handle العائد لهذا الObject هو فقط رقم index لجدول في العملية يسمى Process Handle Table ،، من خلال هذا الHandle (Index يمكن الوصول لعنوان الكائن في منطقة الكيرنل والوصول لflag يحدد هل هو قابل للوراثه أم لا .

ولا يمكن أن تحصل على هذا الHandle أي عملية أخرى الا لو كان الHandle قابل للوراثه Ineritance (ويجب أن تكون العملية الثانية ابن للأولى ) أو كانت العملية نفسها تستخدم أي طرق من الSharing Handle .. وكل هذا لن يحصل والسبب أننا لم ننشئ العملية الأولى من الأساس..

خلاصه لا أعتقد بأن هناك طريقة من الUser-Mode للوصول لHandle عملية لا تشارك مقابضها :) .

والله أعلم ، أرجوا تصحيح في حال كنت على خطأ :).

بالتوفيق،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#5

أنا نزلت برنامج اسمه Unlocker بيعمل الكلام ده ,, لو الملف مستخدم وحبيت أحذف الملف مثلا البرنامج ده بيعرض عليا خدماته ويفرد عضلاته ويقولى انه يقدر يحذفه وفعلا بيحذفه :blink: يعنى أكيد في طريقة :angry: :angry:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#6

صحيح كما قال الأخ وجدي السبب هو فتح الملف بـShare لا يقبل فتح الملف بـDelete Share .

اقتباس
ولا يمكن أن تحصل على هذا الHandle أي عملية أخرى الا لو كان الHandle قابل للوراثه Ineritance (ويجب أن تكون العملية الثانية ابن للأولى ) أو كانت العملية نفسها تستخدم أي طرق من الSharing Handle .. وكل هذا لن يحصل والسبب أننا لم ننشئ العملية الأولى من الأساس..

خلاصه لا أعتقد بأن هناك طريقة من الUser-Mode للوصول لHandle عملية لا تشارك مقابضها .

يبدو ان الأمر اختلط عندك أخ وجدي ، على العموم فيما يخص المقابض هناك شيئان يجب ذهرهم :

1- Inheritance :

ويحدث عند فتح مقبض للـObject مع وضع الـInherited flag من العملية الأم ، هكذا عند انشاء العملية الابن واذا تم وضع الباراميتر bInheritHandles = TRUE يتم نسخ الـInheritable Handles فقط عن طريق ExDupHandleTable ... كل هذا يحدث في الكرنل اثناء انشاء البروسس الابن (ObInitProcess) .

2- Duplication :

وهي خدمة توفرها نظم NT لنسخ مقبض من بروسس الى اخر (NtDuplicateObject) .

الحل باختصار كالآتي (ابحث اكثر ستجد اكواد جاهزة) :

1- جرد جميع المقابض بالنظام (Call NtQuerySystemInformation + SystemHandleInformation).

2- عمل Duplicate للمقابض مقبض مقبض بحيث يمكنك استخدام هذا المقبض للحصول على معلومات اضافية للـObject .

3- جلب بيانات عن الـObject الخاص بالمقبض (NtQueryObject) بمعرفة نوعه (Process/File/Thread ..etc) .

4- اذا كان الكائن عبارة عن ملف يتم جلب اسمه ثم مقارنته بالملف الذي تريد اغلاقه .

5- يتم اغلاق المقبض عن طريق نفس الدالة NtDuplicateHandle مع العلم CloseSource .

هناك مشروع رائع لصديق اسمه ProcessHacker وهو شئ مثل ProcessExplorer لكن مفتوح المصدر وله ميزات عن PE في التعامل مع Infected Environments .

المشروع مكتوب بالـسي شارب والدرايفر باسي :

http://processhacker.sourceforge.net

يمكنكم المشاركة فيه اذا اردتم او التعلم من الكود .

-------------

حلول اخرى :

- التعامل مباشرة مع الـFilesystem ، عن طريق معرفة البنية الصحيحة لنظام الملفات للـpartition الذي عليه الملف والتعديل فيه بمستوى الدسك ، سيلزمك وقت لدراسة NTFS/FAT .

- اختراق الـFilesystem من الكرنل مود ، عن طريق التلاعب في بنية الـFILE_OBJECT الخاصة بهذا الملف وتعديل الـShareAccess حسب ما تريد ، او تعديل الكود الخاص بعملية التحقق من الـShareAccess مباشرة (الـFSD يفعل ذلك عن طريق IoCheckShareAccess) .

3

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#7

بمناسبة فرد العضلات ،، شاهد هذا العرض بالمرفقات :D

KD.rar

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#8

والله ياجى انت معلم بس بلاش تفرد عضلاتك اكتر من كده :lol: :lol: :lol:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#9

السلام عليكم

أعذروني على حشر نفسي :P

لم استطع المقاومة

فهذا التساؤل في بالي ايضاً

بالنسبة للأخ GamingMasteR

GamingMasteR كتب:
بمناسبة فرد العضلات ،، شاهد هذا العرض بالمرفقات :D

شاهدت الملف الفلاشي ولم ار اي شيء غير طبيعي

كل ذلك ممكن من خلال تحليلي ولا ادعي صواب تحليلي

لكن في العملية الاولى كن انت فاتح ملف نصي باستخدام النوت باد

حسب علمي ان النوت باد يقرأ كامل محتوى الملف ثم يغلقه (يعني تقدر تلعب بالملف بعد قراءته)

وسالفة مسح ملف البرنامج التنفيذي

فممكن عمل ذلك ببساطة عن طريق انهاء العملية ثم مسح الملف

هل انا مخطئ ؟

#10
اقتباس
حسب علمي ان النوت باد يقرأ كامل محتوى الملف ثم يغلقه (يعني تقدر تلعب بالملف بعد قراءته)

كلامك صحيح ، لم ادرك هذا اثناء عمل الفلاش :wacko:

لكن مازال البرنامج قادر على حذف اي ملف حتى لو مفتوح Exclusive .

اقتباس
فممكن عمل ذلك ببساطة عن طريق انهاء العملية ثم مسح الملف

لم يحدث هذا ، شاهد الفلاش مرة اخرى ، البروسس تم حذف ملفه وهو يعمل ولم يتم عمل اغلاق له :wink:

عموما هذه النسخة من KernelDetective مازالت قيد التطوير ولم تنشر الا للـTesters فقط !

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#11
اقتباس
لم يحدث هذا ، شاهد الفلاش مرة اخرى ، البروسس تم حذف ملفه وهو يعمل ولم يتم عمل اغلاق له

معك حق

خطير البرنامج الملف اختفى والويندوز اكسبلورر عمل ريفرش والبرنامج لسة شغال ومرة وحدة اختفى

انا بعد ما عرفت هالشي نزلت البرنامج ومارضى يشتغل عندي (على فستا)

ظهرت لي مسج تقول ان البرنامج يعمل "حركة معينة" بشكل غير معتاد واغلق البرنامج!!

#12

حركة معينة ؟؟؟ :D

ما نص الرسالة بالضبط ؟

البرنامج يعمل على Vista وعلى الـSP1 لـVista ،، نسخة 32 طبعا .

يجب ان يعمل البرنامج بخصائص الـAdmin ،، استخدم Run as administrator .

تأكد انك تستخدم آخر نسخة :

http://www.at4re.com/files/Tools/Releases/...ective_v1.2.zip

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#13

السلام عليكم

حملت البرنامج من الرابط تبعك

وشغلت البرنامج وعملت run as administratorونفس الرسالة

وهذا هو النص

---------------------------

Microsoft Visual C++ Runtime Library

---------------------------

Runtime Error!

Program: C:\Users\Yousif\Downloads\Kerne...

This application has requested the Runtime to terminate it in an unusual way.

Please contact the application's support team for more information.

---------------------------

OK

---------------------------

تم تعديل هذه المشاركة بواسطة سيد فاضل في 2 يونيو 2009 في 22:41

#14

جيد هذا معناه أن البرنامج تم تحميله بالكامل فى الذاكرة أم ماذا ؟؟؟؟؟

كيف حدث هذا الأمر ؟؟

نزلت السورس كود الخاص بالبرنامج و لكنى لم أستع تشغيل ملف الsln :(

يبدو أنه كتبه بال2008 و أنا أعمل على ال2005 :(

Microsoft Visual Studio Solution File, Format Version 10.00

# Visual Studio 2008

لا إله إلا الله محمد رسول الله

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#15

انت بتتكلم عن ايه يا نور ؟ :blink:

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#16

أتحدث عن هذا يا محمد

اقتباس
هناك مشروع رائع لصديق اسمه ProcessHacker وهو شئ مثل ProcessExplorer لكن مفتوح المصدر وله ميزات عن PE في التعامل مع Infected Environments .

المشروع مكتوب بالـسي شارب والدرايفر باسي :

http://processhacker.sourceforge.net

و أيضا عن ملف الفلاش الذى أرفقته أنت

لا إله إلا الله محمد رسول الله

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#17

بالنسبة للمشروع فنعم تم اعتماد VS2008 ...

بالنسبة لملف الفلاش فقد تم اصدار هذا الاصدار من Kernel Detective وهو v1.3.0 يمكنك تحميل الاداة والتجريب بنفسك :

Kernel Detective v1.3.0

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#18

نعم

أنا أصدقك و لكن أريد أن أعلم كيف حدث هذا

لماذا أغلق البرنامج فجأة بدون أى رسائل خطأ من الويندوز

هل هذا طبيعى !!

الذى أستنتجه أن هذا الأمر تم من وراء الويندوز :lol: أليس كذلك

لا إله إلا الله محمد رسول الله

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#19
اقتباس
الذى أستنتجه أن هذا الأمر تم من وراء الويندوز أليس كذلك

Exactly

راجع المشاركة رقم #6

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#20
GamingMasteR كتب:
بالنسبة للمشروع فنعم تم اعتماد VS2008 ...

بالنسبة لملف الفلاش فقد تم اصدار هذا الاصدار من Kernel Detective وهو v1.3.0 يمكنك تحميل الاداة والتجريب بنفسك :

Kernel Detective v1.3.0

عمل رائع جدا :lol: , ماشاء الله عنك عضلات ال Kernel Detective تكبر يوم بعد يوم :wub:

النسخة الجديدة لا يتم اعتبارها فيروس من الانتي فيروس هل قمت بتغيير خوارزمية التشفير او الضغط؟

بالنسبة ل ProcessExplorer قمت بتحميله منذ مدة ولكنه يحتاج إلى الكثير من الوقت للدراسة و معرفة كيف تجري الامور...

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#21
اقتباس
النسخة الجديدة لا يتم اعتبارها فيروس من الانتي فيروس هل قمت بتغيير خوارزمية التشفير او الضغط؟

لا والله نفس الطريقة السابقة ... ارزاق :D

اقتباس
بالنسبة ل ProcessExplorer قمت بتحميله منذ مدة ولكنه يحتاج إلى الكثير من الوقت للدراسة و معرفة كيف تجري الامور...

اذا احتجت مساعدة في عمل reversing لجزء معين فأنا في الخدمة :wink:

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#22

شباب من فضلكم لنعد للموضوع الاساسي

انا ايضا حملت البرنامج المسمى Unlocker جربته على ملف يرفض الحدف وبالفعل استطاع البرنامج معرفة ال Processـالدي له علاقة بهدا الملف

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

ممكن اخي GamingMasteR توضح ردك اكتر , مادا تقصد بـ ExDupHandleTable & ShareAccess & FSD

هل من كتاب يشرح هده الامور ؟

انجليزي او فرنسي

#23

السلام عليكم

اخى GM هل برنامجك KD مفتوح المصدر و إن كان كذلك فإين الـ SC الخاص به ؟

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#24
soufianosse كتب:

شباب من فضلكم لنعد للموضوع الاساسي

انا ايضا حملت البرنامج المسمى Unlocker جربته على ملف يرفض الحدف وبالفعل استطاع البرنامج معرفة ال Processـالدي له علاقة بهدا الملف

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

هذه هي فكرة البرنامج :

GamingMasteR كتب:

الحل باختصار كالآتي (ابحث اكثر ستجد اكواد جاهزة) :

1- جرد جميع المقابض بالنظام (Call NtQuerySystemInformation + SystemHandleInformation).

2- عمل Duplicate للمقابض مقبض مقبض بحيث يمكنك استخدام هذا المقبض للحصول على معلومات اضافية للـObject .

3- جلب بيانات عن الـObject الخاص بالمقبض (NtQueryObject) بمعرفة نوعه (Process/File/Thread ..etc) .

4- اذا كان الكائن عبارة عن ملف يتم جلب اسمه ثم مقارنته بالملف الذي تريد اغلاقه .

5- يتم اغلاق المقبض عن طريق نفس الدالة NtDuplicateHandle مع العلم CloseSource .

#25

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

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

أخي soufianosse :

FSD اختصارا لـFilesystem Driver ، وهو الدرايفر المسؤول عن التعامل مع Filesystem معين مثل NTFS/FAT16/FAT32 او لـDisk معين او Network .

مثلا الدرايفر المسؤول عن التعامل مع الـNTFS هو Ntfs.sys والمسئول عن FATxx هو Fastfat.sys ، حيث يكون هو المسئول عن عمليات Open/Close/Cleanup/Read/Write/Delete الخ ...

ExDupHandleTable عبارة عن روتين في الكرنل لنسخ جدول المقابض ، تستخدم عادة عند انشاء process جديد اذا اردناه ان يرث الـhandles من الـParent process الخاص به .

ظروفي لا تسمح في الوقت الحالي بشرح بعض الجزئيات المهمة ، ربما في وقت لاحق اذا سمحت الظروف :blush:

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

من أفضل الكتب في الـFilesystem هو Windows NT File System Internals .

تم تعديل هذه المشاركة بواسطة GamingMasteR في 3 ديسمبر 2009 في 07:26

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

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

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