Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: em bị Lỗi bad image khi cài đặt hook !!! , ai biết lỗi này sửa thế nào không ạ !!!!

  1. #1
    Ngày gia nhập
    09 2018
    Bài viết
    2

    Mặc định em bị Lỗi bad image khi cài đặt hook !!! , ai biết lỗi này sửa thế nào không ạ !!!!

    em install hook bằng hàm SetWindowsHookEx()
    em có 2 file : 1 file main và 1 file dll

    code file main :
    #include <windows.h>
    #include <stdio.h>
    #include <iostream>
    using namespace std;
    HHOOK hookHandle;
    HOOKPROC hkprcSysMsg;
    HINSTANCE hinsDLL;
    LRESULT CALLBACK FillKeyboard(int nCode,WPARAM wParam,LPARAM lParam);
    int main(){
    hinsDLL = LoadLibrary(TEXT("D:/Knight/LT/Script/hookt.dll"));
    hkprcSysMsg = (HOOKPROC)GetProcAddress(hinsDLL,"FillKeyboard");
    hookHandle = SetWindowsHookEx(WH_KEYBOARD_LL,hkprcSysMsg,hinsDL L,0);
    if (hookHandle == NULL)
    {
    cout <<"error"<< endl;
    }
    }

    code file dll :
    #include <windows.h>

    //vùng nhớ dùng chung, chứa biến handle của Hook
    #pragma data_seg("SHARED_DATA")
    HHOOK hGlobalHook = NULL;
    #pragma data_seg()

    //hàm lọc sự kiện nhấn phím
    __declspec(dllexport) LRESULT CALLBACK FillKeyboard(int nCode, WPARAM wParam, LPARAM lParam)
    {
    //nếu sự kiện là nhấn phím và mã phím là Enter
    if ((nCode == HC_ACTION) && (wParam == 13))
    {
    MessageBox(0, "sonhn say hello ", "Hello", 0);
    return 1;
    }

    //gọi Filter Function kế tiếp trong chuỗi các Filter Function
    return CallNextHookEx(hGlobalHook, nCode, wParam, lParam);
    }

    //hàm ấn định biến hGlobalHook tại vùng nhớ dùng chung
    __declspec(dllexport) void SetGlobalHookHandle(HHOOK hHook)
    {
    hGlobalHook = hHook;
    }
    khi em thực thi file exe thì bị báo lỗi :
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		Untitled.png
Lần xem:	2
Size:		8.3 KB
ID:		64448
    ai biết cách khắc phục không ạ , em xin cảm ơn anh chị ạ
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    08 2017
    Bài viết
    3,369

    Trích dẫn Nguyên bản được gửi bởi oneonea Xem bài viết
    em install hook bằng hàm SetWindowsHookEx()
    em có 2 file : 1 file main và 1 file dll ...
    Lâu, ôn lại xi xem nó thế nào.

    code file main :
    C++ Code:
    1. #include <windows.h>
    2. #include <stdio.h>
    3. #include <iostream>
    4. using namespace std;
    5.  
    6. HHOOK hookHandle;
    7. HOOKPROC hkprcSysMsg;
    8. HINSTANCE hinsDLL;
    9. LRESULT CALLBACK FillKeyboard(int nCode,WPARAM wParam,LPARAM lParam);
    10.  
    11. int main(){
    12.     hinsDLL = LoadLibrary(TEXT("D:/Knight/LT/Script/hookt.dll"));
    13.     hkprcSysMsg = (HOOKPROC)GetProcAddress(hinsDLL,"FillKeyboard");
    14.     hookHandle = SetWindowsHookEx(WH_KEYBOARD_LL,hkprcSysMsg,hinsDLL,0);
    15.     if (hookHandle == NULL)
    16.     {
    17.         cout <<"error"<< endl;
    18.     }
    19. }

    biên dịch, chạy thử:


    code file dll :
    C++ Code:
    1. #include <windows.h>
    2.  
    3. //vùng nhớ dùng chung, chứa biến handle của Hook
    4. #pragma data_seg("SHARED_DATA")
    5. HHOOK   hGlobalHook = NULL;
    6. #pragma data_seg()
    7.  
    8. //hàm lọc sự kiện nhấn phím
    9. __declspec(dllexport) LRESULT CALLBACK FillKeyboard(int nCode, WPARAM wParam, LPARAM lParam)
    10. {
    11.     //nếu sự kiện là nhấn phím và mã phím là Enter
    12.     if ((nCode == HC_ACTION) && (wParam == 13))
    13.     {
    14.         MessageBox(0, "sonhn say hello :)", "Hello", 0);
    15.         return 1;
    16.     }
    17.  
    18.     //gọi Filter Function kế tiếp trong chuỗi các Filter Function
    19.     return CallNextHookEx(hGlobalHook, nCode, wParam, lParam);
    20. }
    21.  
    22. //hàm ấn định biến hGlobalHook tại vùng nhớ dùng chung
    23. __declspec(dllexport) void SetGlobalHookHandle(HHOOK hHook)
    24. {
    25.    hGlobalHook = hHook;
    26. }

    không biết bạn biên dịch thế nào, bằng cái chi, tôi thử cách này, có thay đổi
    hinsDLL = LoadLibrary(TEXT("D:/Knight/LT/Script/hookt.dll"));
    thành
    hinsDLL = LoadLibrary(TEXT("hookt.dll")); //đặt chung cùng thư mục biên dịch, chạy thử.

  3. #3
    Ngày gia nhập
    09 2018
    Bài viết
    2

    dạ em cảm ơn anh !!!
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn