Вопрос Как найти окончательный адрес?

Начинающий
Статус
Оффлайн
Регистрация
25 Авг 2023
Сообщения
12
Реакции[?]
0
Поинты[?]
0
Всем привет, надеюсь сможете помочь, делаю "чит" для одиночной игры. Через
чит енджин(СE) нашел адрес: 0x189354353AC(он меняется при выходите из игры) и 3 оффсета:
base = 0x189354353AC
offset1 = 0x18
offset2 = 0xC0
offset3 = 0xFFC

Писал чит используя только адрес, но после выхода из игры чит становился более не актуален.
Затем я посмотрел интернет, задал вопросы ai и понял, что надо считать конечный адрес так: память + оф1 + оф2 + оф3 т.е:
g1 = base + (offset1 + offset2 + offset3)
но после этих рассчетов полученный адрес не показывает реальное значение, хотя менять и смотреть его можно, без вылета чита


вот сам "код"


import random
import time
import pymem
base = 0x189354353AC
f1 = 0x18
f2 = 0xC0
f3 = 0xFFC

total = f1 + f2 + f3
print(total)
fina = base + total
print(fina)
finalll = hex(fina)
print(fun)


game = pymem.Pymem("game")
read_metal = game.read_float(finalll)
print("Значение по адресу 0x2479A2232DC:", read_metal)
new_metal = float(input("Новое значение:"))
game.write_float(finalll, new_metal)
print("Успешно!")
input()
сможет кто помочь? Я хочу узнать как найти такой адрес который вбил в чит и он работает даже, если игра перезапускается.
Я еще совсем зеленая
 
Начинающий
Статус
Оффлайн
Регистрация
31 Мар 2024
Сообщения
52
Реакции[?]
12
Поинты[?]
13K
Не совсем так это работает. Это все поинтеры на структуры и прочее
Ты читаешь сначала base + f1
Потом этот результат читаешь с result + f2
И так же снова с 3 оффсетом result2 + f3
Это уже будет то значение что ты ищешь
 
Начинающий
Статус
Оффлайн
Регистрация
25 Авг 2023
Сообщения
12
Реакции[?]
0
Поинты[?]
0
я наверное туплю, но...
вот посмотри как я сделала
import random
import time
import pymem
base = 0x281F4219D5C
f1 = 0x18
f2 = 0xC0
f3 = 0xFFC

res = base + f1
res2 = res + f2
res3 = res2 + f3
print(hex(res3)) # = 0x281f421ae30

Forts = pymem.Pymem("Forts.exe")
read_metal = Forts.read_float(0x281f421ae30)
print("Значение по адресу 281F4219D5C:", read_metal)
new_metal = float(input("Новое значение:"))
Forts.write_float(0x281f421ae30, new_metal)
print("Успешно!")
input()

ошибок нет но адрес показывает, не то значение
Можешь еще раз дать пожалуйста формулу для расчета того самого числа, а лучше сразу дать готовую, я посижу поразберусь
Не совсем так это работает. Это все поинтеры на структуры и прочее
Ты читаешь сначала base + f1
Потом этот результат читаешь с result + f2
И так же снова с 3 оффсетом result2 + f3
Это уже будет то значение что ты ищешь
)))
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
25 Авг 2023
Сообщения
12
Реакции[?]
0
Поинты[?]
0
(272 скрин) меняю я воооооон ту 2,на скрине показываю сразу код мб так удобнее
( меняя адрес, который посчитали ничему не приводит )

(273 скрин) откуда все достала
* После перезапуска игры код на скрине вообще перестал работать ( вылет )
 

Вложения

Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
16 Авг 2024
Сообщения
27
Реакции[?]
5
Поинты[?]
5K
Я конечно может и не прав, но помоему нужно узнать basemoduleaddress нет? А потом уже к нему прибавлять все смещения и читать память. Просто та переменная base, которая у тебя уже есть. Она естественно будет неактуальна после перезапуска процесса игры и придется его менять каждый раз
 
Сверху Снизу