

2zolo2
Пользователи+-
Постов
280 -
Зарегистрирован
-
Посещение
-
Победитель дней
9
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент 2zolo2
-
samolet99 подробней можно, что ты хочешь сделать? вот уроки keng http://www.youtube.com/watch?v=0Bcm4IpSu6M&list=PLc_QQC_Xnp8ux5c0Fv13QvJy7BJ4qBOKX&index=1 http://www.youtube.com/watch?v=qzh6nL85SHs&list=PLc_QQC_Xnp8ux5c0Fv13QvJy7BJ4qBOKX&index=2 http://www.youtube.com/watch?v=VnXvTEH0NK0&list=PLc_QQC_Xnp8ux5c0Fv13QvJy7BJ4qBOKX&index=3 http://www.youtube.com/watch?v=BDh6nThzUNU&list=PLc_QQC_Xnp8ux5c0Fv13QvJy7BJ4qBOKX&index=4
-
НЕ она отвечает за смерть и там при убистве показывает 0E, 18, если живой там бегают значения от 0 до 5 - 10. Смешение 3С9 отвечает за жизни, если поставить 0 то противник все равно будет живой. Надо найти проверку живой или мертвый, проверка находится по смешению 78 и если там стоит 0E, 18 то он считается мертвым, но при этом не вы падает лут, нужно найти проверку на выпадения лута и активация задания босса? Garik66, быстро проходить подземелья, и не удобно играть в окне при большом разрешений.
-
Garik66, спасибо все работает как нужно, но мне нужно было совсем другое, я наверно не правильно вырезался. Мне нужно было, чтоб при наведение указателя мыши на противника он сразу умерал, без нажатия левой кнопкой мыши(в игре это Атака по противнику), просто навел на врага указатель и он умер, без каких нажатий мышкой. Я нашел инструкцию которая отвечает за наведение указателя мыши на противника и показ здоровья "004BB349 - fld dword ptr [esi+000003C9]" написал скрипт, но противник все равно оставаться живой. fld dword ptr [esi+000003C9]fsub dword ptr [esi+000003C9]fstp dword ptr [esi+000003C9]Не много полазив по коду, нашел инструкцию которые отвечают за смерть врага "00431C60 - mov byte ptr [esi+78],18", добавил в скрипт "mov [esi+00000078],18" враги стали умерат но не выпадал лут и не активировались задание при убистве босса.Найдя адрес смешения 78, поставил брекпойнт на запись(на доступ игра виснит), заинтересовали два последних инструкций эта "00431C60 - mov byte ptr [esi+78],18" и новая "0042E7FB - mov byte ptr [esi+78],0E". И после этого я в тупике, не как не могу найти инструкцию которая отвечает за выпад предметов и выполнение задания для боссов.
-
keng, делал по твоему уроку http://www.youtube.com/watch?v=VnXvTEH0NK0&index=3&list=PLc_QQC_Xnp8ux5c0Fv13QvJy7BJ4qBOKX, а вкратце не можешь, раскатать как находит через DirectX-функций?
-
Помогите доделать чит для The Fate.
2zolo2 опубликовал тема в Вопросы по созданию читов в одиночных играх
Написал скрипт для врагов и босса, но он не работает как нужно, не вы падает лут и не активируется задание при убийстве босса. [ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048)label(returnhere)label(originalcode)label(exit)newmem: //this is allocated memory, you have read,write,execute access//place your code hereoriginalcode:fld dword ptr [esi+000003C9] ; жизни врагаfsub dword ptr [esi+000003C9]fstp dword ptr [esi+000003C9]mov [esi+00000078],18 ; 18 чтоб умер врагexit:jmp returnhere"The Fate.exe"+BB349:jmp newmemnopreturnhere:[DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)"The Fate.exe"+BB349:fld dword ptr [esi+000003C9]//Alt: db D9 86 C9 03 00 00[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048)label(returnhere)label(originalcode)label(exit)newmem: //this is allocated memory, you have read,write,execute access//place your code hereoriginalcode:fld dword ptr [esi+000003C9] ; жизни врагаfsub dword ptr [esi+000003C9]fstp dword ptr [esi+000003C9]mov [esi+00000078],18 ; 18 чтоб умер врагexit:jmp returnhere"The Fate.exe"+BB2B9:jmp newmemnopreturnhere:[DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)"The Fate.exe"+BB2B9:fld dword ptr [esi+000003C9]//Alt: db D9 86 C9 03 00 00 -
kernon, какие наработки сделал? выложи, быстрей пойдет работа.
-
Может кто, подскажет другой способ нахождения view matrix?
-
Не могу найти правильный view matrix, нашел два значения 00501AA8, 00501B68 но кажись они не правильные, помогите найти правильный view matrix? Structure VECTOR3 x.f y.f z.fEndStructureStructure VECTOR2 x.f y.fEndStructurePlayP.l = $024aa36c;ViewMatrix.l = $00501B68ViewMatrix.l = $00501ae8Global Dim view_matrix.f(3, 3)Global rect.RECT Global hDCProcedure world_to_screen(*Enemy.VECTOR3, *To.VECTOR2) w.f = 0.0 *To\x = view_matrix(0,0) * *Enemy\x + view_matrix(0,1) * *Enemy\y + view_matrix(0,2) * *Enemy\z + view_matrix(0,3) *To\y = view_matrix(1,0) * *Enemy\x + view_matrix(1,1) * *Enemy\y + view_matrix(1,2) * *Enemy\z + view_matrix(1,3) w = view_matrix(3,0) * *Enemy\x + view_matrix(3,1) * *Enemy\y + view_matrix(3,2) * *Enemy\z + view_matrix(3,3) If (w < 0.01) ProcedureReturn 0 EndIf invw.f = 1.0 / w *To\x = *To\x * invw *To\y = *To\y * invw width.l = (rect\right - rect\left) height.l = (rect\bottom - rect\top) x.f = width/2 y.f = height/2 x = x + 0.5 * *To\x * width + 0.5 y = y - 0.5 * *To\y * height + 0.5 *To\x = x + rect\left *To\y = y + rect\top ProcedureReturn 1EndProcedurehWind=FindWindow_(0, "AssaultCube")GetWindowRect_(hWind, @rect)hDC = GetDC_(hWind)GetWindowThreadProcessId_(hWind, @pID)hProc=OpenProcess_(#PROCESS_VM_READ, #False, pID)Repeat ;ReadProcessMemory_(hProc,PlayP, Play.VECTOR3, SizeOf(VECTOR3), 0);{ EnemyPReadProcessMemory_(hProc, $0050f4f8, @EnemyP0.l, 4, 0)ReadProcessMemory_(hProc, EnemyP0+4, @EnemyP1.l, 4, 0)ReadProcessMemory_(hProc, EnemyP1+$34, Enemy.VECTOR3, SizeOf(VECTOR3), 0)Debug Enemy\xDebug Enemy\yDebug Enemy\z;}ReadProcessMemory_(hProc,ViewMatrix, @view_matrix(), 64, 0)If world_to_screen(@Enemy, @Too.VECTOR2) = 1 Ellipse_(hDC, Too\x - rect\left, Too\y-rect\top, (Too\x- rect\left)+15, (Too\y-rect\top)+15)EndIf Until a>100
-
Миникарта для чужой игры.
2zolo2 опубликовал тема в Вопросы по созданию читов в мультиплеерных играх
Увидел видео http://www.youtube.com/watch?v=CTHB3TX-gSI и стало интересно как это реализовано и работает. У нас есть координаты свой и врагов в формате Пример "-234.45 45.56 -7.67",и есть изображение карты размером 1024 1024. И возник вопрос как перевести координаты "-234.45 45.56 -7.67" в "15 85" и правильно привязать к карте изображения. Пробовал так "(position_x / ширину миникарты) * на любое число + (ширину миникарты/2)" но точки не совпадают с картой и не удается подогнать правильно, то террористы верху то спецназ внизу. Не подскажите как правильно реализовать? -
RockHamer, использовать 64 bit отладчик.
-
RockHamer, Watch Dogs 64 bit запускаешь? если да, то не получится, ОЛИ не поддерживает 64 bit приложения. Вот похожая ошибка, там пытали с запустить 64 bit приложение http://forum.gamehacklab.ru/topic/2437-c-signature-scanner-pod-win-x64/#entry16394/
-
В каком смысле почеркиваеть? может ошибку выдаеть? и ещё ты подключиль d3dx10.lib? Если первый раз, то не легче сначала не много набраться опыта в написаний програм на С++? Если тебе нужна DLL от кода keng, не легче было задать вопрос в теме http://forum.gamehacklab.ru/forum/38-zapros/ , чтоб помогли собрать код на С++? P.S Я пишу на PureBasic и с компиляций на С++ не помогу.
-
Меняещь 9, на нужное число 10, 11 и еще смотри документацию для directx 10, 11 и разбирай код, чтоб потом глупых вопросов не задовать. Пример для 10, могут быть ошибки. Если первый раз, то по тренируйся сначала на directx 9, keng хорошо все описал и записал видео. #include #include #pragma comment(lib,"d3dx10.lib") typedef IDirect3D10* (__stdcall *DIRECT3DCREATE10)(unsigned int); typedef long (__stdcall *PRESENT10)(IDirect3DDevice10* self, const RECT*, const RECT*, HWND, void*); PRESENT9 g_D3D10_Present = 0; BYTE g_codeFragment_p10[5] = {0, 0, 0, 0, 0}; BYTE g_jmp_p10[5] = {0, 0, 0, 0, 0}; DWORD g_savedProtection_p10 = 0; DWORD present10 = 0; bool indicator = 0; D3DRECT rec = {10, 10, 120, 30}; ID3DXFont *m_font = 0; RECT fontRect = {10, 15, 120, 120}; D3DCOLOR bkgColor = 0; D3DCOLOR fontColor = 0; void DrawIndicator(void* self) { IDirect3DDevice10* dev = (IDirect3DDevice10*)self; dev->BeginScene(); D3DXCreateFont(dev, 12, 0, FW_BOLD, 0, 0, 1, 0, 0, 0 | FF_DONTCARE, TEXT("Arial"), &m_font); if(indicator) { bkgColor = D3DCOLOR_XRGB(0, 0, 255); fontColor = D3DCOLOR_XRGB(0, 255, 255); } else { bkgColor = D3DCOLOR_XRGB(255, 0, 0); fontColor = D3DCOLOR_XRGB(255, 0, 0); } dev->Clear(1, &rec, D3DCLEAR_TARGET, bkgColor, 1.0f, 0); m_font->DrawText(0, "keng.gamehacklab.ru", -1, &fontRect, 0, fontColor); dev->EndScene(); } void GetDevice10Methods() { HWND hWnd = CreateWindowA("STATIC","dummy", 0, 0, 0, 0, 0, 0, 0, 0, 0); HMODULE hD3D10 = LoadLibrary("d3d10"); DIRECT3DCREATE10 Direct3DCreate10 = (DIRECT3DCREATE9)GetProcAddress(hD3D10, "Direct3DCreate10"); IDirect3D10* d3d = Direct3DCreate10(D3D_SDK_VERSION); D3DDISPLAYMODE d3ddm; d3d->GetAdapterDisplayMode(0, &d3ddm); D3DPRESENT_PARAMETERS d3dpp; ZeroMemory(&d3dpp, sizeof(d3dpp)); d3dpp.Windowed = 1; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat = d3ddm.Format; IDirect3DDevice9* d3dDevice = 0; d3d->CreateDevice(0, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &d3dDevice); DWORD* vtablePtr = (DWORD*)(*((DWORD*)d3dDevice)); present10 = vtablePtr[17] - (DWORD)hD3D10; d3dDevice->Release(); d3d->Release(); FreeLibrary(hD3D10); CloseHandle(hWnd); } long __stdcall HookedPresent10(IDirect3DDevice10* self, const RECT* src, const RECT* dest, HWND hWnd, void* unused) { BYTE* codeDest = (BYTE*)g_D3D10_Present; codeDest[0] = g_codeFragment_p10[0]; *((DWORD*)(codeDest + 1)) = *((DWORD*)(g_codeFragment_p10 + 1)); DrawIndicator(self); DWORD res = g_D3D10_Present(self, src, dest, hWnd, unused); codeDest[0] = g_jmp_p10[0]; *((DWORD*)(codeDest + 1)) = *((DWORD*)(g_jmp_p10 + 1)); return res; } void HookDevice10Methods() { HMODULE hD3D10 = GetModuleHandle("d3d10.dll"); g_D3D10_Present = (PRESENT10)((DWORD)hD3D10 + present10); g_jmp_p10[0] = 0xE9; DWORD addr = (DWORD)HookedPresent10 - (DWORD)g_D3D10_Present - 5; memcpy(g_jmp_p10 + 1, &addr, sizeof(DWORD)); memcpy(g_codeFragment_p10, g_D3D10_Present, 5); VirtualProtect(g_D3D10_Present, 8, PAGE_EXECUTE_READWRITE, &g_savedProtection_p10); memcpy(g_D3D10_Present, g_jmp_p10, 5); } DWORD __stdcall TF(void* lpParam) { GetDevice10Methods(); HookDevice10Methods(); return 0; } DWORD __stdcall KeyboardHook(void* lpParam) { while(1) { if(GetAsyncKeyState(VK_F1)) { indicator = !indicator; Beep(500,200); } Sleep(100); } return 0; } int __stdcall DllMain(HINSTANCE hInst, DWORD ul_reason_for_call, void* lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: CreateThread(0, 0, &TF, 0, 0, 0); CreateThread(0, 0, &KeyboardHook, 0, 0, 0); } return 1; }