Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Sử dụng WriteProcessMemory, báo lỗi cannot open process :((

    mình muốn Create 1 DLL và dùng ollydbg hook vào 1 file .exe và đây là phần thân code của DLL của nó


    Mã:
    HWND hWnd = FindWindow(0, "My project");                       {                DWORD proc_id;                  GetWindowThreadProcessId(hWnd, &proc_id);                  HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc_id);          if(!hProcess)                {             MessageBox(NULL, "Cannot open process!", "Error!", MB_OK + MB_ICONERROR);                 }                else                     {                        BYTE newdata[]={0x72, 0x65, 0x64, 0x70, 0x6F, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};                         DWORD newdatasize = sizeof(newdata);                         if(WriteProcessMemory(hProcess, (LPVOID)0x12BC50, &newdata, newdatasize, NULL))                         {                                             MessageBox(NULL, "WriteProcessMemory is a success!", "Success!", MB_OK + MB_ICONINFORMATION);                         }                         else                         {                                             MessageBox(NULL, "Error cannot WriteProcessMemory!", "Error!", MB_OK + MB_ICONERROR);                         }                          CloseHandle(hProcess);                     }                }
    theo code trên thì sẽ write vào memory của ct có của sổ là My project nhưng sao mình dùng ollydbg để hook DLL này vào thì nó toàn báo Cannot open process! Mình nghĩ là nó sẽ load hết code của DLL này rồi mới tiến hành chạy các code tiếp theo của file .exe kia (lúc DLL này load thì ct vẫn chưa hiện cửa sổ). Nhưng mình complite code kia ra console và chạy file .exe đợi nó load xong rồi chạy consonle để Patch memory thì rất OK
    Vấn đề của mình muốn hỏi là làm sao để code DLL này có cơ chế đợi cửa sổ My Project đc kích hoạt thì mới write memory (như kiểu cơ chế đợi winwaitactive trong AutoIT vậy)
    (file .exe ko phải của mình viết nên phải dùng ollydbg mới hook đc DLL vào)

    mong tin các bạn

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn sử dụng while để đợi xem

    Mã:
        HWND hwnd ;    while(true)    {        hwnd = FindWindow(NULL, "My project") ;        if (!hwnd)                    Sleep(100); // Không có cửa sổ        else                break;      // Tìm thấy rồi    }    // Code tiếp ở đây

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •