PDA

View Full Version : چطور میشه توابع سیستمی رو زیر نظر گرفت؟



mk8800
سه شنبه 09 آذر 1389, 00:52 صبح
سلام خدمت همه دوستان
میخواستم بپرسم کسی میدونه اگه بخوایم یکی از توابع سیستمی رو دیباگ کرد یا یه طوری زیر نظر گرفت که وقتی فراخوانی میشه بشه مشخصات برنامه ی فرا خواننده و اطلاعات ارسال شده به او تابع رو به دست اورد؟
البته منظور من انجام این کار با کد نویسی و از توی برنامه است
مثلا تابع RegistryOpenKey
دوستان حرفه ای کمک کنن.

Mehdi Asgari
سه شنبه 09 آذر 1389, 10:28 صبح
تابع مورد نظر رو در سطح کرنل هوک کن (به عنوان مثال ZwOpenKey )

r00tkit
سه شنبه 09 آذر 1389, 11:36 صبح
سلام

سوال: (چون تقریبا" با سوال بالا یکیه تاپیک جدا ایجاد نکردم)

تو سطح یوزر وقتی ما یه تابع ای رو hook می کنیم از IAT استفاده می کنیم که این مربوط به یک پروسس هستش ولی من می خوام مثلا" یه تابع رو جوری hook کنم که تو تمام پروسس ها که فلان تابع رو call کردن تو یه dll خاص یا یه dll معموای مثل kernel32.dll تابع من اجرا بشه
بعضی از توابع معادل سطح کرنل ندارن و کل کارشون رو تو همون سطح یوزر انجام می دیم و یا یه dll شخص سوم می خوام هر برنامه ای از یک تابع موجود در این dll استفاده کرد به جاش یه تابع دیگه اجرا بشه

یه جور hook سراسری برای یه تابع در سطح یوزر

-----------
فکر کنم نشه چون تنها call table موجود در use mode این IAT هستش که متعلق به یک process هستش که کلا" با SSDT و امثالش فرق داره

مگه اینکه دونه دونه تمام پروسس ها رو چک کنیم و اگه برنامه ای از این DLL استفاده می کرد IATلش رو تغییر بدیم

mk8800
سه شنبه 09 آذر 1389, 17:37 عصر
سلام
ممنونکه جواب دادی ولی من چیزی درباره هوک کردن نمودونم میشه یه نمونه کد بذاری؟

mk8800
دوشنبه 15 آذر 1389, 23:02 عصر
سلام خدمت دوستان همه دوستان
آق مهدی زحمت کشید و یه راهنمایی کوچیک کرد منم پرس و جو کردم به این ها رسیدم :
http://win32assembly.online.fr/tut24.html
http://www.codebreakers-journal.com/...indows_API.pdf

و چند تا فایل که یکجا جمعشون کردم
API Hi Jack
و ...

مخم داره میترکه ببخشید اگه مشکلی بود چون من خوب بررسیشون نکردم در ضم فایل های htm رو با اوپرا یا فایرفوکس باز کنید.

با تشکر از اقای کشاورز

r00tkit
چهارشنبه 17 آذر 1389, 17:21 عصر
سلام

مقالهی شما(یعنی لینک بالا اولیش ،دومی مشکل داره ) هیچ ربطی به سوالتون و راهنمایی اقا مهدی نداره !!

شما باید در سطح کرنل hook کنی (SSDT )

mk8800
دوشنبه 22 آذر 1389, 17:46 عصر
اينم بقيه فايل ها البته تو صفحه دوم هم هست ولي گفتم اينجا هم باشه بهتر:

اینم لینک های تصحیح شده سرعت سایت واقعا مزخرف شده مندم بیشتر از 50 بار از خونه زور زدم ولی نمیشه اپلود کرد تو دانشگاه هم که سرعت سایت در حد لاکپشت بود
http://win32assembly.online.fr/tut24.html
http://www.codebreakers-journal.com/downloads/cbj/2004/CBJ_1_2_2004_HolyFather_Hooking_Windows_API.pdf

r00tkit
سه شنبه 23 آذر 1389, 00:31 صبح
اولا hook سطح یوزر و تابع SetWindowsHookEx چه ربطی به متن اقا مهدی داره دوما" hook کردن پیام چه ربطی به intrecept کردن function ها داره ؟

mk8800
سه شنبه 23 آذر 1389, 08:57 صبح
منو ببخش ولي به خاطر مشكلاتي كه داشتم خيلي حالم گرفته بود وگرنه جسارت نميكردم
خوب ببين من اصلا منظورم هوك اونم سط يوزر نبود چون تا اونجايي كه من فهميدم نهايتا به درد كار روي مسيج ها ميخوره
فايلها رو هم امروز به طور كامل ميزارم امروز اوضاع اينترنت بهتره

اينم يك سري ديگه از فايل هايي كه جمع كردن در مورد مبحث هوك و فايل API Hi-Jack كه نتونسته بودم تو پست قبلي بزارم:

خب در پايان لازم ميدونم چيزايي كه ياد گرفتم رو هم براي بقيه توضيح بدم البته نه براي پيش كسوتان:
ببينيد دوستان اصولا عمل هوك كرد براي ديباگينگ به وجود اومده و بعد كاربرد هاي فراوان ديگه اي پيدا كرده
هوك كردن همان طور كه دوستان گفتن دو سطح داره :
سطح يوزر: كه شما با استفاده از API هاي ويندوز ميتونيد روي message هاي برنامه ها كنترل داشته باشيد
سطح كرنل(يا همون هسته ي خودمون): كه شما بايد نوشتن روي ادرس يك تابع (ادرسي كه به اسم تابع اشاره داره)و تغيير اون به ادرس دلخواهتون ميتونين به جاي اجراي اون تابع خودتون رو اجراكنين
قضيه از اين قراره كه وقتي فايل يك API يا هر DLL ديگه لود ميشه فقط يه با لود ميشه و وقتي برنامه هاي ديگه دوباره لودش ميكنن از همون اولي استفاده ميكنن كه البته تو مورد كمي شك دارم ولي چيز كه من فهميدم اينه كه با هود در سطح كرنل شما همون حاقظه اشغال شده اوليه رو باز نويسي ميكنيد تا هر برنامه يا تابعي اون رو فرا خواني كرد تابع مورد نظر شما اجرا بشه اگه بنده اشتباه ميكنم پيشكسوتا كمك كنن

Mehdi Asgari
سه شنبه 23 آذر 1389, 13:12 عصر
فصل پنج Rootkit Arsenal یه پروژه داره به نام HookSSDT که هم کد کاملش رو انتهای کتاب آورده، هم توضیحاتش در متن هست. همون چیزیه که میخوای (البته برای مقاصد زندگی واقعی باید کمی تغییرات درش بدی، ولی اصول همونه که در کتاب مطرح شده)
برو مطالب رو بخون، کد ها رو نگاه کن و تست کن، بعد اگه مشکلی بود دوباره بیا مطرح کن
پ ن: علت ارجاع کاربران به کتاب فوق، به این خاطر نیست که تنها منبع موجوده (منابع زیادی هستن، چه کتاب چه وبلاگ و چه سورس کد)، بلکه به دلیل متن خوانا و قابل فهم نویسنده اشه که باعث میشه مطالب پیچیده تر توسط افراد فانی مثل اینجانب قابل درک تر باشه