Сейчас на форуме: hgdagon (+5 невидимых)

 eXeL@B —› Программирование —› написание трэйнера для игры
Посл.ответ Сообщение

Ранг: 78.3 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 31 июля 2007 00:49 · Поправил: fakit
· Личное сообщение · #1

с помощью артмани в игре я нахожу одно значение, но оно всегда по разным адресам, как тогда напистаь трэйнер что бы автоматически находить нужное значение и изменять ? (понятно что по read/writeprocessmemory но как узнать адрес ?)



Ранг: 221.3 (наставник), 135thx
Активность: 0.190.07
Статус: Участник

Создано: 31 июля 2007 00:57 · Поправил: v0id2k
· Личное сообщение · #2

fakit
Кури team-x.ru/guru-exe/path=Magazines%2FGHBook/

[ADDED]
Почитай руководство к ArtMoney, там дельно написано.
Глава 'Использование указателей и "Авто изменение адресов"'
[/ADDED]

-----
xchg dword [eax], eax





Ранг: 58.1 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 31 июля 2007 00:58
· Личное сообщение · #3

Можно попробовать посмотреть вокруг этого адреса, какие-нибудь статичные данные, искать их через ReadProcessMemory, потом соответственно находить нужный нам адрес.



Ранг: 78.3 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 31 июля 2007 02:22
· Личное сообщение · #4

v0id2k tnx




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 31 июля 2007 02:28
· Личное сообщение · #5

fakit, думаю что тебе надо разобраться в самой проге. Анализ дизасма покажет тебе что и где создаётся и как оно хранится. Например, где-нить будет глобальная переменная (или instance) в которой будет указатель на что-то выделенное динамически, и т.д. В итоге, ты можешь написать прогу которая найдёт нужные тебе данные в адресном пространстве проги. Но есть эому цена - много времяни убъёшь на анализ и отладку.



Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 31 июля 2007 10:59
· Личное сообщение · #6

fakit
есть более кульный способ - артмоней находишь адрес в игре где лежит значение, подключаешся олей к игре, ставешь бряк на запись (может потребоваться на чтение если замутишь подругому), брякаешся на месте где значение например отнимается, нопишь отнимание и например бабло всегда только растет..



Ранг: 78.3 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 31 июля 2007 12:29
· Личное сообщение · #7

по способу из GHBook не получается,
имеется такой код
...
759a2f CC int3
00759a30 55 push ebp
00759a31 8BEC mov ebp,esp
00759a33 8B4508 mov eax,[ebp+0x8]
00759a36 56 push esi
00759a37 8BF1 mov esi,ecx
00759a39 F7464000200000 test dword ptr [esi+0x40],0x2000
00759a40 7404 je short 0x00759A46
00759a42 85C0 test eax,eax
00759a44 740C je short 0x00759A52
00759a46 50 push eax
00759a47 E8B4F7FFFF call 0x00759200 // а этот адресс константа
00759a4c D99E84000000 fstp dword ptr [esi+0x84] //<---- это нада изменить и заморозить
00759a52 5E pop esi
00759a53 5D pop ebp
00759a54 C20400 retn 0x4
00759a57 CC int3
...

В самой ф-ции 759200 esi тоже мутный, там его не вытянуть на константу.



Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 31 июля 2007 17:40
· Личное сообщение · #8

исправь je на jmp в 759a44 и je на nop в 759a40 и значение будет константой.



Ранг: 78.3 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 31 июля 2007 18:40 · Поправил: fakit
· Личное сообщение · #9

gegter ну если на то пошло, то я в fstp dword ptr [esi+0x84] лучше сразу забью свою константу, но это же трейнер зачем патчить сам файл ? а если в памяти это все делать - дисасэмблить и т.д. - то это гемор.




Ранг: 147.7 (ветеран), 50thx
Активность: 0.120
Статус: Участник
sv_cheats 1

Создано: 01 августа 2007 06:47 · Поправил: SER[G]ANT
· Личное сообщение · #10

Укажи хоть что за игра и что именно ты хочешь сделать ?

Исходя из вопроса заданном в первом посте, на мой взгляд, тебе лучше переводить DMA адрес в статический



Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 02 августа 2007 05:50
· Личное сообщение · #11

fakit
а трэйнер разве не патчит память или если тебе угодно - разве не может патчить память... это называется заморозка значения. вот и сделай чтобы трейнер подменил тебе пару байт в памяти при нажатии например горячей клавиши.



Ранг: 72.4 (постоянный), 33thx
Активность: 0.050.03
Статус: Участник

Создано: 02 августа 2007 06:34
· Личное сообщение · #12

я делал так:
Можно попробовать посмотреть вокруг этого адреса, какие-нибудь статичные данные, искать их через ReadProcessMemory, потом соответственно находить нужный нам адрес.

Но можно просто этот адрес пропатчить на статический и юзать его. можно аж трейнером пропатчить




Ранг: 147.7 (ветеран), 50thx
Активность: 0.120
Статус: Участник
sv_cheats 1

Создано: 02 августа 2007 07:10
· Личное сообщение · #13

fakit пишет:
00759a4c D99E84000000 fstp dword ptr [esi+0x84] //<---- это нада изменить и заморозить


вот накатал скрипт для --> TSearch<-- http://team-x.ru/guru-exe/Tools/Gamehacking/Memory%20Scanners/TSearch/TSearch%20v1.6b.zip

offset 00759a4c
jmp CODE-CAVE
nop
offset 00759a4c
mov dword ptr [esi+0x84],0xXXX (XXX - значение)
fstp dword ptr [esi+0x84]
jmp 00759a51

т.е. значение и изменилось и заморозилось как ты и хотел при условии что ты нашел правильную инструкцию.

А вообще... задавай вопросы более подробно.. а то в 1 сообщении ты хочешь одно.. в следующем.. совсем другое


 eXeL@B —› Программирование —› написание трэйнера для игры
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати