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

[ تمت الإجابة ]أسئلة بين System Hooks و API Hooks

مغلق
بدأه Yousof في 30 أبريل 2006 · 15 رد · 4,089 مشاهدة · في أرشيف قسم Windows APIs
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

بدلا من وضع الأكواد كما قال DeltaAziz الآن لدي بعض الأسئله ..

من خلال قراءتي وجدت أن هناك طرقا كثيرة تمكنك من خلالها عمل Hook لل على سبيل المثال:

(1) Windows Subclassing

(2) The stub Approach - Proxying DLL

(3) Code Overwriting - Detouring

(4) BreakPoint via Debugger

(5) Altering the IAT

بعض هذه الطرق تستخدم ال SetWindowsHookEx و البعض الآخر يستخدم CreateRemoteThread

ما الفرق بين الطريقتين و هل صحيح أن SetWindowsHookEx تستعمل فقط لعمل Hook لل كيبورد و الماوس؟

ما هو الفرق بين ال Hooking و ال Wrapping؟

لماذا نستخدم هذا الكود في البرنامج؟

#pragma comment(linker, "/SECTION:SHARED,RWS") 
#pragma data_seg("SHARED") 
HANDLE hInstance = (HANDLE)NULL;  //Global instance handle for DLL 
HHOOK hHookSys = NULL;    //Handle for WH_SYSMSGFILTER hook 
HHOOK hHookMse = NULL;    //Handle for WH_MOUSE hook 
#pragma data_seg()

و شكرا ..

#2

أيضا:

قرأت أنه لا نستطيع استخدام CreateRemoteThread() in Windows 9x

ماذا نفعل لعمل هوك لهذا الVersion ?

#3

سؤال ثاني:

لو قرأتم هذا المقال:

There are two pratical ways to do API hooking

1 - Hook the API at the IAT:

GetModuleHandle(NULL) gives you the PE (Portable Executable) header start for it, if you wish to hook one of the DLL`s the process owns instead of hooking the process use GetModuleHandle("dllforhook.dll")

This method is valid for one or a few modules (a process and one of it`s DLLs in example

2 - Find the API`s address in the DLL used for it and change the first bytes to

JMP MyFunction/RETN, Save the bytes there if you plan on re-using it later,

The second method goes for general hooking in a process so the process and all of it`s DLLs share the exact same code in an easy way. Very useful for "All Process" hooks.

على حسب معلوماتي المتواضعه أنك تستطيع عمل ال JMP to your function in the first method? هل هذا صحيح؟

هلا تكرمتم بشرح هذا السطر:

GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA")

و جزاكم الله خيرا..

#4

لدي سؤال واحد فقط : هل قرات قواعد المشاركة فى المنتدي؟

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#5

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

ان كنت تقصد عنوان الموضوع .. فان الموضوع يتعلق ببرمجة الويندوز و بما أن هناك العديد من الأسئله فمن الصعب ايجاد عنوان مناسب يضم كل الأسئله المطروحه ..

أما ان كنت تقصد شيء ثاني .. فنورنا الله ينور عليك :)

لقد جاوبتك على سؤالك و حان دورك لتجاوبني على أسئلتي :)

جزاك الله خيرا ..

#6

هو قصده على البحث الأول و على حكاية وضع أكثر من سؤال في موضوع واحد :)

يعني من الأفضل إنك تدور على الحاجات دي يمكن تكون موجودة و لو مش موجودة يبقى الأحسن تحط لكل سؤال موضوع واحدة واحدة بعنوان مناسب لكل سؤال

#7

يا أخ اسامه ..

صدقني و أحلف بالله أني قرأت معظم المواضيع المتعلقه بال API hook في هذا المنتدى و في غيره مما سبب لي بعض ال Confusion :(

البعض يقول شيء و الآخر يقول الضد .. يعني لم يرسوا على بر :)

بعدين المواضيع المتعلقه بال Hook في هذا المنتدى بالدلفي و أنا لا أعرف هذه اللغه ..

