-
Постов
351 -
Зарегистрирован
-
Посещение
-
Победитель дней
39
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные A1t0r
-
-
Скачал репак. Попробовал по пунктам:
1. Нашёл ячейку с количеством земли.
2. Поставил бряк на запись(write).
3. В найденной инструкции посмотрел значение edi.
4. Его поискал в памяти с галочкой в Writable. Нашлось 18 адресов.
5. Взял и поставил на первую, вторую бряк на доступ. Ничего не нашлось.
В этом случае нужно все адреса проверить на доступ?
Попробуй остальные, благо их не так уж много. Где-то должна быть та, от которой игра будет подтормаживать, значит она.
-
Да, исправил на 15 адресов. Спасибо.
-
Вот только что попробовал с квадратом, тоже не находит
Я использовал VEH отладчик (так как с виндовсовским вылетает игра) и ставил квадрат в ту функцию, искал сразу на доступ и на запись. Ни там, ни там нету инструкций при поиске второго указателя.
Может у меня что-то не настроено? или настроено что-то не то? или я что-то не так делаю?
У меня стоит Windows debugger. VEH использовал редко.
Только что прошёлся ещё раз. Ковырял через землю.
1. Нашёл ячейку с количеством земли.
2. Поставил бряк на запись(write).
3. В найденной инструкции посмотрел значение edi.
4. Его поискал в памяти с галочкой в Writable. Нашлось примерно 15 адресов.
5. Взял и поставил на первый бряк на доступ. Нашлось очень много инструкций.
6. Взял первую. Посмотрел в ней edi. (а смещения то мы записываем!!! здесь +1C). И запустил снова поиск в памяти с теми же параметрами.
7. Нашлась туча значений. Среди них 5-я единственная зелёная(статический адрес и расположен в CraftWorld.exe).
Вот и получилась цепочка [[[CraftWorld.exe+3168B4]+1C]+X]
- 1
-
A1t0r, спасибо. Потом попробую без этой галочки. А ты без неё искал?
С квадратом, чтобы найти все
-
У меня в CE есть следующее:
Параметры сканирования памяти
Перезаписыв. < это оно? там стоит галочка, её снять? на что это влияет?
Да, хотя тогда правильнее Rewritable.
Если галочка стоит, то поиск будет происходить в секциях с возможностью записи значений. Если нет, то запись в этих секциях запрещена, можно только читать. Если не уверен где искать ставь закрашенный квадратик, будет искать везде.
-
У меня CE русский, что значит эта галочка на русском?
Write - запись, соответственно - записываемые или что-то такое
-
A1t0r, а в каких случаях надо ставить бряк на доступ, запись? в смысле какой из них куда приведёт?
Если поставить на доступ, то поймаешь инструкции которые каким-либо образом читают или пишут значения по этому адресу. На запись - только модифицирующие данное значение.
Адреса указателей не находились, возможно из-за того,что ты не убрал галочку с Writable
-
Ну вот а как мне самому это всё найти? Вы мне дали все адреса и байты для поиска. А как самому найти это всё?
Я начал поиск с дерева(или земли, не помню))).
Добыл одно, поискал, нашёл ещё одно отсеял и т.д., пока не нашёл ячейку.
Поставил бряк на запись. Нашлась инструкция(та что выше), посмотрел что в edi. Поискал это значение, среди найденных взял "зелёный" адрес(не последний, там системная библиотека). Составил цепочку(на скрине). Теперь если найти адрес ресурса и вычесть значение которое в [[[CraftWorld.exe+3168B4]+1C]+0] будет как раз смещение от начала структуры(значение X)
-
о_О но как?
Также как и с землёй только вместо 14c будет 419c. Это благодаря тому, что относительно друг друга ячейки не сдвигаются. Нашёл адрес начала и считаю от него, хотя такого указателя игра может не использовать.
-
Сначала надо добыть пару монеток. Сейчас попробую
смещение монет будет +419C
Адрес инструкции искать по сигнатуре 01 9F 4C 01 00 00
-
Если нужна таблица для CE, то вот пример указателя на землю:
Почему не работал бряк? Возможно нерабочий временный указатель
-
Craft The World
Взял версию 0.9.033. repack от United Packer Group
Удалось найти инструкцию, которая увеличивает кол-во ресурсов и корневой указатель.
Удалось модифицировать инструкцию, чтобы любое изменение(получение, трата, крафт) ресурса давало максимум(обрезается) 999.
00D4FEB7 - 01 9F 4C010000 - add [edi+0000014C],ebx
||
V
mov [edi+0000014C],ediВ edi большое число, но оно режется до 999.
Вот формула поиска значений ресурсов:
[[[CraftWorld.exe+3168B4]+1C]+X]
где X:
+14c земля
+5e4 камни
+13ac дрова
+98e4 каменный топор
+f710 лестницаОсталось найти значения смещений для всех ресурсов)
- 1
-
Хочу в игре денег наколдовать, адрес со значением нашёл. Указатель на этот адрес нашёл. А вот когда ищу кто указывает на найденный указатель, то ничего не находит
Ставлю бряк в СЕ на доступ к указателю, трачу денешку а инструкции не появляются в окне бряка. В чём причина и что делать чтобы найти искомое?
Название игры можно? Интересно посмотреть самому.
-
Что можно предпринять что бы искало?
В CE в главном окне поставить/убрать(или оставить закрашенной, если не знаешь точно) галочку в пункте Writable, можно ещё Executable попробовать. Может не находиться, но редко из-за того что включён быстрый поиск с выравниванием.
- 1
-
Да, уже сам додумался. Но тут такой вопрос почему CE в одном случае нашел то, что обведено красным а во втором нет? И даже 1000A2B2 не ищет, хотя этот адрес работает нормально если смотреть что он содержит то все норм показывает..
Как вариант, не ищется потому что установлен поиск в секциях с возможностью или невозможностью записи.
-
10000000+A2B2=1000A2B2, не? Или я не понял)
-
Значение патронов типа float? А по смещению B8C тоже float?
Опоздал)
-
Кстати я так и не вкурил чем же отличается
db 90 90от
nop
nopНичем. nop - это инструкция, а db 90 90 значит записать код инструкции 2 раза по какому-либо адресу.
Вторая инструкция, возможно, это уменьшение кол-ва гранат или кол-ва патронов не-в-обойме.
-
Если адрес патронов динамический, то по-любому должна существовать цепочка указателей от хотя бы одного статичного. Игра ведь должна как-то "добираться" к ячейке с патронами. А что на месте второй инструкции?
90h это код инструкции nop
-
Недавно купил в стиме и решил сломать, что называется для галочки) Можно будет доделать как и в диабло быструю прокачку и ещё что-нибудь по вкусу. В архиве скрипт трейнера и сам трейнер.
Набор стандартный: бессмертие и бесконечная мана.
Поиграл 15 минут всё было нормально. Тестим.
- 1
-
alloc(newmem,2048)
label(branch2)
label(returnhere)
label(originalcode)
label(exit)
newmem:
originalcode:
cmp [ESI+67],(FLOAT)64
jne branch2
mov [esi+76],edx
mov edx,[ebp-54]
jmp exit
branch2:
mov [esi+68],(FLOAT)100
mov edx,[ebp-65]
exit:
jmp returnher
тут всё так?
Этот кусок правильный, только допиши e на конце jmp returnhere, метку originalcode и её объявление можешь убрать и если на выходе после метки exit сразу переход на returnhere можно сделать так:
[убрать объявление метки exit]
...
mov edx,[ebp-54]
jmp returnhere
branch2:
mov [esi+68],(FLOAT)100
mov edx,[ebp-65]
jmp returnhereНадеюсь куда return'ить уже написано)
-
Регистры? registersymbol имеешь в виду? А что там?)
В секции активации скрипта - создал, в секции отключения скрипта - уничтожил. Вот в общем-то и все различие по поводу "жизни" таких флагов.
Нет, я про EDF DSD DFT GGR FER
И про синтаксис mov
-
branch2 - это метка, т.е. прежде, чем ее использовать в скрипте - ее надо объявить:
alloc(newmem,2048)
label(branch2)Я уже молчу про регистры)
-
Можеш написать шаблон к 3 на основе моего выше
1.если EDF+47 РАВНО 50 ТО
2.ВЫПОЛНЯЕМ ОБЫЧНУЮ ИНСТРУКЦИЮ ТИПА
MOV DSD+54
MOV DFT+78
А ЕСЛИ НЕ РАВНО 1 ТО ВЫПОЛНЯЕМ ДРУГУЮ ИНСТРУКЦИЮ ТИПА
MOV GGR+76
MOV FER+84
3.ВЫХОД ИЗ ИНСТРУКЦИИ
Тоесть надо если параметр = 50 то выполняем одну инструкцию а если не равен другую
если EDF+47 РАВНО 50 ТО...
А ЕСЛИ НЕ РАВНО 1 ТО ВЫПОЛНЯЕМ ДРУГУЮ ИНСТРУКЦИЮ ТИПА...
вот это не понял, два противоречивых сравнения, напишу ==50/ !=50
орфография сохранена)
cmp [EDF+47],#50
jne branch2
mov DSD+54 //если ==50
mov DFT+78
jmp exit
branch2: //если !=50
mov GGR+76
mov FER+84
exit:
Многоуровневый указатель (проблема)
in Вопросы по созданию читов в одиночных играх
Опубликовано
Версия игры и репак совпадают? И ещё я использую CE 6.3 english. В 6.4 у меня почему-то луа скрипты даже не открываются.