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

[ تمت الإجابة ]ممكن توضيح لل process handle

مغلق
بدأه الاخير زمانه في 5 ديسمبر 2009 · 3 رد · 1,489 مشاهدة · في أرشيف قسم Windows APIs
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

صراحة حصل لدي لبس في هذا الكلام

Process handle and process ID are two different things. A process ID is a unique identifier for the process in the system. A process handle is a value returned by Windows for use with other process-related API functions. A process handle cannot be used to identify a process since it's not unique

يعني ال handle الا يكون فريدا لكل بروسيس؟

هذا الكلام مأخوذ من icz-tuts

تم تعديل هذه المشاركة بواسطة الاخير زمانه في 5 ديسمبر 2009 في 14:49

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#2

السلام عليكم .

الـProcess ID هو رقم فريد لكل عملية في النظام ، يتم حفظها في جدول يسمى PspCidTable هو والـThread ID لكل الـthreads الموجودة بالنظام .

الـHandle هو رقم فريد لكل Object يمكن للعملية الحصول عليه ، مثل الـFiles/Keys/Threads/Processes/Events/Mutants الخ ...

يتم حفض الـhandles لكل عملية في جدول يسمى HandleTable يحتوي على جميع الـHandles الموجودة في العملية + مؤشرات للـObjects التي تشير اليها الـHandles + اشياء اخرى .

يمكن ان يكون الـhandles لنفس الـObject مختلفة في نفس العملية وفي غيرها .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#3

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

اهلا GM ،،

اللبس الذي حصل معاي ،، هو انه ذكر ان ال handle ليس شرط ان يكون وحيد.

الان انا لو اكون بروسيس جديدة بالدالة createprocess ، ستخزن معلومات ال handle & id في هذا السجل

typedef struct _PROCESS_INFORMATION {  
HANDLE hProcess;  
HANDLE hThread;  
DWORD dwProcessId;
  DWORD dwThreadId;
} PROCESS_INFORMATION,  *LPPROCESS_INFORMATION;

يعني اليس المفروض كل بروسيس لها handle خاص بها؟؟

اذن ما معنى الكلام المكتوب في مشاركتي الاولى

A process handle cannot be used to identify a process since it's not unique

تم تعديل هذه المشاركة بواسطة الاخير زمانه في 6 ديسمبر 2009 في 17:56

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#4

كل handle لأي object سيكون مختلف في نفس الـprocess او غيرها .

مثال :

Process 848 :
handle 0xc -> File "C:\log.exe"
handle 0x20 -> Port "unnammed"
handle 0x1c -> Process 648
handle 0x28 -> Process 324

Process 324 :
handle 0xc -> Process 648
handle 0x28 -> File "Device\SSC"

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

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

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