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

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

Привет всем, решил поискать ID на предметы, в игре Dying Light, но найти не могу, если я не ошибаюсь ID на предметы обозначаются как 41A00000 в шестнадцатеричной системе счисления, именно в этой игре, или я не прав, кто знает подскажите пожалуйста, как правильно обозначается.

А то я не могу найти, ID предмета.

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

5 часов назад, Baracuda сказал:

А то я не могу найти, ID предмета.

Baracuda, ты же посмотрел моё видео, попробуй также  поискать ID предметов, а не гадать - как может выглядеть ID предмета, т.е. выйди через количество предмета на структуру инвентаря, а уже в ней (или в регионе памяти, это кому-как удобно) поискать ID скорее всего будут не далеко от количества предметов.

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

Там не большие значение типа 100-5000(оружие, оружие из длс без установленного длс), я искал текущее оружие которое в руках находилось изменилось/не изменилось и писал прогу когда делал таблицу, для дампа всех предметов в игре, если найду кину список предметов или программу. 

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

Привет всем, я пробовал как ты Игорь говоришь, но рядом с количеством предметов, я ID на предметы не нашёл, в том та и дела, не ужели я такой совсем не внимательный, я когда ищу предметы, я всегда смотрю через анализ структуры если ID предметов, рядом со значением количество предметов, может он и есть, только при изменении каких либо значений которые рядом количеством предметов, игра ломается, 
вот я и спросил какой там ID на предметы, чтобы можно было не ломать голову, а ввести ID предмета в поисковую строку, и найти без вылетов и геморроя. 

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

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

Там не большие значение типа 100-5000(оружие, оружие из длс без установленного длс), я искал текущее оружие которое в руках находилось изменилось/не изменилось и писал прогу когда делал таблицу, для дампа всех предметов в игре, если найду кину список предметов или программу. 

да буду тебе благодарен, если сам не найду.

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

Нашёл инструкцию на переключения оружие в руках, если поставить на заморозку, то оружие в руках, сменить нельзя будет, вот она. 

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

{ Game   : DyingLightGame.exe
  Version: 
  Date   : 2016-09-02
  Author : Silicon Valley

  This script does blah blah blah
}

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

 
 
aobscanmodule(INJECT,gamedll_x64_rwdi.dll,48 8B 84 08 F8 15 00 00) // should be unique
alloc(newmem,$1000,"gamedll_x64_rwdi.dll"+906A92)

label(code)
label(return)

newmem:

code:
  mov rax,[rax+rcx+000015F8]
  jmp return

INJECT:
  jmp code
  nop
  nop
  nop
return:
registersymbol(INJECT)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
INJECT:
  db 48 8B 84 08 F8 15 00 00

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "gamedll_x64_rwdi.dll"+906A92

"gamedll_x64_rwdi.dll"+906A7A: CC                             -  int 3 
"gamedll_x64_rwdi.dll"+906A7B: CC                             -  int 3 
"gamedll_x64_rwdi.dll"+906A7C: CC                             -  int 3 
"gamedll_x64_rwdi.dll"+906A7D: CC                             -  int 3 
"gamedll_x64_rwdi.dll"+906A7E: CC                             -  int 3 
"gamedll_x64_rwdi.dll"+906A7F: CC                             -  int 3 
"gamedll_x64_rwdi.dll"+906A80: 48 63 C2                       -  movsxd  rax,edx
"gamedll_x64_rwdi.dll"+906A83: 48 C1 E0 05                    -  shl rax,05
"gamedll_x64_rwdi.dll"+906A87: 48 83 BC 08 F0 15 00 00 00     -  cmp qword ptr [rax+rcx+000015F0],00
"gamedll_x64_rwdi.dll"+906A90: 74 09                          -  je gamedll_x64_rwdi.dll+906A9B
// ---------- INJECTING HERE ----------
"gamedll_x64_rwdi.dll"+906A92: 48 8B 84 08 F8 15 00 00        -  mov rax,[rax+rcx+000015F8]
// ---------- DONE INJECTING  ----------
"gamedll_x64_rwdi.dll"+906A9A: C3                             -  ret 
"gamedll_x64_rwdi.dll"+906A9B: 33 C0                          -  xor eax,eax
"gamedll_x64_rwdi.dll"+906A9D: C3                             -  ret 
"gamedll_x64_rwdi.dll"+906A9E: CC                             -  int 3 
"gamedll_x64_rwdi.dll"+906A9F: CC                             -  int 3 
"gamedll_x64_rwdi.dll"+906AA0: 48 89 5C 24 08                 -  mov [rsp+08],rbx
"gamedll_x64_rwdi.dll"+906AA5: 48 89 74 24 10                 -  mov [rsp+10],rsi
"gamedll_x64_rwdi.dll"+906AAA: 57                             -  push rdi
"gamedll_x64_rwdi.dll"+906AAB: 48 83 EC 20                    -  sub rsp,20
"gamedll_x64_rwdi.dll"+906AAF: 48 89 51 10                    -  mov [rcx+10],rdx
}

 

На ID предметов, пока не вышел.

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

(7E 1A 8B 55 7F) если занопить инструкцию оружие будет выкидываться и оставаться в руках, что-то типа копирования получится.
(48 8B 78 60 48 8B D9), по этой сигнатуре в rax были ID оружия.

Как вариант еще можно эту проверить, тут вроде бы тоже, ID оружия или таблица всех ID только в rdx (8B C8 48 8B 42 E8 4C 8B 04 C8) 

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

15 час назад, Baracuda сказал:

я пробовал как ты Игорь говоришь, но рядом с количеством предметов, я ID на предметы не нашёл

Скорее всего ты просто вышел не на ту структуру. - не на структуру инвентаря.

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

Если ты выходил именно через патроны, то попробуй выйти на инвентарь через другие стакующиеся предметы, ну не знаю например материалы для крафта или что там у тебя в игре есть.

У меня сейчас со временем к сожалению со всем плохо, а так бы покопался в игре.

 

 

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

20 часа назад, partoftheworlD сказал:

(7E 1A 8B 55 7F) если занопить инструкцию оружие будет выкидываться и оставаться в руках, что-то типа копирования получится.
(48 8B 78 60 48 8B D9), по этой сигнатуре в rax были ID оружия.

Как вариант еще можно эту проверить, тут вроде бы тоже, ID оружия или таблица всех ID только в rdx (8B C8 48 8B 42 E8 4C 8B 04 C8) 

Сейчас проверю это rdx (8B C8 48 8B 42 E8 4C 8B 04 C8) 

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

я проверил  partoftheworlD это rdx (8B C8 48 8B 42 E8 4C 8B 04 C8)  это не то, предметы из инвентаря выкидываешь, а адреса не меняются, вообще это не та инструкция. Я как то ломал на предметы в старой версии игры, я помню что ID предметов был примерно вот такой  41A00000 а в этой инструкции этим и не пахнет.

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

Только что проверил, видимо игра обновилась. Попробую найти ID. Нашел только адреса ячеек в селекторе.

 

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

83 39 01 4C 8B E2 в rcx базовый адрес каждого предмета в инвентаре, смотришь какие адреса используют эту инструкцию и получаешь список твоего инвентаря. Останется только сравнить и найти ID

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

 

7 часов назад, partoftheworlD сказал:

83 39 01 4C 8B E2 в rcx базовый адрес каждого предмета в инвентаре, смотришь какие адреса используют эту инструкцию и получаешь список твоего инвентаря. Останется только сравнить и найти ID

ты сам-та вышил, на ID предметов. 

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

2 часа назад, Baracuda сказал:

ты сам-та вышил, на ID предметов.

Если это был вопрос, то нет. Были несколько смещений значения которых, похожи на ID, но только на оружии, если брать силовой кабель к примеру у него значение было 0,но у оружия не менялись даже после перезапусков игры, видимо структура предметов не та, из интересного нашел лишь смещение отвечающее за качество предметов и характеристики оружия. 0x68 в структуре предмета. Странно, что через поиск не могу найти. Ближе к ночи еще попробую покопаться в структурах игрока и оружия.

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

ясно, я тоже пока не нашёл, точней вроде нашёл, и упустил, вот ты мене давал  83 39 01 4C 8B E2 я через количество предметов и искал,у меня в инвентаре есть молот крушителя, поставил на заморозку, попробовал выкинуть из инвентаря, он не выкидывался из него, ID на молот был рядом, игра закрылась с ошибкой.

Теперь найти не могу

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

16 минуту назад, Baracuda сказал:

выкинуть из инвентаря, он не выкидывался из него, ID на молот был рядом

 

Ну это я могу проверить т.к теперь при выбрасывании оружия оно копируется у меня. Вроде ты в этой же функции нашел структуру оружия.

Видимо тебе нужна самая первая сигнатура, она указывает на функцию работающую с освобождением памяти и анимацией как гг выкидывает оружие.

dKgkq1hAn8M.jpg

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

тут вот инструкция на предметы, 

если через анализ структуры сделать, то там названия инвентаря можно найти, но ID пока нет.

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

{
// ORIGINAL CODE - INJECTION POINT: "gamedll_x64_rwdi.dll"+7F6081

"gamedll_x64_rwdi.dll"+7F6058: 49 8B CE                 -  mov rcx,r14
"gamedll_x64_rwdi.dll"+7F605B: 48 8B 41 58              -  mov rax,[rcx+58]
"gamedll_x64_rwdi.dll"+7F605F: 48 83 C1 58              -  add rcx,58
"gamedll_x64_rwdi.dll"+7F6063: FF 90 90 05 00 00        -  call qword ptr [rax+00000590]
"gamedll_x64_rwdi.dll"+7F6069: 44 8B E0                 -  mov r12d,eax
"gamedll_x64_rwdi.dll"+7F606C: 4C 39 B7 00 05 00 00     -  cmp [rdi+00000500],r14
"gamedll_x64_rwdi.dll"+7F6073: 74 09                    -  je gamedll_x64_rwdi.dll+7F607E
"gamedll_x64_rwdi.dll"+7F6075: 48 8B 8F 08 05 00 00     -  mov rcx,[rdi+00000508]
"gamedll_x64_rwdi.dll"+7F607C: EB 03                    -  jmp gamedll_x64_rwdi.dll+7F6081
"gamedll_x64_rwdi.dll"+7F607E: 49 8B CE                 -  mov rcx,r14
// ---------- INJECTING HERE ----------
"gamedll_x64_rwdi.dll"+7F6081: 8B 59 40                 -  mov ebx,[rcx+40]
"gamedll_x64_rwdi.dll"+7F6084: 48 8B 06                 -  mov rax,[rsi]
// ---------- DONE INJECTING  ----------
"gamedll_x64_rwdi.dll"+7F6087: 48 8B CE                 -  mov rcx,rsi
"gamedll_x64_rwdi.dll"+7F608A: FF 90 10 05 00 00        -  call qword ptr [rax+00000510]
"gamedll_x64_rwdi.dll"+7F6090: 48 8B B4 24 98 00 00 00  -  mov rsi,[rsp+00000098]
"gamedll_x64_rwdi.dll"+7F6098: 44 8B D8                 -  mov r11d,eax
"gamedll_x64_rwdi.dll"+7F609B: 4C 39 B7 00 05 00 00     -  cmp [rdi+00000500],r14
"gamedll_x64_rwdi.dll"+7F60A2: 74 09                    -  je gamedll_x64_rwdi.dll+7F60AD
"gamedll_x64_rwdi.dll"+7F60A4: 48 8B 87 08 05 00 00     -  mov rax,[rdi+00000508]
"gamedll_x64_rwdi.dll"+7F60AB: EB 03                    -  jmp gamedll_x64_rwdi.dll+7F60B0
"gamedll_x64_rwdi.dll"+7F60AD: 49 8B C6                 -  mov rax,r14
"gamedll_x64_rwdi.dll"+7F60B0: 44 3B DB                 -  cmp r11d,ebx
}

 

 

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

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

 

Перезалил таблицу с новыми скриптами.

 

 

 

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

