سلام رفقا ! اشتباه نکنید. ترک تحصیل نکردم. در تعطیلات میان ترم بسر می برم. چقدر دلم برا ایرانویج تنگ شده بود !
من چند وقت پیش (یه جورایی خیلی وقت پیش!) یه برنامه امنیتی نوشته بودم که چند روز پیش متوجه شدم که یه اشکالی داره. باید تو این تعطیلات 5-6 روزه مشکلش رو حلش کنم و مقاله رو هم تکمیل کنم. چون دیگه وقت ندارم. دارم خرخونی می کنم. چیزی به کنکور نمونده!
سوالی که می پرسم یه چیزی بین VB و C یا شایدم ویندوز باشه. برا همین اینجا پست کردم.
مشکل از این قراره :
من با WH_KEYBOARD_LL کیبورد رو هوک می کنم. حالا چطور می تونم بفهمم وقتی یه کلیدی زده میشه اول هوکه من میگیرش یا یه هوک از یه برنامه دیگه؟ می خوام بدونم برنامه من کجای زنجیر هوک قرار گرفته. یا نهایتش اینکه برنامه ای بعد از من هوک کرده یا نه؟
چند روزه خیلی دنبالش گشتم. کل اینترنت رو زیرورو کردم.
باید با WH_DEBUG هوک کرد و اطلاعات هوک رو از برنامه های دیگه گرفت که انگار با vb نمیشه!
بچه ها کمکم کنید. اگه یه کد VB پیدا بشه که خیلی خوبه. در غیر اینصورت فقط C میمونه که اگه یکی از دوستان مخ C یه Dll بنویسه من مدیونش میشم.
کار خیلی ساده است.یه تابع که هندل هوک رو از من بگیره و چک کنه که اولین برنامه هوک هستم یا نه. نباید کدنویسی زیادی داشته باشه.
خیلی عجله دارم !
من تو Xtremevbtalk هم پرسیدم. ولی ... هیچ فروم ایرانویج نمیشه.
http://www.xtremevbtalk.com/showthread.php?p=1268721
فکر کنم باید از hookapi استفاده کنی اون موقع همه چی رو سیستم عامل دستته (دردسرش یه کم زیاده)
پس خدا یه دادت برسه من یه کمی روش کار کردم اطلاعات درستوحسابی فارسی که عمرا انگلیسی با دردسر(بهتر ebook هایی که مال اموزش rootkit نویسیه رو بخونی چه یوزر مود چه کرنل مود)کلش اینجوریه که وقتی سیستم بالا میاد dllهای ویندوز میان تو حافظه کدت چند بخشی یه بخشش هوک مربوط به مسیجهاست یه بخش تابع مربوط به اون api مورد نظره بخش بعدی کد اینجکشنته باید مازول مربوط به کد api مورد نظرتو پیدا کنی و با تزریق اون به محلی که همون ماژول تو api ویندوز هست استفاده از اونو در دست بگیری و با کد هوکت هم پیغامهایی که برای استفاده از اون تابع ارسال کیشه رو بگیری دستکاری کنی یا حذف کنی (اینها چیزایی بود که من از اون کدی که پیدا کردم فهمیدم دردسر کار روش زیاد بود گذاشتم بعد عید که سرم خلوت تر شد)میتونی به سایتhttp://www.madshi.com/ و فورومش یه سری بزنی با خود این madshi یه صحبتی بکن اگه بگی واسه کارای عام المنفعه واستفاده های غیر تجاری میخواهی احتمالا کمکت میکنه
حالا یادم اومد تو کی هستی ! البته من از آملی،بابلی،سارویا خاطره خوشی ندارم !
ولی تو خوبی !
من که اصلا نفهمیدم چی گفتی، آموزش هوک بود؟!
برنامه من کلش هوکه. هوک این دردسرا رو نداره که! الان من یه جاش مشکل دارم. اونم اینه که چطوری از هوک WH_DEBUG استفاده کنم؟ همونطور که گفتی منابع فارسی که اصلا در موردش نیست. انگلیسی هم فقط چندتا از هوکای ساده هست.
اینجا خیلی خلوت شده ! منم دیگه وقت ندارم
کسی اینجا هست که C بلد باشه؟
این یه مقدمه در مورد hookapi هست چون نمیدونم از کدوم سایت گرفتم همینجوری خود صفحشو واست میزارم توضیحات انگلیسی هستش به دردت میخوره
نقل قول: فکر کنم اونی که می خوای این باشه:
http://209.85.175.104/search?q=cache:7Hh...=firefox-a
ولی من C بلد نیستم به خاطر همین از کد های برنامه سردرنیاوردم، شایدم به درد نخور بود
منم C بلد نیستم !
نقل قول: این هم هست، البته مطالعش نکردم چون خیلی زیاد بود، ولی مقالش یه قسمتی داره به نام Source code for HOOKLIB.DLL
گفتم شاید به درد بخوره:
http://www.geocities.com/macrotech_tr/API.html
نقل قول: این یه مقدمه در مورد hookapi هست چون نمیدونم از کدوم سایت گرفتم همینجوری خود صفحشو واست میزارم توضیحات انگلیسی هستش به دردت میخوره
اولی که فیلتر !
دومی ماله چند سال پیشه؟! هیچ کدوم از لینکاش مطلب نداره !
بازم ممنوم !
من آموزش هوک نمی خوام. فقط یه dll می خوام که اون کارو برام انجام. اون اواخر حامد C کار می کرد. یکی بکشه اونو بیاره اینجا.
از فردا کلاس دارم
شروع شد !
/* DllPart.Dll */
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef (WINAPI *MsgBoxType)(HWND,LPCWSTR,LPCWSTR,UINT);
MsgBoxType oldMsg; /*APIิญศ๋ฟฺตุึท*/
DWORD APIAddress; /*ดๆดขAPIศ๋ฟฺตุึทตฤตุทฝตฤตุึท*/
int WINAPI MyMessage(HWND hWnd ,LPCWSTR M1,LPCWSTR M2, UINT M3) {
/* ีโสวำรภดฬๆปปตฤบฏส */
return oldMsg(hWnd,buf,M2,MB_OK);
}
const char szApp[] = "DllPart.dll";
HHOOK hHook; /*Hookตฤพไฑ๚*/
HMODULE hInst; /*DLL ฤฃฟ้พไฑ๚ฃฌำรำฺSetWindowsHookExบฏส*/
HWND hTarget; /*ฤฟฑ๊ดฐฟฺพไฑ๚*/
/*DLL ศ๋ฟฺ*/
BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID lpvReserved)
{
hInst = inst;
switch (reason) {
case DLL_PROCESS_ATTACH:
/*ต๗สิะลฯขฃฌฑํสพDLLาัพญผำิุ*/
MessageBox(NULL,"DLL_PROCESS_ATTACH",szApp,MB_OK);
break;
case DLL_PROCESS_DETACH:
/*ต๗สิะลฯขฃฌฑํสพDLLาัพญะถิุ*/
MessageBox(NULL,"DLL_PROCESS_DETACH",szApp,MB_OK);
break;
}
return true;
}
/*ฯิสพGetLastErrorตฤะลฯข*/
void showerr(const char *m) {
char message[255];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,0,GetLastError()
,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),message,255, 0);
MessageBox(NULL,message,m,MB_OK);
}
//-----------------------
void UnHookApi() {
/*ะถิุAPI Hookำร*/
}
void HookApi() {
/*ผำิุAPI Hookอฌษฯรๆฝ้ษตฤบฏสาปั๙*/
}
//-----------------------
/*ำรำฺWH_GETMESSAGEตฤHook Procedure*/
LRESULT CALLBACK GetMsgProc(int nCode,WPARAM wParam, LPARAM lParam) {
if (nCode == HC_ACTION) {
MSG *msg = (MSG *)lParam;
if (msg->message == WM_CHAR) {
if (msg->wParam == 'h') HookApi();
if (msg->wParam == 'u') UnHookApi();
}
}
return CallNextHookEx(hHook,nCode,wParam,lParam);
}
extern "C" __declspec(dllexport) SetAPIHook(HWND handle) {
DWORD ThreadId = GetWindowThreadProcessId(handle, NULL);
hTarget = handle;
MessageBox(NULL, "Enabling CallWndProc Hook", szApp, MB_OK);
hHook = SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,hInst,ThreadId);
if (hHook) {
MessageBox(NULL,"Hook OK!", szApp, MB_OK);
} else {
showerr("SetWindowsHookEx");
}
}
extern "C" __declspec(dllexport) UnHookAPIHook() {
MessageBox(NULL, "Disenabling CallWndProc Hook", szApp, MB_OK);
if (UnhookWindowsHookEx(hHook)) {
MessageBox(NULL,"UnHook OK!", szApp, MB_OK);
} else {
showerr("UnHookWindowsHookEx");
}
}
apihooking این به زبان c هست (من c بلد نیستم که توضیح بدم)در موردش با جناب mohammad2003 صحبت کن