Перейти к содержанию

Рекомендуемые сообщения

Думаю, стоит изменять значение перед загрузкой в стек.

 

""+1B090433: D9 87 80 00 00 00     -  fld dword ptr [edi+00000080]

 

Это может избавить от лишних телодвижений, если это значение ещё где-то используется или будет использоваться.

 

15 минут назад, DeadCraft сказал:
  Показать содержимое


{ Game   : tld.exe
  Version: 
  Date   : 2017-08-04
  Author : ?????????????

  This script does blah blah blah
}

[ENABLE]

aobscan(Torch,D9 9F 80 00 00 00 BA) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  //fstp dword ptr [edi+00000080]
  jmp return

Torch:
  jmp newmem
  nop
return:
registersymbol(Torch)

[DISABLE]

Torch:
  db D9 9F 80 00 00 00

unregistersymbol(Torch)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1B09043E

""+1B09041F: 83 EC 04              -  sub esp,04
""+1B090422: D9 1C 24              -  fstp dword ptr [esp]
""+1B090425: 50                    -  push eax
""+1B090426: 39 00                 -  cmp [eax],eax
""+1B090428: E8 03 50 4E F0        -  call 0B575430
""+1B09042D: 83 C4 10              -  add esp,10
""+1B090430: D9 5D F4              -  fstp dword ptr [ebp-0C]
""+1B090433: D9 87 80 00 00 00     -  fld dword ptr [edi+00000080]
""+1B090439: D9 45 F4              -  fld dword ptr [ebp-0C]
""+1B09043C: DE C1                 -  faddp 
// ---------- INJECTING HERE ----------
""+1B09043E: D9 9F 80 00 00 00     -  fstp dword ptr [edi+00000080]
// ---------- DONE INJECTING  ----------
""+1B090444: BA 20 4F 58 34        -  mov edx,34584F20
""+1B090449: 83 EC 0C              -  sub esp,0C
""+1B09044C: 57                    -  push edi
""+1B09044D: E8 F6 7C 3A EA        -  call 05438148
""+1B090452: 83 C4 10              -  add esp,10
""+1B090455: 8B F0                 -  mov esi,eax
""+1B090457: D9 86 64 01 00 00     -  fld dword ptr [esi+00000164]
""+1B09045D: DD 5D D8              -  fstp qword ptr [ebp-28]
""+1B090460: D9 E8                 -  fld1 
""+1B090462: DD 5D D0              -  fstp qword ptr [ebp-30]

 

 

Сделал очень грубо. Вопрос в том как прикрутить ему (float) 0 что бы значение было всегда 100% ? Чисто ради интереса 

 

И так лучше не делать, возможен краш, если игра будет брать из стека не выгруженное значение [edi+80] вместо нужного ей.

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

8 часов назад, LIRW сказал:

Он начнет говорить - мол я не чувствую своих конечностей и вот спустя какое то время, у него ноги откажут :lol: 

Он такое иногда говорит когда температура падает ( холодно ) примерно начиная с 88 и выше. Но! Ничего такого не было. Ходить мог и даже усталость специально повысил до 100 ( 0 в игре ). Ждал минут 10 + еще потом включил спидхак. Возможно я что-то не так делаю?

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

9 часов назад, what228 сказал:

Возможно я что-то не так делаю?

Я вчера пробовал найти значение, но что то не вышло. Даже носки снимал и по сугробу босиком ходил. Странный этот момент однако в игре, но я точно запомнил, что он настаёт в том момент, когда он начинает говорить - мол я не чувствую своих конечностей и спустя прим минуту, а то и две - ноги отказывают.  Попадется ещо раз подобное, я на видео тебе покажу :) он идет по 1 см после этого. И это не баг какой то, я подобное много раз встречал и в альфе и вот вчера пока бегал и искал факел на палке который, та же ситуация с ногами произошла. Кстати, ранее это происходило как то спонтанно и без каких либо визуальных признаков - ну кроме как отказывания ног, а вот вчера когда уже играл - то на экране появлялся градусник красный и под ним стрелка, указывающая вниз. Мол температура понижается и бум ноги отказывают. В общем что бы подобное происходило чаще - надо ночью этого ожидать. Так как ночью мороз больше и подобная ситуация часто возникает. Да и сложность поставь - не званный гость. Там температура в 15 раз ниже стандартной.  

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

37 минут назад, LIRW сказал:

Да и сложность поставь - не званный гость. Там температура в 15 раз ниже стандартной.  

