ايران ويج

نسخه‌ی کامل: هوک کردن پیغام های ارسالی بین پنجره ها
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
این برنامه هر نوع کاری را که باعث فرستادن پیغام شود هوک کرده و پیغام آن را باز می گرداند

مثل حرکت ماوس،کلیک،فشردن یک کلید از کیبورد و هر کار دیگری

[attachment=2213]
سلام دوستان چندسوالی داشتم :
1.من یک تابع از DLL های ویندوز (advapi32) را می خواهم HOOK کنم باید از SetWindowsHookEx حتما استفاده کنم یا روش های دیگری هم هست آخه چند کد دیدم از این تابع استفاده نکرده بودند.
2.یک کد بدست آوردم برای هوک کردن اما این خطای Error 2 error LNK2019: unresolved external symbol "public: __thiscall CAPIHook::~CAPIHook(void)" (??1CAPIHook@@QAE@XZ) referenced in function "void __cdecl `dynamic atexit destructor for 'g_OpenProcess''(void)" (??__Fg_OpenProcess@@YAXXZ)
دوستان می توانند راهنمایی کنند
3.کسی با کد های داخل سایت .MADshi.net توانسته تابعی را هوک کند اگر توانسته و امکان هست بذاره .
(۰۲-تير-۱۳۹۲, ۱۵:۴۷:۴۱)sadeghpc نوشته است: [ -> ]1.من یک تابع از DLL های ویندوز (advapi32) را می خواهم HOOK کنم باید از SetWindowsHookEx حتما استفاده کنم یا روش های دیگری هم هست آخه چند کد دیدم از این تابع استفاده نکرده بودند.
تابع SetWindowsHookEx برای هوک کردن پیغامهایی هست windows_messageکه در ویندوز بین برنامه ها یا سیستم عامل و برنامه ها رد و بدل میشود هست
برای هوک کردن api از تکنیکهای دیگه مثل jump-hook iat_hook استفاده میشود که پیاده سازی اونها نیازمند اشنایی کامل با ساختار فایلهای exe -اشنایی با مدیریت حافظه و اجرای برنامه ها توسط سیستم عامل-اشنایی با اسمبلی در حد درک کد میباشد
نقل قول: 2.یک کد بدست آوردم برای هوک کردن اما این خطای Error 2 error LNK2019: unresolved external symbol "public: __thiscall CAPIHook::~CAPIHook(void)" (??1CAPIHook@@QAE@XZ) referenced in function "void __cdecl `dynamic atexit destructor for 'g_OpenProcess''(void)" (??__Fg_OpenProcess@@YAXXZ)
دوستان می توانند راهنمایی کنند
3.کسی با کد های داخل سایت .MADshi.net توانسته تابعی را هوک کند اگر توانسته و امکان هست بذاره .
کدهای داخل سایت مدشی با دلفی هست و کامپوننتش پولی هست باید خریداری کنید
البته کدش جزء بهترین کدهاست و پشتیبانی کاملی هم داره
تا اونجایی که من میدانم مگه تمام ویندوز براساس پیام نیست و هر تابعی بعد بوسیله سیستم عامل اجرا می شود.
من می خواهم یک کلید را در رجیستری کاربر نتواند هیچ تغییری روی آن بدهد
آیا شما با هوک کردن موافق هستید یا سرعت کامپیوتر را می گیرد شما چه روشی را موافقید ؟
برخی انتی ویروس هامانند nod این کار را انجام می دهندو سرعت را نمی گیرندآیا برای این است که در سطح کرنل این کار را می کنند یا روش دیگری دارند ؟AtAt
سایت .MADshi.net یه چیزی برای دانلود می گذارد اون نسخه trial است که فقط برخی توابع را می تواند هوک کند درست فهمیدم
در این سایت یعنی اثری از c++ نیست
با تشکر از پاسختونHappy
(۰۲-تير-۱۳۹۲, ۲۲:۳۳:۲۴)sadeghpc نوشته است: [ -> ]تا اونجایی که من میدانم مگه تمام ویندوز براساس پیام نیست و هر تابعی بعد بوسیله سیستم عامل اجرا می شود.
GUI ها و برنامه ها بوسیله پیامها با هم در ارتباطند وقتی روی یک برنامه کلیک میکنید در اولین مرحله یک پیغام wm_active به پنجره اصلی اون برنامه توسط ویندوز فرستاده میشه که به برنامه میگه برنامه جاری بهش انتقال داده شد این مدیریت پیغام رو تابع wndproc انجام میده که کارش پردازش این پیامهاست
توابع بوسیله سیستم عامل اجرا نمیشه توسط برنامه ها فراخوانی میشود
نقل قول: من می خواهم یک کلید را در رجیستری کاربر نتواند هیچ تغییری روی آن بدهد
آیا شما با هوک کردن موافق هستید یا سرعت کامپیوتر را می گیرد شما چه روشی را موافقید ؟
هم میتونید هوک کنید هم از تابع RegNotifyChangeKeyValue هم استفاده کنی که ادرس یک کلید رو بهش میدی وکه در صورت تغییر به شما پیغام میده
نقل قول: برخی انتی ویروس هامانند nod این کار را انجام می دهندو سرعت را نمی گیرندآیا برای این است که در سطح کرنل این کار را می کنند یا روش دیگری دارند ؟AtAt
سرعت کم میشه ولی اونقدری نیست که توسط کاربر قابل درک باشه-از سطح کرنل استفاده میشه چون دست انتی در سطح کرنل بازته و قدرت مانور بشتری داره و به منابع سیستمی بیشتری دسترسی داره
نقل قول: سایت .MADshi.net یه چیزی برای دانلود می گذارد اون نسخه trial است که فقط برخی توابع را می تواند هوک کند درست فهمیدم
در این سایت یعنی اثری از c++ نیست
با تشکر از پاسختونHappy
نسخه تریالش یونیت mad_hook ش رو محدود کرده و درون یک dll قرار داده که در صورت خریداری یونیت اصلی رو در اختیار خریدار قرار میدن این یک پک کامپوننت برای دلفی و c++ builder هست فکر نکنم برای c++ چیزی داشته باشه البته کد هوک api به زبان c++ رو نت زیاد هست
نقل قول: هم میتونید هوک کنید هم از تابع RegNotifyChangeKeyValue هم استفاده کنی که ادرس یک کلید رو بهش میدی وکه در صورت تغییر به شما پیغام میده

