• ¡Welcome to Square Theme!
  • This news are in header template.
  • Please ignore this message.
مهمان عزیز خوش‌آمدید. ورود عضــویت


امتیاز موضوع:
  • 33 رای - 2.73 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
Title: هوک کردن 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. ]
گروه دور همی پارسی کدرز
https://t.me/joinchat/GxVRww3ykLynHFsdCvb7eg
 
پاسخ
#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 5,405 11-29-2012، 09:04 PM
آخرین ارسال: antengogoli
  سورس کد خالی کردن سطل زباله سیستم عامل ( سی ) Amin_Mansouri 0 2,758 06-16-2012، 08:25 PM
آخرین ارسال: Amin_Mansouri

پرش به انجمن:


Browsing: 1 مهمان