Я ночью и пробовал ) А вот про сложность вроде была скиталец но теперь попробую на "не званный гость".

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

Короче не знаю, надо оно вам или нет, но вот хаки на действия "разламывать" и "открыть" (аптечку)

Как там дальше по сюжетке надо это или нет - я хз. Увидел прогрессбар - сломал.

Быстро разломать:

Скрытый текст

[ENABLE]

registersymbol(INSTA_BREAK_TIMER)
aobscan(INSTA_BREAK_TIMER,83 C4 10 D9 87 8C 00 00 00 D9 47 58 DF F1 DD D8) // should be unique

INSTA_BREAK_TIMER:
  db 83 C4 10 D9 47 58 90 90 90

[DISABLE]

INSTA_BREAK_TIMER:
  db 83 C4 10 D9 87 8C 00 00 00

unregistersymbol(INSTA_BREAK_TIMER)

 

Быстро открыть:

Скрытый текст

[ENABLE]

registersymbol(INSTA_OPEN)

aobscan(INSTA_OPEN,D9 45 0C D9 9E 9C 00 00 00) // should be unique
alloc(newmem,$1000)

label(return)

newmem:
  mov [ebp+0C], (float)0.1
  fld dword ptr [ebp+0C]
  fstp dword ptr [esi+0000009C]
  jmp return

INSTA_OPEN:
  jmp newmem
  nop
  nop
  nop
  nop
return:

[DISABLE]

INSTA_OPEN:
  db D9 45 0C D9 9E 9C 00 00 00

unregistersymbol(INSTA_OPEN)
dealloc(newmem)

 

В последнем можно немножко пошаманить со значением "0.1", чтоб не зависала надпись на экране "Открыть аптечку". Можно поставить 0.15, все равно быстро достаточно. Фиксить надпись лень, соре.

Надеюсь из-за этих скриптов ничего лишнего не сломается, ибо тестил только на двух объектах)

Изменено пользователем uhx
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Какая-то очень странная игра, если честно) Что тут с памятью и кодом творится - вообще не понятно.

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

На мгновенное действие (когда надо кликать ЛКМ):

Скрытый текст

[ENABLE]

registersymbol(insta_action_bar)

aobscan(insta_action_bar,D9 5F 6C D9 47 6C D9 E8 DF F1 DD D8) // should be unique

insta_action_bar:
  db D9 5F 6C D9 47 6C D9 E8 DF F0

[DISABLE]

insta_action_bar:
  db D9 5F 6C D9 47 6C D9 E8 DF F1

unregistersymbol(insta_action_bar)

 

Не знаю, работает ли на стиме. Или долго ли продержится, поэтому выкладываю все листинги, чтоб можно было сделать сигнатуры даже если смещения поменяются. Но тогда надо будет и [DISABLE] часть редактировать, чтоб верно все на места возвращало:

Быстрое открытие:

Скрытый текст

{
// ORIGINAL CODE - INJECTION POINT: 3E9724FA

3E9724E7: 83 C4 10              -  add esp,10
3E9724EA: C9                    -  leave 
3E9724EB: C3                    -  ret 
3E9724EC: 00 00                 -  add [eax],al
3E9724EE: 00 00                 -  add [eax],al
3E9724F0: 55                    -  push ebp
3E9724F1: 8B EC                 -  mov ebp,esp
3E9724F3: 56                    -  push esi
3E9724F4: 83 EC 14              -  sub esp,14
3E9724F7: 8B 75 08              -  mov esi,[ebp+08]
// ---------- INJECTING HERE ----------
// Тут в идеале конечно fld заменить на fldz, но надпись не пропадает.
// Есть некоторый минимум времени, чтоб сработали нужные инструкции
// иначе она навечно у вас застынет)
3E9724FA: D9 45 0C              -  fld dword ptr [ebp+0C]
3E9724FD: D9 9E 9C 00 00 00     -  fstp dword ptr [esi+0000009C]
// ---------- DONE INJECTING  ----------
3E972503: 8B 05 24 BF DA 0A     -  mov eax,[0ADABF24]
3E972509: 83 EC 0C              -  sub esp,0C
3E97250C: 50                    -  push eax
3E97250D: 39 00                 -  cmp [eax],eax
3E97250F: E8 B4 B0 86 CD        -  call 0C1DD5C8
3E972514: 83 C4 10              -  add esp,10
3E972517: 89 86 A0 00 00 00     -  mov [esi+000000A0],eax
3E97251D: 8B 05 24 BF DA 0A     -  mov eax,[0ADABF24]
3E972523: 83 EC 08              -  sub esp,08
3E972526: 6A 0D                 -  push 0D
}

 

