شكرا لك اخي GM على التوضيح .
لنعد الى هدا الرد ونحاول تطبيقه
الحل باختصار كالآتي (ابحث اكثر ستجد اكواد جاهزة) : 1- جرد جميع المقابض بالنظام (Call NtQuerySystemInformation + SystemHandleInformation). 2- عمل Duplicate للمقابض مقبض مقبض بحيث يمكنك استخدام هذا المقبض للحصول على معلومات اضافية للـObject . 3- جلب بيانات عن الـObject الخاص بالمقبض (NtQueryObject) بمعرفة نوعه (Process/File/Thread ..etc) . 4- اذا كان الكائن عبارة عن ملف يتم جلب اسمه ثم مقارنته بالملف الذي تريد اغلاقه . 5- يتم اغلاق المقبض عن طريق نفس الدالة NtDuplicateHandle مع العلم CloseSource .
لم يسبق لي تعاملت مع هده الدوال لكني سأحاول دالك من خلال هدا الموضوع وطبعا بمساعدتكم
اولا عملت الكود الاتي :
.386
.model flat,stdcall
option casemap:none
include windows.inc
include kernel32.inc
include user32.inc
includelib kernel32.lib
includelib user32.lib
DlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
.data
ntdll db"Ntdll.dll",0
nqsi db"NtQuerySystemInformation",0
.data?
hInstance HINSTANCE ?
.const
.code
start:
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke DialogBoxParam, hInstance,1001,NULL,addr DlgProc, NULL
invoke ExitProcess,eax
DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.if uMsg == WM_INITDIALOG
.elseif uMsg == WM_COMMAND
mov eax,wParam
.if eax == 1003
invoke LoadLibrary,offset ntdll
invoke GetProcAddress,eax,offset nqsi
mov ebx,eax
; NtQuerySystemInformation parametre
call ebx
.endif
.elseif uMsg == WM_CLOSE
invoke EndDialog,hWnd,0
.endif
xor eax,eax
Ret
DlgProc endp
end startالشطر الاساسي هو هدا
invoke LoadLibrary,offset ntdll invoke GetProcAddress,eax,offset nqsi mov ebx,eax ; NtQuerySystemInformation parametre call ebx
قمت بتحميل المكتبة Ntdll.dll تم جلب عنوان الدالة NtQuerySystemInformation ووضعته في EBX لان EAX يتغير . اضن ان هده هي الطريقة الصحيحة لاستدعاء هده الدوال ؟
هنا وقعت في مشكل وهو كيف امرر البارامترات عبر الامر Push فقد كنت متعودا على invoke
وامر اخر SystemHandleInformation لم اجد لها تعريفا
اضن ان لها بارامتران ProcessId الموجودة في SYSTEM_PROCESS_INFORMATION و مؤشر الى Structure لاستقبال المعلومات
تم تعديل هذه المشاركة بواسطة soufianosse في 12 ديسمبر 2009 في 13:39