ببخشید ، باید این تابع رو توی مثلا یه تایمر فراخوانی کنیم؟ اگر آره که خوب اینجوری هم سرعت میاد پایین.
اینکه شما می گویید آشنایی باساختار های exe مگه توابع داخل dll نیستند پس ساختار های exe به چه کاری مان می آید.

این روش iat_hook هوک کلی یا برای هر برنامه ای که از اون تابع استفاده می کند باید مثلا تزریق را انجام بدهیم آخه یک کدی پیدا کردم که از برنامه داخل task manager محافظت می کرد تا بسته نشود اما باید داخل task manager تزریق می شد
این روش iat_hook آدرس تابع را عوض می کند درست متوجه شدم.
با تشکرClap
(۱۹-تير-۱۳۹۲, ۱۶:۵۷:۰۸)sadeghpc نوشته است: [ -> ]اینکه شما می گویید آشنایی باساختار های exe مگه توابع داخل dll نیستند پس ساختار های exe به چه کاری مان می آید.
وقتی سیستم عامل فایل PE را در حافظه لود میکند، بخش IMAGE_IMPORT_DESCRIPTOR را بررسی نموده و ساختار IMAGE_IMPORT_BY_NAME فایل های DLL و توابع موردنیاز را بدست آورده و در فضای مختص برنامه بارگذاری خواهند نمود. روت کیت ها هم بعد از parse نمودن فایل PE آدرس توابعی که میخواهد هوک کند را در IAT به آدرس توابع خود تغییر میدهد. این نوع هوک میشه گفت ابتدایی هست و راحت میشه با فراخوانی داینامیک توابع بی تاثیر نمود.


PE یک ساختاره که فایل های مثل EXE و DLL از اون پیروی میکنند. پس ساختار جفت فایل PE هست.
(۰۹-تير-۱۳۹۲, ۱۲:۱۱:۴۵)ترانسپورتر نوشته است: [ -> ]
نقل قول: هم میتونید هوک کنید هم از تابع RegNotifyChangeKeyValue هم استفاده کنی که ادرس یک کلید رو بهش میدی وکه در صورت تغییر به شما پیغام میده