Мгновенное разламывание

Скрытый текст

{
// ORIGINAL CODE - INJECTION POINT: 1AB22B87

1AB22B68: D9 87 8C 00 00 00     -  fld dword ptr [edi+0000008C]
1AB22B6E: D9 47 58              -  fld dword ptr [edi+58]
1AB22B71: DE F9                 -  fdivp st(1),st(0)
1AB22B73: 83 EC 08              -  sub esp,08
1AB22B76: 83 EC 04              -  sub esp,04
1AB22B79: D9 1C 24              -  fstp dword ptr [esp]
1AB22B7C: 50                    -  push eax
1AB22B7D: 39 00                 -  cmp [eax],eax
1AB22B7F: E8 74 09 9B 12        -  call 2D4D34F8
1AB22B84: 83 C4 10              -  add esp,10
// ---------- INJECTING HERE ----------
// Вот это максимальное значение, до которого тикает таймер.
1AB22B87: D9 87 8C 00 00 00     -  fld dword ptr [edi+0000008C]
// ---------- DONE INJECTING  ----------
1AB22B8D: D9 47 58              -  fld dword ptr [edi+58]
// Можно пропатчить сравнение ниже fcomip st(0), st(0)
// после этого обычно процесс мгновенное завершается, тут скорее всего так же.
// самый изящный вариант)
1AB22B90: DF F1                 -  fcomip st(0),st(1)
1AB22B92: DD D8                 -  fstp st(0)
1AB22B94: 0F 8A 5D 01 00 00     -  jp 1AB22CF7
1AB22B9A: 0F 87 57 01 00 00     -  ja 1AB22CF7
1AB22BA0: 83 EC 0C              -  sub esp,0C
1AB22BA3: 57                    -  push edi
1AB22BA4: E8 E7 01 00 00        -  call 1AB22D90
1AB22BA9: 83 C4 10              -  add esp,10
1AB22BAC: E9 46 01 00 00        -  jmp 1AB22CF7
}

 

Быстрое действие (ЛКМ)

Скрытый текст

{
// ORIGINAL CODE - INJECTION POINT: 1AAF1B4B

1AAF1B2C: D9 47 6C              -  fld dword ptr [edi+6C]
1AAF1B2F: D9 47 60              -  fld dword ptr [edi+60]
1AAF1B32: DE C1                 -  faddp 
1AAF1B34: D9 5F 6C              -  fstp dword ptr [edi+6C]
1AAF1B37: D9 47 6C              -  fld dword ptr [edi+6C]
1AAF1B3A: 83 EC 0C              -  sub esp,0C
1AAF1B3D: 83 EC 04              -  sub esp,04
1AAF1B40: D9 1C 24              -  fstp dword ptr [esp]
1AAF1B43: E8 F8 E3 87 EA        -  call 0536FF40
1AAF1B48: 83 C4 10              -  add esp,10
// ---------- INJECTING HERE ----------
1AAF1B4B: D9 5F 6C              -  fstp dword ptr [edi+6C]
1AAF1B4E: D9 47 6C              -  fld dword ptr [edi+6C]
// ---------- DONE INJECTING  ----------
1AAF1B51: D9 E8                 -  fld1 
// тут точно можно пропатчить fcomip, в скрипте так и сделано
1AAF1B53: DF F1                 -  fcomip st(0),st(1)
1AAF1B55: DD D8                 -  fstp st(0)
1AAF1B57: 7A 0E                 -  jp 1AAF1B67
1AAF1B59: 77 0C                 -  ja 1AAF1B67
1AAF1B5B: 8B 47 70              -  mov eax,[edi+70]
1AAF1B5E: 40                    -  inc eax
1AAF1B5F: 89 47 70              -  mov [edi+70],eax
1AAF1B62: D9 EE                 -  fldz 
1AAF1B64: D9 5F 6C              -  fstp dword ptr [edi+6C]
}

 

Мгновенная перевязка (или вообще любой хил, т.к. таблетки тоже работают):

Скрытый текст

[ENABLE]

registersymbol(insta_heal)

aobscan(insta_heal,DE F9 D9 5D D8 D9 45 D8 D9 EE D9 E8 83 EC 04) // should be unique

insta_heal:
  db DE F9 D9 5D D8 D9 E8 90 D9 EE D9 E8 83 EC 04

