Перейти к содержанию

Chusa

Пользователи
  • Постов

    25
  • Зарегистрирован

  • Посещение

Репутация

1 Навыки не прокачены

2 Подписчика

Информация о Chusa

  • День рождения 07.01.1998

Информация

  • Пол
    Мужчина
  • Город
    Кострома

Контакты

  • Skype
    lol_44_lol

Посетители профиля

2 389 просмотров профиля
  1. Спасибо конечно за ответы, но как-бы прошло более года =) Я разобрался во всем через месяц
  2. Странно, но при чтение в переменной coor_X имеется значение, да оно не того типа, но оно имеется. Сначало я нажимаю, чтобы записать в эти переменные, а потом, чтобы записать и когда записываю в переменных уже нули. Хотя, когда читаю память в переменнх имеется значение. И еще у меня вопрос возник про чтение вот у меня в переменной center_X есть адрес в котором хранится значение координаты Х и последняя функция RPM получается читает в переменную cord_X значение этого адреса, но оно не в том типе и даже то, что приводил кенг не работает вот пример значение cord_X == 184490720, а f_coord_X == -107374176 Хотя истинное значение в данный момент равно 2250.819336.
  3. При записи в память при таком коде case WM_KEYDOWN: if(wParam == 0x49) { MessageBox(hWnd,"Сохранение координат","Lol",MB_OK); VirtualProtectEx(phandle, (LPVOID)Base, sizeof(Base), PAGE_EXECUTE_READWRITE, &old_prot); ReadProcessMemory(phandle,(LPCVOID)Base, &CPed, sizeof(Base), NULL); center = CPed + 0x14; ReadProcessMemory(phandle,(LPCVOID)center, &coord_X1, sizeof(center), NULL); center_X = coord_X1 + 0x30; ReadProcessMemory(phandle,(LPCVOID)center_X, &coord_X, sizeof(center_X), NULL); float f_coord_X = (float)coord_X; ReadProcessMemory(phandle,(LPCVOID)center, &coord_Y1, sizeof(center), NULL); center_Y = coord_Y1 + 0x34; ReadProcessMemory(phandle,(LPCVOID)center_Y, &coord_Y, sizeof(center_Y), NULL); float f_coord_Y = (float)coord_Y; ReadProcessMemory(phandle,(LPCVOID)center, &coord_Z1, sizeof(center), NULL); center_Z = coord_Z1 + 0x38; ReadProcessMemory(phandle,(LPCVOID)center_Z, &coord_Z, sizeof(center_Z), NULL); float f_coord_Z = (float)coord_Z; } if(wParam == 0x55) { MessageBox(hWnd,"Телепорт","Lol",MB_OK); WriteProcessMemory(phandle, &center_X, (LPCVOID)coord_X, sizeof(center_X), NULL); WriteProcessMemory(phandle, &center_Y, (LPCVOID)coord_Y, sizeof(center_Y), NULL); WriteProcessMemory(phandle, &center_Z, (LPCVOID)coord_Z, sizeof(center_Z), NULL); VirtualProtectEx(phandle, (LPVOID)Base, sizeof(Base), old_prot, &old_prot); CloseHandle(phandle); }Выдает вот такие ошибки, на отладке смотрел читает правильно, но при записи выдает вот так ошибки: Run-Time Check Failure #3 - The variable 'coord_X' is being used without being initialized. Run-Time Check Failure #3 - The variable 'coord_Y' is being used without being initialized. Run-Time Check Failure #3 - The variable 'coord_Z' is being used without being initialized.
  4. А потом когда будем записывать, то это будет тритий параметр как я понял? И выглядеть это будет как то так? WriteProcessMemory(phandle, &coord_X, coord_X , sizeof(coord_X), NULL); Получается вот так coord_X == 181410528 f_coord_X == -107374176. coord_Y == 3298893584 f_coord_Y == 3.29889357e+009 coord_Z == 1096163328 f_coord_Z == -107374176. Настоящие координаты не менялись такие же, как и на скрине
  5. LONG WINAPI WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){ HDC hDC; PAINTSTRUCT ps; DWORD Base = 0xB6F5F0; DWORD CPed = 0; HWND hwnd = FindWindow(0, "GTA:San Andreas"); DWORD pID = UpdatePID("gta_sa.exe"); HANDLE phandle = OpenProcess(PROCESS_ALL_ACCESS, 0, pID); DWORD coord_X; DWORD coord_X1; DWORD coord_Y; DWORD coord_Y1; DWORD coord_Z; DWORD coord_Z1; DWORD center = 0; DWORD center_X = 0; DWORD center_Y = 0; DWORD center_Z = 0; DWORD old_prot = 0; switch(msg) { case WM_DESTROY: PostQuitMessage(0); case WM_COMMAND: switch(wParam) { case 1: break; } case WM_KEYDOWN: if(wParam == 0x49) { MessageBox(hWnd,"Сохранение координат","Lol",MB_OK); VirtualProtectEx(phandle, (LPVOID)Base, sizeof(Base), PAGE_EXECUTE_READWRITE, &old_prot); ReadProcessMemory(phandle,(LPCVOID)Base, &CPed, sizeof(Base), NULL); center = CPed + 0x14; ReadProcessMemory(phandle,(LPCVOID)center, &coord_X1, sizeof(center), NULL); center_X = coord_X1 + 0x30; ReadProcessMemory(phandle,(LPCVOID)center_X, &coord_X, sizeof(center_X), NULL); ReadProcessMemory(phandle,(LPCVOID)center, &coord_Y1, sizeof(center), NULL); center_Y = coord_Y1 + 0x34; ReadProcessMemory(phandle,(LPCVOID)center_Y, &coord_Y, sizeof(center_Y), NULL); ReadProcessMemory(phandle,(LPCVOID)center, &coord_Z1, sizeof(center), NULL); center_Z = coord_Z1 + 0x38; ReadProcessMemory(phandle,(LPCVOID)center_Z, &coord_Z, sizeof(center_Z), NULL); } if(wParam == 0x55) { MessageBox(hWnd,"Телепорт","Lol",MB_OK); WriteProcessMemory(phandle, &coord_X, 0, sizeof(coord_X), NULL); WriteProcessMemory(phandle, &coord_Y, 0, sizeof(coord_Y), NULL); WriteProcessMemory(phandle, &coord_Z, 0, sizeof(coord_Z), NULL); VirtualProtectEx(phandle, (LPVOID)Base, sizeof(Base), old_prot, &old_prot); CloseHandle(phandle); } break; case WM_PAINT: { hDC = BeginPaint(hWnd, &ps); OnPaint(hDC); EndPaint(hWnd, &ps); break; } default: return DefWindowProc (hWnd, msg, wParam, lParam); } return 0;}Я знаю, что скорей всего надоел с этой темой, но прошу помочь еще. Читать все начало и все правильно, но теперь я не понимаю, на каком моменте мне надо остановиться. Дело в том, что в таблице СЕ вот такая ситуацияБаза адреса это переменная Base, из нее читается CPed, потом в переменную center пишется CPed+0x14, для первого смещения, далее coord_X1 читается(CPed+0x14) и далее в center_X пишется coord_X1+0x30 и это как я понял нужный адрес и мы читаем его последней функцией RPM в переменную coord_X, но в ней уже непонятный для меня мусор(но я не обратил внимания и стал сразу же писать функции для записи) и заметил это только на отладке, и теперь я не понимаю откуда надо начинать писать, если вам не трудно, то подскажите пожалуйста. Учту твои советы, всю нужную литературу прочитаю.
  6. Все заработало. Надо было извенить третий параметр функции RPM. Вот как изменился код. Сейчас буду дописывать, чтобы читал все координаты до конца и записывал. Спасибо большое за помощь. case WM_KEYDOWN: if(wParam == 0x49) { DWORD Base = 0xB6F5F0; DWORD CPed = 0; HWND hwnd = FindWindow(0, "GTA:San Andreas"); DWORD pID = UpdatePID("gta_sa.exe"); HANDLE phandle = OpenProcess(PROCESS_ALL_ACCESS, 0, pID); MessageBox(hWnd,"Сохранение координат","Lol",MB_OK); DWORD coord_X; DWORD coord_X1; DWORD coord_Y; DWORD coord_Y1; DWORD coord_Z; DWORD coord_Z1; DWORD center = 0; DWORD center_X = 0; DWORD center_Y = 0; DWORD center_Z = 0; DWORD old_prot = 0; VirtualProtectEx(phandle, (LPVOID)Base, sizeof(Base), PAGE_EXECUTE_READWRITE, &old_prot); ReadProcessMemory(phandle,(LPCVOID)Base, &CPed, sizeof(Base), NULL); center = CPed + 0x14; VirtualProtectEx(phandle, (LPVOID)Base, sizeof(Base), old_prot, &old_prot); CloseHandle(phandle);Если нужен будет полный код, то он вот здесь вот https://yadi.sk/d/cFXHd8S5aLqXT. Как допишу полностью отмечусь, еще раз спасибо за помощь.
  7. case WM_KEYDOWN: if(wParam == 0x49) { DWORD Base = 0xB6F5F0; DWORD CPed = 0; HWND hwnd = FindWindow(0, "GTA:San Andreas"); DWORD pID = UpdatePID("gta_sa.exe"); HANDLE phandle = OpenProcess(PROCESS_VM_READ, 0, pID); MessageBox(hWnd,"Сохранение координат","Lol",MB_OK); DWORD coord_X; DWORD coord_X1; DWORD coord_Y; DWORD coord_Y1; DWORD coord_Z; DWORD coord_Z1; DWORD center = 0; DWORD center_X = 0; DWORD center_Y = 0; DWORD center_Z = 0; DWORD old_prot = 0; VirtualProtectEx(phandle, (LPVOID)Base, sizeof(Base), PAGE_EXECUTE_READWRITE, &old_prot); ReadProcessMemory(phandle,(LPCVOID)Base, (LPVOID)CPed, sizeof(Base), NULL); center = CPed + 0x14; VirtualProtectEx(phandle, (LPVOID)Base, sizeof(Base), old_prot, &old_prot); CloseHandle(phandle);Вот так получилось и все равно в Cped == 0. Название изменилось потому, что я стал пробывать не на Криминальной России, а на обычной Сан-Андреас(Думал в этом ошибка).
  8. Я по поводу функции FindWindow, а если я не знаю класс окна(или просто на данной стадии не понимаю, что это), то можно поставить просто 0? И еще заголовок окна жертвы брать из названия окна игры? По поводу pID - здесь все правильно я проверял pID находит правильно, я сверял с Диспетчером задач. Сейчас буду пробывать с функцией VirtualProtectEx и напишу о результатах.
  9. 1. А что именно туда надо передавать? ЗАголовок какого окна? 2. Функция UpdatePID работает отлично, все проверено на отладке. Вот ее код int UpdatePID(char* pName){ HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); PROCESSENTRY32 pInfo; DWORD pID = 0; pInfo.dwSize = sizeof(PROCESSENTRY32); if(Process32First(snapshot,&pInfo)) { while(Process32Next(snapshot,&pInfo)) { if(_stricmp(pName,pInfo.szExeFile) == 0) { CloseHandle(snapshot); return pID = pInfo.th32ProcessID; } } } CloseHandle(snapshot); return 0;}3. Хэндл закрывается. 4 и 5 этот пункт я не смог реализовать потому, что выдает ошибку, что невозможно пребразовать DWORD в PDDWORD.
  10. Все теперь я понял свою ошибку буду исправлять, спасибо за помощь. Вообщем я поменял, как было сказанно, но все равно в переменной CPed == 0. Но только одно я не смог сделать, это снять защиту потому, что выдает ошибку. Вот код который получился case WM_KEYDOWN: if(wParam == 0x49) { DWORD Base = 0xB6F5F0; DWORD CPed = 0; HWND hwnd = FindWindow(0, "grand_theft_auto_san_andreas.dll"); DWORD pID = UpdatePID("grand_theft_auto_san_andreas.dll"); HANDLE phandle = OpenProcess(PROCESS_VM_READ, 0, pID); MessageBox(hWnd,"Сохранение координат","Lol",MB_OK); DWORD coord_X; DWORD coord_X1; DWORD coord_Y; DWORD coord_Y1; DWORD coord_Z; DWORD coord_Z1; DWORD center = 0; DWORD center_X = 0; DWORD center_Y = 0; DWORD center_Z = 0; DWORD old_prot = 0; ReadProcessMemory(phandle,(void*)Base, (LPVOID)CPed, sizeof(Base), NULL); center = CPed + 0x14;
  11. Если я правильно понял, то вы хотите сказать, что надо вот так? У меня так и было только hwnd - хэндл открытого на запись процесса был выше, но даже в таком случае в переменной CPed == 0
  12. Проблемане решена, если не сложно, то можем глянуть вместе в скайпе(lol_44_lol) или в RC. А по поводу смещений, да я не прав, но все равно дело до них не доходит, ошибка возникает в другом.
  13. pID определяет правильно с таким названием и CE подключается к этому же процессу
  14. А во время исполнения программы значение CPed == содержимому Base
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.