Merlin

Трейнер на Python

4 сообщения в этой теме

Доброго времени суток!

На днях внимательно прочитал ЛУРК и решил не теряя времени заполнить не прожитые минуты своей жизни чем-то интересным на базе чего-то знакомого, собственно, поэтому и выбрал питон (знаю, что правильно будет "пайтон", но больше мне почему-то нравится, -питон). Скажу честно, по-мимо природной лени, на данный форум меня привлекли труды замечательного автора 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)

 

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для:

1. SpeeHack

2. Teleport

 

Нужно будет отыскать функцию которая создает движение(CreateMove) и функцию которая подтверждает значения и "говорит" серверу, что все значения в том числе измененные тобой нормальные, подтверждение данных прошло успешно и сервер будет думать что все хорошо, даже если будешь бегать со скоростью света. В функции создающей движение обычно указывается время выборки кадров, его и надо изменять

 

На счет 3. Invisible mode (без лимита по времени), не играл в wow, так что тут догадка, ищешь таймер, выходишь на главную функцию,дальше либо хукаешь функцию, либо изменяешь значения и так же подтверждаешь изменение той функцией которая "говорит" серверу, что все хорошо. 

 

Без функции подтверждения, тебя будет откидывать назад когда изменяешь значения координат к примеру. на питоне делать хук функции это извращение как по мне, на C++ есть уже готовые библиотеки для этого.

Изменено пользователем partoftheworlD
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Действительно, замучился писать на питоне, перешёл на C++, написал подмену координат и столкнулся с этим:

В 28.07.2016в11:50, partoftheworlD сказал:

Без функции подтверждения, тебя будет откидывать назад когда изменяешь значения координат к примеру

Подскажите, пожалуйста, способ, как можно отловить функцию подтверждения?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Трассировать код в отладчике. Не знаю как в WoW,но в кс генерировался CRC хеш. Где-то в конце главной функции будет вызов на подтверждение её значений.

Изменено пользователем partoftheworlD
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас