![]() |
|
إستدعاء & إستخدام Native Api من الـ User Mode - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي التقنية (https://delphi4arab.net/forum/forumdisplay.php?fid=6) +--- قسم : دلفي والتعامل مع النظام و الذاكرة (https://delphi4arab.net/forum/forumdisplay.php?fid=20) +--- الموضوع : إستدعاء & إستخدام Native Api من الـ User Mode (/showthread.php?tid=2704) |
إستدعاء & إستخدام Native Api من الـ User Mode - TF6M - 13-01-2011 السلام عليكم و رحمة الله و بركاته - يمكن إستدعاء روتينات Ntxxx من الـ User Mode , دون الحاجة إلى تصريح تصدير الدالة من NtDLL آلية العملية بسيطة , يتم الإنتهاء من الـ SysTem Call الى قلب النظام (Win32.sys & NtosKrnl.exe) حيث يحدد طبيعة الإستدعاء (Gui or Native) , على أساس قيمة ServiceTable (.) - يتم تمرير بيانات الإستدعاء عن طريق SysEnter = $2E , تعتبر بوابة الكيرنل مود و كتعريف بسيط هي عبارة عن روتين ينفذ عن إستدعاء Ntxxx/Zwxxx أو عند تنفيذ المقاطعة Int $2E من اليوزر مود(..) - للـ SysEnter , بارامتران الأول يسجل في EAX و الثاني في الـ EDX EAX سيؤشر إلى ترتيب الدالة المستهدفية أو الموافقة لـ SysCall في ServiceTable EDX سيؤشر إلى بارامترات الدالة المستهدفة المحجوزة في الـ Stack - مثال , دالة NtTerminateProcess , تنقيح المكتبة NtDLL بـ IDA Pro كود : .text:7C91DE50 public ZwTerminateProcess
.text:7C91DE50 ZwTerminateProcess proc near
.text:7C91DE50
.text:7C91DE50 mov eax, [COLOR=Red]101h[/COLOR] ; NtTerminateProcess
.text:7C91DE55 mov edx, [COLOR=Red]7FFE0300h[/COLOR]
.text:7C91DE5A call dword ptr [edx]
.text:7C91DE5C retn 8
.text:7C91DE5C ZwTerminateProcess endpكود : Asm
push [COLOR=Blue]Dword(-1)[/COLOR]
Push[COLOR=Blue] 0[/COLOR]
mov eax, [COLOR=Red]101h[/COLOR] // TerminateProcess
mov edx,[COLOR=Red]$7FFE0300[/COLOR]
call dword ptr [edx]
ret 8
End;- أيضا يمكن إستغلال الطريقة من الكيرنل مود , لم أحضر مثال بعد بالتوفيق,, إستدعاء & إستخدام Native Api من الـ User Mode - syscall - 15-01-2011 السلام عليكم انا ضد استخدام رقم خدمة من جدول الخدمات الخاص بنظام التشغيل بشكل مباشر لماذا ؟ إليك الجواب كود : http://www.metasploit.com/users/opcode/syscalls.htmlوقد ذكرتني بمقالة قرأتها يجب ان تتطلع عليها وتحديدا الفقرة Operating system differences اليك المقالة كود : http://www.symantec.com/connect/articles/windows-syscall-shellcodeإستدعاء & إستخدام Native Api من الـ User Mode - TF6M - 15-01-2011 - رقم الخدمة يكون على أساس دقيق , لأنني قمت بتنقيح الـ NtDll , هناك طريقتين كإظافة : 1- إستخراج ترتيب الدوال من الـ NtDLL راجع هذا الموضوع : هنا 2- يمكن التحقق من إصدار النظام : GetOSinfo تحديد نسخة النظام & BuildNumber على أساس الإصدار يتم , إرفاق الترتيب المناسب : هنا - 'لذلك يجب استخدام تصريح التصدير فهذا اضمن لنا للتوافق مع كافة انظمة تشغيل مايكروسوفت ' وهذا ما أردت الإستغناء عنه , دون اللجوء إلى إعادة التصريح & تنفيذ تعليمات أقل & سهولة تتبع الدالة (ASM) . [url=http://www.delphi4arab.net/forum/showthread.php?tid=4125][/url] |