{ Game   : DyingLightGame.exe
  Version: 
  Date   : 2016-09-03
  Author : Alexander

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(getweaponid,gamedll_x64_rwdi.dll,89 41 E0 48 8B 42 20) // should be unique
alloc(newmem,$1000,"gamedll_x64_rwdi.dll"+6949CF)

label(code)
label(ID)
label(return)

newmem:
ID:
dd 0

code:
  mov [ID],eax
  mov [rcx-20],eax
  mov rax,[rdx+20]
  jmp return

getweaponid:
  jmp code
  nop
  nop
return:
registersymbol(getweaponid)
registersymbol(ID)

[DISABLE]

getweaponid:
  db 89 41 E0 48 8B 42 20

unregistersymbol(getweaponid)
unregistersymbol(ID)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "gamedll_x64_rwdi.dll"+6949CF

"gamedll_x64_rwdi.dll"+6949AF: CC                                -  int 3 
"gamedll_x64_rwdi.dll"+6949B0: 48 89 5C 24 08                    -  mov [rsp+08],rbx
"gamedll_x64_rwdi.dll"+6949B5: 57                                -  push rdi
"gamedll_x64_rwdi.dll"+6949B6: 48 83 EC 20                       -  sub rsp,20
"gamedll_x64_rwdi.dll"+6949BA: 48 8B 42 08                       -  mov rax,[rdx+08]
"gamedll_x64_rwdi.dll"+6949BE: 48 8B DA                          -  mov rbx,rdx
"gamedll_x64_rwdi.dll"+6949C1: 48 8B F9                          -  mov rdi,rcx
"gamedll_x64_rwdi.dll"+6949C4: 48 89 41 08                       -  mov [rcx+08],rax
"gamedll_x64_rwdi.dll"+6949C8: 8B 42 10                          -  mov eax,[rdx+10]
"gamedll_x64_rwdi.dll"+6949CB: 48 83 C1 30                       -  add rcx,30
// ---------- INJECTING HERE ----------
"gamedll_x64_rwdi.dll"+6949CF: 89 41 E0                          -  mov [rcx-20],eax
"gamedll_x64_rwdi.dll"+6949D2: 48 8B 42 20                       -  mov rax,[rdx+20]
// ---------- DONE INJECTING  ----------
"gamedll_x64_rwdi.dll"+6949D6: 48 83 C2 30                       -  add rdx,30
"gamedll_x64_rwdi.dll"+6949DA: 48 89 41 F0                       -  mov [rcx-10],rax
"gamedll_x64_rwdi.dll"+6949DE: 48 8B 42 F8                       -  mov rax,[rdx-08]
"gamedll_x64_rwdi.dll"+6949E2: 48 89 41 F8                       -  mov [rcx-08],rax
"gamedll_x64_rwdi.dll"+6949E6: E8 85 3F 00 00                    -  call gamedll_x64_rwdi.dll+698970
"gamedll_x64_rwdi.dll"+6949EB: 44 8B 5B 14                       -  mov r11d,[rbx+14]
"gamedll_x64_rwdi.dll"+6949EF: 44 89 5F 14                       -  mov [rdi+14],r11d
"gamedll_x64_rwdi.dll"+6949F3: 0F B6 43 5C                       -  movzx eax,byte ptr [rbx+5C]
"gamedll_x64_rwdi.dll"+6949F7: 88 47 5C                          -  mov [rdi+5C],al
"gamedll_x64_rwdi.dll"+6949FA: 8B 43 60                          -  mov eax,[rbx+60]
}

 

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

В 02.09.2016в08:50, Baracuda сказал:

я пробовал как ты Игорь говоришь, но рядом с количеством предметов, я ID на предметы не нашёл

Скачал (благо игра небольшая) какой-то репак от Механиков (по моему версия 1.6.2 вроде).

Всё ищется также - именно количество, там в самом начале игры есть 2 изоленты и 2 гвозди (этого достаточно для выхода на инвентарь), сделал по 99 штук.

Скрипт на ID предмета, который выделяем в инвентаре:

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

{ Game   : DyingLightGame.exe
  Version: 
  Date   : 2016-09-04
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(INJECT,gamedll_x64_rwdi.dll,8B 43 10 48 83 C4 20) // should be unique
alloc(newmem,$1000,"gamedll_x64_rwdi.dll"+6295FF)
label(code)
label(return)
label(IDItem)
registersymbol(IDItem)
registersymbol(INJECT)

newmem:
  mov eax,[rbx+10]
  mov [IDItem],eax

code:
  add rsp,20
  jmp return

IDItem:
dd 0

INJECT:
  jmp newmem
  db 90 90
return:

[DISABLE]
INJECT:
  db 8B 43 10 48 83 C4 20

unregistersymbol(IDItem)
unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "gamedll_x64_rwdi.dll"+6295FF

"gamedll_x64_rwdi.dll"+6295E2: 48 83 EC 20           -  sub rsp,20
"gamedll_x64_rwdi.dll"+6295E6: 48 8B 01              -  mov rax,[rcx]
"gamedll_x64_rwdi.dll"+6295E9: 48 8B D9              -  mov rbx,rcx
"gamedll_x64_rwdi.dll"+6295EC: FF 90 48 02 00 00     -  call qword ptr [rax+00000248]
"gamedll_x64_rwdi.dll"+6295F2: 83 F8 08              -  cmp eax,08
"gamedll_x64_rwdi.dll"+6295F5: 75 08                 -  jne gamedll_x64_rwdi.dll+6295FF
"gamedll_x64_rwdi.dll"+6295F7: 33 C0                 -  xor eax,eax
"gamedll_x64_rwdi.dll"+6295F9: 48 83 C4 20           -  add rsp,20
"gamedll_x64_rwdi.dll"+6295FD: 5B                    -  pop rbx
"gamedll_x64_rwdi.dll"+6295FE: C3                    -  ret 
// ---------- INJECTING HERE ----------
"gamedll_x64_rwdi.dll"+6295FF: 8B 43 10              -  mov eax,[rbx+10]
"gamedll_x64_rwdi.dll"+629602: 48 83 C4 20           -  add rsp,20
// ---------- DONE INJECTING  ----------
"gamedll_x64_rwdi.dll"+629606: 5B                    -  pop rbx
"gamedll_x64_rwdi.dll"+629607: C3                    -  ret 
"gamedll_x64_rwdi.dll"+629608: CC                    -  int 3 
"gamedll_x64_rwdi.dll"+629609: CC                    -  int 3 
"gamedll_x64_rwdi.dll"+62960A: CC                    -  int 3 
"gamedll_x64_rwdi.dll"+62960B: CC                    -  int 3 
"gamedll_x64_rwdi.dll"+62960C: CC                    -  int 3 
"gamedll_x64_rwdi.dll"+62960D: CC                    -  int 3 
"gamedll_x64_rwdi.dll"+62960E: CC                    -  int 3 
"gamedll_x64_rwdi.dll"+62960F: CC                    -  int 3 
}

 

 И табличка:

DyingLightGame.CT

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

15 час назад, partoftheworlD сказал:

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

 

Пере залил таблицу с новыми скриптами.

 

Ты partoftheworlD нашёл ID предметов, только он бесполезный, предмет нельзя удалить, поменять.

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

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

Скачал (благо игра небольшая) какой-то репак от Механиков (по моему версия 1.6.2 вроде).

Всё ищется также - именно количество, там в самом начале игры есть 2 изоленты и 2 гвозди (этого достаточно для выхода на инвентарь), сделал по 99 штук.

Скрипт на ID предмета, который выделяем в инвентаре:

Тоже самое и у тебя Игорь, предмет заменить нельзя, удалить тоже, наверное ID на предметы где-то рядом, сейчас посмотрю. 

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

31 минуты назад, Baracuda сказал:

Тоже самое и у тебя Игорь, предмет заменить нельзя, удалить тоже, наверное ID на предметы где-то рядом, сейчас посмотрю. 

Ну я подробно не исследовал регион памяти (я был в игре минут 20), понадеялся, что partoftheworID, знает игру хорошо и всё уже там перерыл и поэтому взял такие же значения как и у него,

а так нужно более подробно исследовать структуру (регион памяти), чтобы сделать скрипт для замены/добавления предмета.

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

Это инструкция работает так, берёшь адрес например оружия золотого, и ставишь это значения на 0 и оружия из золотого, превращается в простое.Опять вворачиваешь значения обратно, и оружия становится опять золотым,вот как это ID в этой инструкции работают.

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

3 минуты назад, Baracuda сказал:

Это инструкция работает так,

Понятно.

Я просто написал скрипт, чтобы пояснить, что методика поиска ID предметов одна и та же:

через количество стакающихся предметов выходим на структуру инвентаря, а там уже ищем ID и потом пишем скрипт.

 

Структуры инвентаря в различных играх - конечно разные.

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

  • Xipho закрыл тема
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...

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

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