يعني مساعده بسيطه لوجه الله لن تضر ان شاء الله و سوف تحسب في ميزان حسناتكم يوم القيامه ..

تم تعديل هذه المشاركة بواسطة Yousof في 30 أبريل 2006 في 21:52

#8

أخي العزيز Yousof :

أولاً وقبل كل شئ لا بد من أن تفصل بين System Hooks و API Hook ...

أنصحك أن تبدأ بتعلم System Hooks أولاً ثم تنتقل لـ API hooks حتى لا تختلط عليك الاشياء ...

وقبل هذا كله لا بد أن يكون لديك معلومات أساسية عن API programming و Low Level Programming .

قارئ الموضوع يشعر في الأول أن الموضوع ممتاز وأن ما توصلت اليه في هذا المجال شئ جيد لكن ...

سؤال كهذا :

اقتباس
هلا تكرمتم بشرح هذا السطر:

GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA

يجعل القارئ يشعر أن كثير من الأساسيات لم تتعلمها بل يشعر أنك لم تجتهد لتتعلمها وأنك لم ترد صعود السلم من الدرجة الأولى وهذا شئ سئ ...

اقتباس
بعدين المواضيع المتعلقه بال Hook في هذا المنتدى بالدلفي و أنا لا أعرف هذه اللغه ..

الفكرة واحدة في كل اللغات ...

من الصعب ان نفتح نقاش في هذا الموضوع والاساسيات متروكة ...

اقتباس
لماذا نستخدم هذا الكود في البرنامج؟

#pragma comment(linker, "/SECTION:SHARED,RWS") 
#pragma data_seg("SHARED") 
HANDLE hInstance = (HANDLE)NULL;  //Global instance handle for DLL 
HHOOK hHookSys = NULL;    //Handle for WH_SYSMSGFILTER hook 
HHOOK hHookMse = NULL;    //Handle for WH_MOUSE hook 
#pragma data_seg()

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

كما قلت أولا عليك بمسك الأساسيات ثم قراءة المقالات جيداً ومحاولة البحث عن كل نقطة بنفسك لانها كلها موجود شرح لها ...

تذكر قبل قراءة API hooks عليك بالأساسيات ...

لن تجد مواضيع في المنتدى تشرح API hooks بشكل مفصل لأنه من الصعب أن يتم وضع مثل هذه المواضيع المتقدمة والاساسيات لم يتم التطرق لها .

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

===

اقتباس

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

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

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

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

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

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

===

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

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

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

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

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

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

#9

السلام عليكم اخ cipher

اولا شكرا على الرد

اما بلنسبة الى GetModuleHandle and GetProcAddress

فانا اعرف ماذا يفعلان الان ولكن عند استخدامهما في عملية ال Hook لاستبدال الدالة الاصلية الموجوده في Portable excutable in idata section و عمل JMP الى دالة الهوك الموجوده في على سبيل المثال (mydll.dll) و من ثم استدعاء الداله الاصليه:

do we call the origional API function or we just pass the

modified parameters to it?

المشكله كما قلت في اختيار الطريق الصحيح للتعلم

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

هل تقصد بال System Hook بان نستخدم دالة SetWindowsHookEx

وبال API hook هو استخدام CreateRemoteProcess to inject DLL

into the address space of target process

قرات لك في موضوع ما بان الكثير من المبرمجين يخلط بين ال System Hook و API hook حبذا يا اخ cipher تعطي مثال على كلا الموضوعين او تضع رابط لموضوع ال System Hook و رابط لموضوع ال API Hook

شكرا جزيلا لك

لولا حبي لتعلم هذا الموضوع لما وضعت الاسئله وانتم اخوتي و فيكم الخير و البركه

#10

حاول تقرا كتب عن Assembly و عن Computer Architecture و Operating System Concepts و ركز على الأخيرة دي بالذات

#11

شكرا اخ اسامه ان شاء الله سابدا بها من الان