[DISABLE]

insta_heal:
  db DE F9 D9 5D D8 D9 45 D8 D9 EE D9 E8 83 EC 04

unregistersymbol(insta_heal)

{
// ORIGINAL CODE - INJECTION POINT: 193A3828

193A3808: E9 D0 01 00 00     -  jmp 193A39DD
193A380D: D9 47 60           -  fld dword ptr [edi+60]
193A3810: DD 5D D0           -  fstp qword ptr [ebp-30]
193A3813: E8 E8 6E 16 14     -  call 2D50A700
193A3818: DD 45 D0           -  fld qword ptr [ebp-30]
193A381B: D9 C9              -  fxch st(1)
193A381D: DE C1              -  faddp 
193A381F: D9 5F 60           -  fstp dword ptr [edi+60]
193A3822: D9 47 60           -  fld dword ptr [edi+60]
193A3825: D9 47 5C           -  fld dword ptr [edi+5C]
// ---------- INJECTING HERE ----------
193A3828: DE F9              -  fdivp st(1),st(0)
193A382A: D9 5D D8           -  fstp dword ptr [ebp-28]
// ---------- DONE INJECTING  ----------
193A382D: D9 45 D8           -  fld dword ptr [ebp-28]
193A3830: D9 EE              -  fldz 
193A3832: D9 E8              -  fld1 
193A3834: 83 EC 04           -  sub esp,04
193A3837: 83 EC 04           -  sub esp,04
193A383A: D9 1C 24           -  fstp dword ptr [esp]
193A383D: 83 EC 04           -  sub esp,04
193A3840: D9 1C 24           -  fstp dword ptr [esp]
193A3843: 83 EC 04           -  sub esp,04
193A3846: D9 1C 24           -  fstp dword ptr [esp]
}

 

 

Изменено пользователем uhx
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

56 минут назад, uhx сказал:

Какая-то очень странная игра, если честно) Что тут с памятью и кодом творится - вообще не понятно.

Так это же супер Юнити :) с ним постоянно такое происходит.  

 

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

1 час назад, uhx сказал:

Быстрое действие (ЛКМ)

А быстрое действие - это я так понял, функция поиска предметов в шкафах, ящиках и так далее ?  А то я как то тоже делал подобное, но открывать то открывает, а предметы то не генерирует не какие почему то :rolleyes: Ну знаешь - к примеру нажимаешь мышью поиск в шкафу и вот пока идет поиск, то выпадают якобы найденные там предметы, а если мгновенно прошарить там, то что то не чего не выпадает :)  Может конечно в финальной версии игры такого нет, но в Альфе было.  Да и не сказать, что после Альфы в релизе какие то отличия есть.. Всё одно и тоже и код тот же. У меня с Альфы паттерны не которые находит в релизе даже. 

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

2 минуты назад, LIRW сказал:

А быстрое действие - это я так понял, функция поиска предметов в шкафах, ящиках и так далее ?

Не. Не знаю, когда в начале осколок вытаскиваешь из руки то требуется тыкать ЛКМ часто, типа усилия прилагаешь. А рысканье по ящикам это "Быстрое открытие", там все норм.

Изменено пользователем uhx
Ссылка на комментарий
Поделиться на другие сайты

7 минут назад, uhx сказал:

А рысканье по ящикам это "Быстрое открытие", там все норм.

Понял.... Значит исправили они функцию.... 

А ноги у тебя в игре ещо не отказывали :D ? Я щас вот дела дома сделаю на часок - попробую её опять найти эту функцию и покажу вам. Ну дам сохранение с ней. А то нас трое игру смотрят и не кому не попадалось подобное.. :rolleyes: прям странно как то. 

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

Короче, есть вариант тупо в C# Decompiler загнать Assembly-CSharp и посмотреть исходники игры))

Я хочу сделать спавн шмотки, но в CE тяжеловато такое реверсить, а с IDA тоже не получится рефакторить - дампнуть код игры не представляется возможным, он не располагается в каком-либо модуле. Просто выделенная память, не знаю что в таком случае делать.

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

51 минуту назад, uhx сказал:

Просто выделенная память, не знаю что в таком случае делать.

Сделай дамп этого куска памяти.

 

Yndvgm6waXo.jpg

 

Плагин называется OllyDumpEx, а если без плагина, то подключаешь IDA к  процессу, ищешь нужный участок памяти, выделяешь и тыкаешь Edit->Export Data и сохраняешь с расширением .bin

Если хочешь заснуть под декомпилятор, то желательно иметь полный дамп(память + exe/dll) иначе выйдет не очень.

 

Ссылку забыл http://low-priority.appspot.com/ollydumpex/

 

 

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

8 часов назад, DeadCraft сказал:

Полная диЧь творится в DEX =)

Вот сохранка где ноги не идут :D просто продолжить нажми и появишься возле маяка. Но стоит заметить, что не каких болезней или растяжений - нет!

Longe.zip

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

17 минут назад, what228 сказал:

Так это перегруз у него по этому и не идет.

Разве ? у меня включен вес - то есть увеличен он. Вещей столько, что если скрипт отключить, то он в обще не пойдет не куда :)  

Этот момент случается спонтанно, вот я бродил щас по карте, даже вещи не собирал и бам - ноги отказали.. Он не устал даже - так как скрипт тоже включен и макс показывает всё по характеристикам.. 

И что самое интересное, так это то, что на улице он идти не может, а в маяке у меня - это где горит печка - сразу ноги хорошо идут. Если бы это был перевес, то от того, что тепло - он быстрее бы не пошел.  

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

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

21 минуту назад, LIRW сказал:

Вот попробуй загрузись

Нет ничего подобного.
Думаю кто нибудь уже сделал бы трейнер с этой функцией а ее нет. И в нете нет инфы об этом. Возможно что-то не то у тебя?)

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

39 минут назад, what228 сказал:

Нет ничего подобного.

Интересно :( Щас я покажу как это в обще - ноги то отказывают :) Функцию доделаю кое какую и выйду на улицу.. Так как сейчас если выйду туда, игра адреса перезапишет.  

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

13 минуты назад, uhx сказал:

Какую?)

:D Бесконечную спичку...(Зажег и ходи хоть всю игру с ней) Я уже сделал её - паттерн подбираю хороший на таком то супер коде. В + 50 байт туда и сюда и всё совпадает где то. Ну как и писал выше, тут ещо где то игра копию на генерировала такого же кода. Надо различие смотреть. 

Вот функция - такой паттерн не каждый день увидишь :D разницы в 2 байта. Но наверника уже... Так как там стековый регистр, а просто так его там генерировать не будет игра. Я конечно видел и длиннее строки поиска, но это после плагина форумского.. Там то код статик, а вот тут не предсказуемый.

Скрытый текст

[ENABLE]
aobscan(Fire,DE C1 D9 5F 34 D9 47 34 D9 47 30 DE F9 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5F C9 C3 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 55 8B EC 53)
alloc(newmem,$1000)
label(return)
newmem:
faddp
fldz
fstp dword ptr [edi+34]
jmp return
Fire:
jmp newmem
return:
registersymbol(Fire)
[DISABLE]
Fire:
db DE C1 D9 5F 34
unregistersymbol(Fire)
dealloc(newmem)

 

 

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

1 час назад, what228 сказал:

Нет ничего подобного.

Вот смотри видео с этими ногами.  Загрузил только - не много обработается и норм.

Скрытый текст

 

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

Парни, зачем вам увеличивать переносимый вес? Ведь можно просто убрать вес у всех вещей :)

Скрытый текст

[ENABLE]

registersymbol(NO_WEIGHT)

aobscan( NO_WEIGHT, D9 45 E8 DE C9 D9 87 5C 01 00 00 DE C9 DE C1 D9 5D D4 D9 45 E4 D9 E8 ) // should be unique

NO_WEIGHT:
  db D9 45 E8 DE C9 D9 EE 90 90 90 90

[DISABLE]

NO_WEIGHT:
  db D9 45 E8 DE C9 D9 87 5C 01 00 00

unregistersymbol(NO_WEIGHT)

 

Кстати, а на что влияет параметр слева от веса? Что-то типа температуры вещи, но а толку? Я просто бряк поставил и он срабатывает только в инвентаре, т.е. это значение нигде особо не используется)

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

10 минут назад, LIRW сказал:

Вот смотри видео с этими ногами

Может ты хакнул вес визуально? Просто я не понимаю из за чего еще так может быть. Я щас до перегруза когда дошел, он у меня в принципе не двигался. Ну, скрипт тестил. После скрипта все норм конечно)

PS твой сейв пока не грузил, если не врубишься в чем дело - потом тоже гляну. Пока в своей одиночке сижу, я еще даже с места крушения не ушел :) Не знаю о каком маяке вы говорите.

Изменено пользователем uhx
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.