![]() |
|
استفسار عن عمل هوك لدالة CreateWindowEx - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : استفسار عن عمل هوك لدالة CreateWindowEx (/showthread.php?tid=4901) الصفحات:
1
2
|
استفسار عن عمل هوك لدالة CreateWindowEx - ALmuhhnad - 25-01-2013 السلام عليكم ورحمة الله وبركاتة في البدااية لا اعرف اسااسيات الهوك .. لكني اعرف انه تغيير عمل دالة او شيء ما ليعمل لصالحنا ![]() ... الحالة ... لدي لعبة تعمل بنمط Full window mode ... و**** ان اجعلها Window mode فعندما قمت بتنقيح اللعبة وجدت اني استطيع عمل ذلك عن طريق الدالة CreateWindowEx فعندما يتم إنشاء النافذة عن طريق CreateWindowEx يتم إعطائها بارمترات ... وعندما اقوم بتغيير بارمتر dwStyle واجعل قيمته 0 احصل على Window mode وذلك كان في OllyDBG الدالة CreateWindowEx كود : HWND CreateWindowEx(
DWORD dwExStyle, // extended window style
LPCTSTR lpClassName, // pointer to registered class name
LPCTSTR lpWindowName, // pointer to window name
DWORD dwStyle, // window style
int x, // horizontal position of window
int y, // vertical position of window
int nWidth, // window width
int nHeight, // window height
HWND hWndParent, // handle to parent or owner window
HMENU hMenu, // handle to menu, or child-window identifier
HINSTANCE hInstance, // handle to application instance
LPVOID lpParam // pointer to window-creation data
);والآن إذا اردت عمل برنامج يقوم بتغيير نمط نوافذ الألعاب من Full window mode إلى Window mode ... كيف افعل ذلك ؟؟ استفسار عن عمل هوك لدالة CreateWindowEx - SMP3 - 26-01-2013 السلام عليكم أخي العزيز ليس هناك داعي لاستخدام الهوك يكفي أن تحصل على مقبض النافذة و تطلع على الدالة SetWindowPos الطريقة الثانية استخدام الدالة WriteProcessMemory (مبدأ عمل اللودر ) :: من خلال Olly أحصل على عنوان dwStyle ثم قم بتغييره بالدالة السابقة .. الطريقة الثالثة تعتمد على الكتابة على اللعبة في القرص الصلب :: مبدأ عمل الباتش حاول دائما اللجوء الى الطرق السهلة و المختصرة لأداء مهمتك ويفضل أن تستخدم الطريقة الأولى لأنها لا تعدل بشكل مباشر في الذاكرة لذلك فهي آمنة استفسار عن عمل هوك لدالة CreateWindowEx - ALmuhhnad - 26-01-2013 قمت بتنقيح بعض الألعاب بعضها يمر بالدالة SetWindowPos والبعض الآخر لا ينفذها ... اي انها لن تفيدني مع جميع الألعاب !ام هل تقصد ان استعملها من خلال برنامجي هكذا ... ؟ كود : SetWindowPos(........);استفسار عن عمل هوك لدالة CreateWindowEx - SMP3 - 27-01-2013 ALmuhhnad كتب :هل تقصد ان استعملها من خلال برنامجي هكذا ؟نعم هذا ما أقصده .. بمجرد حصولك على مقبض نافذة اللعبة فستعمل الدالة ان شاء الله +++ زائد ألغ فكرة الهوووك : هل تعلم أنه عندما تقوم بعمل الهووك على الدالة CreateWindowEx ستحتاج الى dll تقوم بحقنها في بروسس اللعبة ثم عند مناداة الدالة CreateWindowEx يتم العبور أولا عن دالتك وكما تعلم فأغلب الكونترول تمر على الدالة CreateWindowEx مثل (الفورم , Button , Edit) .. هل ستقوم بتغيير dwStyle لجميع هذه الكونترولات أم ماذا ؟ وان أصريت على التعديل على dwStyle فيمكنك أن تستعمل WriteProcessMemory استفسار عن عمل هوك لدالة CreateWindowEx - ALmuhhnad - 27-01-2013 السلام عليكم ورحمة الله وبركاتة عندما قمت بإستعمال : كود : SetWindowPos();ChangeDisplaySettings ... كي لا يتم تغيير ابعاد الجهاز الخاص بي ShowWindow ... كي لا يتم تصغير نافذة اللعبة عندما اعمل على برنامج آخر ولم اذكر اني أريـ د ان اعمل برنامج يقوم بإحتواء النافذة ... الهدف وجعلها Window mode بالمناسبة جربت إستعمال الدالة ChangeDisplaySettings من خلال برنامجي ولم تنفع عندما تكون اللعبة تعمل لا اعرف اين المشكلة ... لكن بدون اللعبة فالدالة تعمل ![]() بالنسبة للهوك لا بأس بإستعمال dll لاحظ اني اتعامل مع العاب وليس برامج لذلك ستعمل الدالة CreateWindowEx فقط على النافذة حيث انها المكون الوحيد ولا يوجد Button لدي احسااس انك تريد ابعادي عن الهوك ... لسبب اجهله p: ارفقت سرووس كود برنامجي لكي ترى إلى اين وصلت بالضبط ( الكود ربما تجده معقد قليلاً لانه طور البرمجة )كنت افكر بطرحه متكاملاً لكني ساطرحه الآن ... ملاحظة : تم تطويرة من خلال DXE3 استفسار عن عمل هوك لدالة CreateWindowEx - SMP3 - 27-01-2013 ALmuhhnad كتب :السلام عليكم ورحمة الله وبركاتةاحساسك في محله .. بالطبع أريـــــد ابعادك عن الهوووك (فأنت تريـــد استعمال Remote hooks)لأنها الطريقة الأخيرة التي نلجأ اليها .. قد تتسائل لماذا ؟ اليك الجواب : كود : When you install hooks, remember that they affect system performance. System-wide hooks are the most notorious. Since ALL related events will be routed through your filter function, your system may slow down noticeably.ALmuhhnad كتب :بتغيير بارمتر dwStyle واجعل قيمته 0 احصل على Window mode وذلك كان في OllyDBGبما أنك حصلت على Window mode , فاستخدم الدالة SetWindowLong مع تمرير البرامتر 0 PHP كود : SetWindowLong(WindowGameHandle,GWL_STYLE,0); استفسار عن عمل هوك لدالة CreateWindowEx - ALmuhhnad - 27-01-2013 وعليكم السلام ورحمة الله وبركاتة كود : SetWindowLong(WindowGameHandle,GWL_STYLE,0);بالنسبة لـ : إقتباس :When you install hooks, remember that they affect system performance. System-wide hooks are the most notorious. Since ALL related events will be routed through your filter function, your system may slow down noticeably.هل هذا فقط مع دوال النظام API ام حتى الدوال الخاصة بالبرامج ؟؟ ايضاً عند إستعمال الامر ChangeDisplaySettings لكي ارجع ابعاد حاسوبي لما كانت عليه قبل تشغيل اللعبة ... بعض الالعاب تختفي نوافذة وبعضها يحصل معها Crash... إلخ لذلك اضن ان الحل الاخير هو عمل Hook ... إن لم يكن لديك مانع ان تعمل لي مثال صغير عن طريقة وضع النافذة بنمط Window mode بستعمال : كود : SetWindowPos();
SetWindowLong();
استفسار عن عمل هوك لدالة CreateWindowEx - SMP3 - 27-01-2013 ALmuhhnad كتب :وعليكم السلام ورحمة الله وبركاتة لا مع جميع الدوال .. ويمكن أن يسبب مشاكل مع تطبيقات ال Multi Thread ... إقتباس :لم يفلح مع اغلب الالعاب ... واعتقد ان السبب .. اني يجب ان اعطي المبرامتر dwStyle قيمة 0 قبل ان يتم جلب موارد اللعبة ...إلخاذن ليس هناك داعي لعمل مثال ... قم بتجربة الطريقة الثانية WriteProcessMemory و أخبرني !! استفسار عن عمل هوك لدالة CreateWindowEx - ALmuhhnad - 27-01-2013 إقتباس : قم بتجربة الطريقة الثانية WriteProcessMemory و أخبرني !! كيف اقوم بذلك وانا أريـ د ان اعمل ذلك مع اكثر من لعبة حيث سيتغير عنوان قيمة الـ dwStyle من لعبة لإخرى فإذا عرفت مكان البارمتر dwStyle في لعبة سيختلف في الألعاب الآخرى !؟ استفسار عن عمل هوك لدالة CreateWindowEx - SMP3 - 27-01-2013 ALmuhhnad كتب :كيف اقوم بذلك مع حميع اللعب !!! ممكن أن سبب فشل الدالة SetWindowPos يعود لأن اللعبة تتحقق في كل مرة من برامتر الشاشة وهدا أمر عادي فأغلب الألعاب تقوم بدلك ويتم في حدث الرسم paint ادن ليس هناك حل آخر .. سيتوجب عليك استعماك الهوووك استعمل مكتبة madCodeHook فهي توفر لك دوال سريعة وسهلة لعمل ماتطلبه .. قبل أن تبدأ بالعمل ألق نظرة على ال documentation كود : http://help.madshi.net/madCodeHook.htm |