#12

ما أعنيه بـ System Hooks :

http://msdn.microsoft.com/library/default....owing/hooks.asp

http://msdn.microsoft.com/library/default....sdn_hooks32.asp

اقتباس
a point in the system message-handling mechanism

API hooks :

هنا نتكلم عن API Functions

مقال جيد لـ Madhi

http://help.madshi.net/ApiHookingMethods.htm

طبعاً هناك العديد من الكتب والمقالات تحدثت عن الجزئيتين السابق ذكرهما أشهرها كتابMatt Pietrek و كتاب Jeffrey Richter ...

بالنسبة لـ DLL injection فهناك العديد من الطرق احداها system hooks ... ستجد بعض تلك الطرق في احد الشفرات المرفقة في احد المواضيع في قسم الدلفي (موضوع لـ DeltaAziz أو Romanof ما بتذكر )...

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

في هذه المواضيع لن يفيدك سوى أنت ... فقط عليك المزيد من القراءة والمثابرة و التطبيق ( في البداية في اليوم الواحد اذا الكمبيوتر لم تحدث له 10 مرات اعادة تشغيل أو system crash فإنك لم تكن جاداً ...).

أي تساؤلات الشباب في الفريق ما راح يقصروا إن شاء الله ...

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

===

اقتباس

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

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

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

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

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

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

===

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

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

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

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

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

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

#13

السلام عليكم

اقتباس
طبعاً هناك العديد من الكتب والمقالات تحدثت عن الجزئيتين السابق ذكرهما أشهرها كتابMatt Pietrek و كتاب Jeffrey Richter ...

من اين احصل على الكتاب الاول ،

cipher

هل تملكه ؟

طيب اذا كن اطلعت عليه ،

هل هو جيد ؟

اذا امكن اعطيني اخي ولو اسم الكتاب ومكان التحميل ،

اظنني سأجده في موقع الامازون ؟؟

بس بكم ؟؟ :o :o

واذا كنت تعرف اخي اي كتب اخرى تتكلم عن هذا الشيء او ال kernel hook

فأرجو ان تدلني عليها ،،

طبعا هناك كتب كثيرة ولكن المشكلة ان الواحد لا يعرف ما محتواها ،

وكما يقال اسأل مجرب

وانا ما صارلي الا كم شهر بهذا الموضوع وانت ماشا الله عليك من سنة 2003 تكتب بهذا الموضوع !!

،،

تحياتي

تم تعديل هذه المشاركة بواسطة الاخير زمانه في 28 أكتوبر 2006 في 11:28

/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/

 

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

#14

الكتابين

Windows 95 System Programming Secrets

Programming Applications for Microsoft Windows

لا أعرف وصلة مباشرة لتنزيلهما على الأقل في الوقت الحالي

بإمكانك الإطلاع على المقالات في codguru و codeproject فهي ممتازة ...

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

===

اقتباس

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

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

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

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

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

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

===

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

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

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

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

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

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

#15

الكتاب الثاني كنت قد حملته من موضوع اخونا Asm4all

الكتاب الاول اظني كن قرأت عنوانه لكنه كان ليس free !!

اذا اضطررت سأشتريه ،، كحل اخير !!!!؟؟!!

لقد قرأت من هذه المقالات وبقي الكثير ،

وايضا لدي كتاب يتكلم عن ال rootkit

ايضا هو ممتاز احاول ان اقرء به وهو يتكلم عن ال kernel hook وكيفية كتابت درايفر

،

cipher

سأبعث لك على الخاص ،،

لكن ليس الان ،، ربما بعد ايام

ارجو ان لا ازعجك ،

تحياتي

/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/

 

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

#16

الكتاب موجود على هذه الرابط فى اخر مشاركة

http://www.winapi.co.kr/pds/doc/doc.htm

ويوجد ايضاً ملف مظغوط يحتوى على الكود المصدري التابع للكتاب..

والسلام عليكم

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

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

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