ببخشید ، باید این تابع رو توی مثلا یه تایمر فراخوانی کنیم؟ اگر آره که خوب اینجوری هم سرعت میاد پایین.
خیر شما یک event تعریف میکنید که در هنگام ایجاد تغییر در اون کلید این رویداد توسط سیستم عامل فراخوانی بشود
http://msdn.microsoft.com/en-us/library/...85%29.aspx
http://delphi.about.com/od/windowsshella...52003b.htm
(۱۹-تير-۱۳۹۲, ۱۶:۵۷:۰۸)sadeghpc نوشته است: [ -> ]اینکه شما می گویید آشنایی باساختار های exe مگه توابع داخل dll نیستند پس ساختار های exe به چه کاری مان می آید.
این حرف شما به خاطر اشنا نبودن به مبانی سیستم عامل ویندوز هست
هر سیستم عاملی یک فایل اجرایی خاص داره مثلا ویندوز فایلهای PE که به معنی Portable executable هستند و در لینوکس معروف به ELF هستن در ویندوز فایلهای exe,dll,ocx,sys از دسته فایلهای pe یا اجرایی هستن که ساختار مشابه دارند و ویندوز در برخورد با این فایلها اونها رو توسط لودر ویندوز اجرا میکنه
نقل قول: این روش iat_hook هوک کلی یا برای هر برنامه ای که از اون تابع استفاده می کند باید مثلا تزریق را انجام بدهیم آخه یک کدی پیدا کردم که از برنامه داخل task manager محافظت می کرد تا بسته نشود اما باید داخل task manager تزریق می شد
این روش iat_hook آدرس تابع را عوض می کند درست متوجه شدم.
با تشکرClap
سیستم عامل وقتی یک برنامه اجرا میشه یک فضایی از رم رو بهش اختصاص میده و با استفاده از یک سری الگوریتم تا 2 گیگ فضای مجازی(فضای ادرس دهی)برای اون پروسه ایجاد میکنه هر پروسه مالک فضای خودش هست نمیتونه به فضاهای ادرسی پروسه دیگه برای اجرا دسترسی داشته باشه یعنی شما نمیتونی به پروسه مقصد بگی این کد رو اجرا کن چون کد شما در فضای ادرسی پروسه شماست نه اون پروسه برای اجرا شما مجبورید کد مورد نظر رو به فضای ادرسی اون پروسه منتقل کنید تا اون پروسه رو بتونید مجبور به اجرای اون بکنید
در مورد IAT هم جناب godvb کامل توضیح دادن

شما برای درک این مسایل نیاز به یک سری پیش زمینه دارید 1.طرز کار سیستم عامل ویندوز مثل مدیریت حافظه و تخصیص اون(پروسس و ترد چی هستن چگونه تولید واجرا میشن و چگونه مدیریت میشن) و اینکه لودر ویندوز چطور کار میکنه و چگونگی روند اجرای یک برنامه 2.اشنایی با ساختار فایلهای pe 3.اشنایی با زبان اسمبلی
با تشکر از پاسخ دوستان
اگر بخواهم اطلاعاتم در هوک و ساختار سیستم زیاد شود چه کاری باید انجام دهم خودآموز یا جایی کلاس بروم.
مرجع فارسی که فکر نکنم وجود داشته باشد درسته ؟
یه جایی خوندم که آنتی ویروس ها با معرفی خودشان به عنوان یک برنامه مهم به سیستم عامل باعث می شوند که سیستم عامل از آنها محافظت کند این حرف درست است؟
نقل قول: این نوع هوک میشه گفت ابتدایی هست و راحت میشه با فراخوانی داینامیک توابع بی تاثیر نمود.
شما پس چه نوع هوکی را پیشنهاد میکنید تا بروم روش کار کنم(یک تابع را می خواهم هوک کنم) لطفا):At

نقل قول: سیستم عامل وقتی یک برنامه اجرا میشه یک فضایی از رم رو بهش اختصاص میده و با استفاده از یک سری الگوریتم تا 2 گیگ فضای مجازی(فضای ادرس دهی)برای اون پروسه ایجاد میکنه
فکر کنم سیستم عامل کلا 2 برابر حافظه رم به عنوان حافظه مجازی در نظر میگیرد.
صفحه‌ها: 1 2