Merlin Опубликовано 27 июля, 2016 Поделиться Опубликовано 27 июля, 2016 Доброго времени суток! На днях внимательно прочитал ЛУРК и решил не теряя времени заполнить не прожитые минуты своей жизни чем-то интересным на базе чего-то знакомого, собственно, поэтому и выбрал питон (знаю, что правильно будет "пайтон", но больше мне почему-то нравится, -питон). Скажу честно, по-мимо природной лени, на данный форум меня привлекли труды замечательного автора GameHackLab[RU] (здоровья ему!) . Свои силы в программировании решил опробовать на пиратских серверах WoW 1.12.1 (http://www.kronos-wow.com/), т.к. грабить награбленное -двойное удовольствие :)) Вообщем, решил написать свой трейнер на Python, ибо античит система "Warden" безжалостно уничтожает все известные читы (блокирует аккаунт), в том числе, БАН настигает сразу при попытке использовать SpeedHack в Cheat Engine 6.5.1. Бабло и шмот в первую очередь не интересуют, т.к. именно ради их достижения и есть охота побегать, поиграть. Задача для профи -минималистичная, задача для новичка -амбициозная! :)) Подскажите, пожалуйста, как перехватить адреса, оффсеты, опкоды для использования: 1. SpeeHack 2. Teleport 3. Invisible mode (без лимита по времени) Для хуков и инжектов использую модуль PyDBG, пока что удалось получить только имя героя: Скрытый текст from pydbg import * from pydbg.defines import * import utils import sys import struct import win32api import re import ctypes dbg = pydbg() found_program = False #valid_str = "Something to write" def handler_breakpoint(dbg): data = dbg.read_process_memory(relative_address,14) print "%s" % data # print "%s" % data.encode("hex") # wdata = ctypes.create_string_buffer(valid_str) # dbg.write(address, wdata, len(valid_str)) return DBG_CONTINUE for (pid, name) in dbg.enumerate_processes(): if name.lower() == "wow.exe": found_program = True hooks = utils.hook_container() dbg.attach(pid) print "Attaching with PID: %d" % pid for modules in dbg.enumerate_modules(): if str(modules)[2:6] == "WoW.": base_address = int((re.split(r', ', str(modules))[1])[0:-2]) print "Base address: 0x%08x" % base_address relative_address = base_address + 8551816 print "Relative address: 0x%08x" % relative_address dbg.set_callback(EXCEPTION_BREAKPOINT,handler_breakpoint) if found_program: print "-------------------------------" dbg.run() else: print "Error: Couldn't find process." sys.exit(-1) Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 28 июля, 2016 Поделиться Опубликовано 28 июля, 2016 (изменено) Для: 1. SpeeHack 2. Teleport Нужно будет отыскать функцию которая создает движение(CreateMove) и функцию которая подтверждает значения и "говорит" серверу, что все значения в том числе измененные тобой нормальные, подтверждение данных прошло успешно и сервер будет думать что все хорошо, даже если будешь бегать со скоростью света. В функции создающей движение обычно указывается время выборки кадров, его и надо изменять На счет 3. Invisible mode (без лимита по времени), не играл в wow, так что тут догадка, ищешь таймер, выходишь на главную функцию,дальше либо хукаешь функцию, либо изменяешь значения и так же подтверждаешь изменение той функцией которая "говорит" серверу, что все хорошо. Без функции подтверждения, тебя будет откидывать назад когда изменяешь значения координат к примеру. на питоне делать хук функции это извращение как по мне, на C++ есть уже готовые библиотеки для этого. Изменено 28 июля, 2016 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
Merlin Опубликовано 7 августа, 2016 Автор Поделиться Опубликовано 7 августа, 2016 Действительно, замучился писать на питоне, перешёл на C++, написал подмену координат и столкнулся с этим: В 28.07.2016в11:50, partoftheworlD сказал: Без функции подтверждения, тебя будет откидывать назад когда изменяешь значения координат к примеру Подскажите, пожалуйста, способ, как можно отловить функцию подтверждения? Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 7 августа, 2016 Поделиться Опубликовано 7 августа, 2016 (изменено) Трассировать код в отладчике. Не знаю как в WoW,но в кс генерировался CRC хеш. Где-то в конце главной функции будет вызов на подтверждение её значений. Изменено 7 августа, 2016 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения