رتبه موضوع:
  • 26 رای - 2.73 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
هوک کردن messagebox
#1
[C++] HookMsgBox
کد:
int WINAPI HookMessageBoxA(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType)
{
    return MessageBoxA(hWnd, "hi!", "how are you?", uType);
}

LPDWORD FoundIAT(char* funcName)
{
    DWORD test = 0;

    LPVOID pMapping = GetModuleHandle(NULL);
    if (pMapping == NULL)
        exit(-1);

    PIMAGE_DOS_HEADER DosHeader = (PIMAGE_DOS_HEADER) pMapping;

    if (DosHeader->e_magic != IMAGE_DOS_SIGNATURE)
        exit(-1);

    PIMAGE_NT_HEADERS NtHeaders = (PIMAGE_NT_HEADERS) ((char*) DosHeader + DosHeader->e_lfanew);

    if (NtHeaders->Signature != IMAGE_NT_SIGNATURE)
        exit(-1);

    PIMAGE_DATA_DIRECTORY DataDirectory = &NtHeaders->OptionalHeader.DataDirectory[1]; // Import symbols
    PIMAGE_IMPORT_DESCRIPTOR ImportDescriptor = (PIMAGE_IMPORT_DESCRIPTOR) ((char*) DosHeader + DataDirectory->VirtualAddress);

    PIMAGE_THUNK_DATA32 OriginalFirstThunk = (PIMAGE_THUNK_DATA32)((char*) DosHeader + ImportDescriptor->OriginalFirstThunk);

    while(OriginalFirstThunk != 0)
    {
        DWORD name = (DWORD)((char*) pMapping + ImportDescriptor->Name);
        
        OriginalFirstThunk = (PIMAGE_THUNK_DATA32)((char*) DosHeader + ImportDescriptor->OriginalFirstThunk);
        PIMAGE_THUNK_DATA32 FirstThunk = (PIMAGE_THUNK_DATA32)((char*) DosHeader + ImportDescriptor->FirstThunk);

        while(OriginalFirstThunk->u1.AddressOfData != 0)
        {
            PIMAGE_IMPORT_BY_NAME NameImg = (PIMAGE_IMPORT_BY_NAME)((char*) DosHeader + (DWORD)OriginalFirstThunk->u1.AddressOfData);

            test = (DWORD)OriginalFirstThunk->u1.Function & (DWORD)IMAGE_ORDINAL_FLAG32;
            if (test == 0)
            {
                if(strcmp(funcName, (const char*)NameImg->Name) == 0)
                {
                    return (LPDWORD)&(FirstThunk->u1.Function);
                }
            }
    
            OriginalFirstThunk++;
            FirstThunk++;
        }

        ImportDescriptor++;
    }

    return 0;
}Sursa: [Doar userii inregistrati pot vedea linkurile. ]
در صورتی که سوال دارید و سوالتون مختصر هست با شماره 09120642214 میتونید تماس بگیرید.
کسانی که دوست دارن در کانال فروشگاه ما و یا کانال انجمن عضو بشن یک پیامک در تلگرام برای من بفرستید که عضوشون میکنم.

ادرس فروشگاه :

http://www.amshop.ir



ای ام شاپ را در اینستگرام دنبال کنید

ای ام شاپ رو در کانال تلگرام دنبال کنید



This forum uses Lukasz Tkacz MyBB addons.
پاسخ
#2
درود دوستان چندسوالی داشتم :
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)  
دوستان می توانند راهنمایی کنند error مال کامپایر visual studio 2012 است
3.کسی با کد های داخل سایت .MADshi.net توانسته تابعی را هوک کند اگر توانسته و امکان هست بذاره .
پاسخ


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  برنامه ی مشخص کردن تعداد تکرار یک رشته در دیگری Ghoghnus 1 3,996 11-29-2012، 09:04 PM
آخرین ارسال: antengogoli
  سورس کد خالی کردن سطل زباله سیستم عامل ( سی ) Amin_Mansouri 0 1,791 06-16-2012، 08:25 PM
آخرین ارسال: Amin_Mansouri

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان
<------> <____> <<<<----------------->>>> <<<<--->>>>>
This forum uses Lukasz Tkacz MyBB addons.