Borland C++ проблема с OpenProcess

Тема в разделе "LANGS.C", создана пользователем devillsd, 4 авг 2009.

  1. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    POINT CursorPos;
    HWND hGameWnd;
    DWORD GamePID;
    DWORD stAddress=0x79962C;
    DWORD buffer;
    DWORD threadID;
    if(GetKeyState(0x47)>>1!=0){
    GetCursorPos(&CursorPos);
    hGameWnd=WindowFromPoint(CursorPos);
    threadID=GetWindowThreadProcessId(hGameWnd,&GamePID);
    hProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE,FALSE,GamePID);

    gt_timer->Enabled=false;
    g_form->Enabled=true;
    ReadProcessMemory(hProcess,&stAddress,&buffer,0x4,NULL);
    pid->Text=IntToHex((int)buffer,8);
    }
    вот код который имееться и по неизвестной мне причине не правильно работает
    Под дебагером вродибы всё чётко...координаты мыши читает , хендл окна читает, процесс айди читает(правильно, проверил спаем++), но вот ОпенПроцес возвращает неверный хендл процесса(мне так кажеться)

    Есть идентичный код на асемблере всё работает просто олично!!! ни единой задоринки(его писал тоже я ПЕРЕД ЭТИМ)
    Если заюзать выдаваемый им хенд процесса то при считывании памяти процесса выдаёт неверные знаечения(проверено артмоней)!!!
    В чём проблема??? ХЕЛП!!!!!
     
  2. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Нужно
    ReadProcessMemory(hProcess,stAddress,&buffer,0x4,NULL);
     
  3. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    Если убрать, то выдаёт ошибку!!!
    Может я не верно задал тип??
    [C++ Error] Main.cpp(43): E2034 Cannot convert 'unsigned long' to 'const void *'
    [C++ Error] Main.cpp(43): E2342 Type mismatch in parameter 'lpBaseAddress' (wanted 'const void *', got 'unsigned long')
    [C++ Warning] Main.cpp(49): W8004 'threadID' is assigned a value that is never used
    [C++ Warning] Main.cpp(49): W8004 'stAddress' is assigned a value that is never used
     
  4. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    ReadProcessMemory(hProcess,(void *)stAddress,&buffer,0x4,NULL);

    или

    void *stAddress=(void *)0x79962C;
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    devillsd
    Учить язык прежде, чем писать на нём не пробовали?
     
  6. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    Great
    Чёт вы гоните!!! Как учить язык если не писать на нём???
    И вообще... вы ищите не ту ошибку!!!
    РидПроцес Требует указатель на ячейку с адресом для чтения!!! Что я ему и предоставил!!!
     
  7. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    cppasm
    Спасибо
    ReadProcessMemory(hProcess,(void *)stAddress,&buffer,0x4,NULL);
    Так заработало... только объясни пожалуйста в чём была проблема???
    Ведь я передавал указатель на ячейку с адресом... и вообще чем отличается void* X от &X....
     
  8. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    devillsd
    И еще, выкинь борланд, поставь нормальный траслятор, gcc (mingw.org) или msvc (microsoft.com/express).
     
  9. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    при &X передается адрес X (т е ты передавал адрес своей константы на стеке)
     
  10. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    Microedition
    Это хорошая идея...
    o14189
    А что же тогда делает void* x???
     
  11. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    приведение к этому типу говорит о том что это указатель на адрес в x
     
  12. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Есть книга Б. Керниган, Д. Ритчи. Язык программирования Си.
    вот с нее и начните.

     
  13. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Ой, криво спопипастил первую цитату. Вобщем, читай книгу.