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

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

Привет Всем.

Dead In Bermuda игра Survival, - решил ее поломать, ну и заодно подучиться ;).

Собственно возникла пара вопросов:

Но сначала немного о механике игры:

В наличии 8 персонажей потерпевших крушение. У каждого из которых есть основные характеристики:

1) Голод

2) Болезнь

3) Дипрессия

4) Усталость

5) Ранения

И общие характеристики:

Скрытность, Изготовление, Исследования, Собирательство, Охота, Рыбалка, Сбор, Готовка, Сила, Ловкость, Телосложение, Борьба, Интеллект, Речь, Медицина, Знания.

Пробовал сначала сделать каждую из основных характеристик своим скриптом:

Голод:

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

{ Game   : Dead In Bermuda.exe
  Version: 
  Date   : 2017-06-27
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]
aobscan(Hungry,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 ED) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(Hungry)

newmem:
  mov [eax+08], (float)0

code:
  fld dword ptr [eax+08]
  fstp dword ptr [ebp-0C]
  jmp return

Hungry:
  jmp newmem
  db 90
return:

[DISABLE]
Hungry:
  db D9 40 08 D9 5D F4

unregistersymbol(Hungry)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1403CF7D

""+1403CF5E: 83 EC 08           -  sub esp,08
""+1403CF61: 68 E0 FC CF 0E     -  push 0ECFFCE0
""+1403CF66: 57                 -  push edi
""+1403CF67: E8 F4 4F 68 F1     -  call 056C1F60
""+1403CF6C: 83 C4 10           -  add esp,10
""+1403CF6F: 85 C0              -  test eax,eax
""+1403CF71: 74 1E              -  je 1403CF91
""+1403CF73: 8B 86 A8 00 00 00  -  mov eax,[esi+000000A8]
""+1403CF79: 8B C8              -  mov ecx,eax
""+1403CF7B: 39 09              -  cmp [ecx],ecx
// ---------- INJECTING HERE ----------
""+1403CF7D: D9 40 08           -  fld dword ptr [eax+08]
""+1403CF80: D9 5D F4           -  fstp dword ptr [ebp-0C]
// ---------- DONE INJECTING  ----------
""+1403CF83: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403CF86: D9 5D F4           -  fstp dword ptr [ebp-0C]
""+1403CF89: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403CF8C: E9 ED 00 00 00     -  jmp 1403D07E
""+1403CF91: 83 EC 08           -  sub esp,08
""+1403CF94: 68 60 FB CF 0E     -  push 0ECFFB60
""+1403CF99: 57                 -  push edi
""+1403CF9A: E8 C1 4F 68 F1     -  call 056C1F60
""+1403CF9F: 83 C4 10           -  add esp,10
""+1403CFA2: 85 C0              -  test eax,eax
}

 

Болезнь:

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

{ Game   : Dead In Bermuda.exe
  Version: 
  Date   : 2017-06-27
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]
aobscan(Disease,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(Disease)

newmem:
  mov [eax+08], (float)0

code:
  fld dword ptr [eax+08]
  fstp dword ptr [ebp-0C]
  jmp return

Disease:
  jmp newmem
  db 90
return:

[DISABLE]
Disease:
  db D9 40 08 D9 5D F4

unregistersymbol(Disease)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1403CFE3

""+1403CFC4: 83 EC 08           -  sub esp,08
""+1403CFC7: 68 A0 0F D0 0E     -  push 0ED00FA0
""+1403CFCC: 57                 -  push edi
""+1403CFCD: E8 8E 4F 68 F1     -  call 056C1F60
""+1403CFD2: 83 C4 10           -  add esp,10
""+1403CFD5: 85 C0              -  test eax,eax
""+1403CFD7: 74 1E              -  je 1403CFF7
""+1403CFD9: 8B 86 B0 00 00 00  -  mov eax,[esi+000000B0]
""+1403CFDF: 8B C8              -  mov ecx,eax
""+1403CFE1: 39 09              -  cmp [ecx],ecx
// ---------- INJECTING HERE ----------
""+1403CFE3: D9 40 08           -  fld dword ptr [eax+08]
""+1403CFE6: D9 5D F4           -  fstp dword ptr [ebp-0C]
// ---------- DONE INJECTING  ----------
""+1403CFE9: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403CFEC: D9 5D F4           -  fstp dword ptr [ebp-0C]
""+1403CFEF: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403CFF2: E9 87 00 00 00     -  jmp 1403D07E
""+1403CFF7: 83 EC 08           -  sub esp,08
""+1403CFFA: 68 20 FB CF 0E     -  push 0ECFFB20
""+1403CFFF: 57                 -  push edi
""+1403D000: E8 5B 4F 68 F1     -  call 056C1F60
""+1403D005: 83 C4 10           -  add esp,10
""+1403D008: 85 C0              -  test eax,eax
}

 

Депрессия:

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

{ Game   : Dead In Bermuda.exe
  Version: 
  Date   : 2017-06-27
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]
aobscan(Psyho,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 EB) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(Psyho)

newmem:
  mov [eax+08], (float)0

code:
  fld dword ptr [eax+08]
  fstp dword ptr [ebp-0C]
  jmp return

Psyho:
  jmp newmem
  db 90
return:

[DISABLE]
Psyho:
  db D9 40 08 D9 5D F4
unregistersymbol(Psyho)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1403D049

""+1403D02A: 83 EC 08           -  sub esp,08
""+1403D02D: 68 60 0E D0 0E     -  push 0ED00E60
""+1403D032: 57                 -  push edi
""+1403D033: E8 28 4F 68 F1     -  call 056C1F60
""+1403D038: 83 C4 10           -  add esp,10
""+1403D03B: 85 C0              -  test eax,eax
""+1403D03D: 74 1B              -  je 1403D05A
""+1403D03F: 8B 86 B8 00 00 00  -  mov eax,[esi+000000B8]
""+1403D045: 8B C8              -  mov ecx,eax
""+1403D047: 39 09              -  cmp [ecx],ecx
// ---------- INJECTING HERE ----------
""+1403D049: D9 40 08           -  fld dword ptr [eax+08]
""+1403D04C: D9 5D F4           -  fstp dword ptr [ebp-0C]
// ---------- DONE INJECTING  ----------
""+1403D04F: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403D052: D9 5D F4           -  fstp dword ptr [ebp-0C]
""+1403D055: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403D058: EB 24              -  jmp 1403D07E
""+1403D05A: 83 EC 08           -  sub esp,08
""+1403D05D: 57                 -  push edi
""+1403D05E: 68 10 23 2A 17     -  push 172A2310
""+1403D063: E8 10 49 68 F1     -  call 056C1978
""+1403D068: 83 C4 10           -  add esp,10
""+1403D06B: 83 EC 08           -  sub esp,08
}

 

Усталость:

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

{ Game   : Dead In Bermuda.exe
  Version: 
  Date   : 2017-06-27
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]
aobscan(Sleep,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 BA) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(Sleep)

newmem:
  mov [eax+08], (float)0

code:
  fld dword ptr [eax+08]
  fstp dword ptr [ebp-0C]
  jmp return

Sleep:
  jmp newmem
  db 90
return:

[DISABLE]
Sleep:
  db D9 40 08 D9 5D F4

unregistersymbol(Sleep)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1403CFB0

""+1403CF91: 83 EC 08           -  sub esp,08
""+1403CF94: 68 60 FB CF 0E     -  push 0ECFFB60
""+1403CF99: 57                 -  push edi
""+1403CF9A: E8 C1 4F 68 F1     -  call 056C1F60
""+1403CF9F: 83 C4 10           -  add esp,10
""+1403CFA2: 85 C0              -  test eax,eax
""+1403CFA4: 74 1E              -  je 1403CFC4
""+1403CFA6: 8B 86 AC 00 00 00  -  mov eax,[esi+000000AC]
""+1403CFAC: 8B C8              -  mov ecx,eax
""+1403CFAE: 39 09              -  cmp [ecx],ecx
// ---------- INJECTING HERE ----------
""+1403CFB0: D9 40 08           -  fld dword ptr [eax+08]
""+1403CFB3: D9 5D F4           -  fstp dword ptr [ebp-0C]
// ---------- DONE INJECTING  ----------
""+1403CFB6: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403CFB9: D9 5D F4           -  fstp dword ptr [ebp-0C]
""+1403CFBC: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403CFBF: E9 BA 00 00 00     -  jmp 1403D07E
""+1403CFC4: 83 EC 08           -  sub esp,08
""+1403CFC7: 68 A0 0F D0 0E     -  push 0ED00FA0
""+1403CFCC: 57                 -  push edi
""+1403CFCD: E8 8E 4F 68 F1     -  call 056C1F60
""+1403CFD2: 83 C4 10           -  add esp,10
""+1403CFD5: 85 C0              -  test eax,eax
}

 

Ранения:

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

{ Game   : Dead In Bermuda.exe
  Version: 
  Date   : 2017-06-27
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]
aobscan(Noattack,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 54) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(Noattack)

newmem:
  mov [eax+08], (float)0

code:
  fld dword ptr [eax+08]
  fstp dword ptr [ebp-0C]
  jmp return

Noattack:
  jmp newmem
  db 90
return:

[DISABLE]
Noattack:
  db D9 40 08 D9 5D F4

unregistersymbol(Noattack)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1403D016

""+1403CFF7: 83 EC 08           -  sub esp,08
""+1403CFFA: 68 20 FB CF 0E     -  push 0ECFFB20
""+1403CFFF: 57                 -  push edi
""+1403D000: E8 5B 4F 68 F1     -  call 056C1F60
""+1403D005: 83 C4 10           -  add esp,10
""+1403D008: 85 C0              -  test eax,eax
""+1403D00A: 74 1E              -  je 1403D02A
""+1403D00C: 8B 86 B4 00 00 00  -  mov eax,[esi+000000B4]
""+1403D012: 8B C8              -  mov ecx,eax
""+1403D014: 39 09              -  cmp [ecx],ecx
// ---------- INJECTING HERE ----------
""+1403D016: D9 40 08           -  fld dword ptr [eax+08]
""+1403D019: D9 5D F4           -  fstp dword ptr [ebp-0C]
// ---------- DONE INJECTING  ----------
""+1403D01C: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403D01F: D9 5D F4           -  fstp dword ptr [ebp-0C]
""+1403D022: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403D025: E9 54 00 00 00     -  jmp 1403D07E
""+1403D02A: 83 EC 08           -  sub esp,08
""+1403D02D: 68 60 0E D0 0E     -  push 0ED00E60
""+1403D032: 57                 -  push edi
""+1403D033: E8 28 4F 68 F1     -  call 056C1F60
""+1403D038: 83 C4 10           -  add esp,10
""+1403D03B: 85 C0              -  test eax,eax
}

 

Все работает, но уж больно все громоздко, если учесть, что у всех 5 скриптов отличается AOB всего 1 - 2 последних байта, хотя и работают по однотипной инструкции.

Отсюда и следует вопрос: Возможно ли заставить работать все 5 скриптов по одному коду? Примерно так:

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

{ Game   : Dead In Bermuda.exe
  Version: 
  Date   : 2017-06-27
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]

aobscan(Psyho,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 EB) // should be unique
aobscan(Sleep,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 BA) // should be unique
aobscan(Noattack,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 54) // should be unique
aobscan(Hungry,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 ED) // should be unique
aobscan(Disease,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9) // should be unique
alloc(newmem,$2048)
label(code)
label(return)
registersymbol(Psyho)
registersymbol(Sleep)
registersymbol(Noattack)
registersymbol(Hungry)
registersymbol(Disease)

newmem:
  mov [eax+08], (float)0

code:
  fld dword ptr [eax+08]
  fstp dword ptr [ebp-0C]
  jmp return

Sleep:
  jmp newmem
  db 90
return:

Psyho:
  jmp newmem
  db 90
return:

Noattack:
  jmp newmem
  db 90
return:

Hungry:
  jmp newmem
  db 90
return:

Disease:
  jmp newmem
  db 90
return:

[DISABLE]

Psyho:
  db D9 40 08 D9 5D F4
Sleep:
  db D9 40 08 D9 5D F4
Noattack:
  db D9 40 08 D9 5D F4
Hungry:
  db D9 40 08 D9 5D F4
Disease:
  db D9 40 08 D9 5D F4

unregistersymbol(Psyho)
unregistersymbol(Sleep)
unregistersymbol(Noattack)
unregistersymbol(Hungry)
unregistersymbol(Disease)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1403D049

""+1403D02A: 83 EC 08           -  sub esp,08
""+1403D02D: 68 60 0E D0 0E     -  push 0ED00E60
""+1403D032: 57                 -  push edi
""+1403D033: E8 28 4F 68 F1     -  call 056C1F60
""+1403D038: 83 C4 10           -  add esp,10
""+1403D03B: 85 C0              -  test eax,eax
""+1403D03D: 74 1B              -  je 1403D05A
""+1403D03F: 8B 86 B8 00 00 00  -  mov eax,[esi+000000B8]
""+1403D045: 8B C8              -  mov ecx,eax
""+1403D047: 39 09              -  cmp [ecx],ecx
// ---------- INJECTING HERE ----------
""+1403D049: D9 40 08           -  fld dword ptr [eax+08]
""+1403D04C: D9 5D F4           -  fstp dword ptr [ebp-0C]
// ---------- DONE INJECTING  ----------
""+1403D04F: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403D052: D9 5D F4           -  fstp dword ptr [ebp-0C]
""+1403D055: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403D058: EB 24              -  jmp 1403D07E
""+1403D05A: 83 EC 08           -  sub esp,08
""+1403D05D: 57                 -  push edi
""+1403D05E: 68 10 23 2A 17     -  push 172A2310
""+1403D063: E8 10 49 68 F1     -  call 056C1978
""+1403D068: 83 C4 10           -  add esp,10
""+1403D06B: 83 EC 08           -  sub esp,08
}

 

Соответственно скрипт не будет работать, т.к. label(return) объявлен всего 1 а должно быть 5. 

Позже пошел другим путем:

Нашел инструкцию:

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

{ Game   : Dead In Bermuda.exe
  Version: 
  Date   : 2017-06-28
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]
aobscan(HeroStat,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 BA) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(P_HERO)
registersymbol(P_HERO)
registersymbol(HeroStat)

newmem:
  mov [P_HERO],eax

code:
  fld dword ptr [eax+08]
  fstp dword ptr [ebp-0C]
  jmp return

P_HERO:
dd 0

HeroStat:
  jmp newmem
  nop
return:

[DISABLE]
HeroStat:
  db D9 40 08 D9 5D F4

unregistersymbol(HeroStat)
unregistersymbol(P_HERO)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1D8FE290

""+1D8FE271: 83 EC 08           -  sub esp,08
""+1D8FE274: 68 20 3E FE 0E     -  push 0EFE3E20
""+1D8FE279: 57                 -  push edi
""+1D8FE27A: E8 E1 3C 02 E8     -  call 05921F60
""+1D8FE27F: 83 C4 10           -  add esp,10
""+1D8FE282: 85 C0              -  test eax,eax
""+1D8FE284: 74 1E              -  je 1D8FE2A4
""+1D8FE286: 8B 86 AC 00 00 00  -  mov eax,[esi+000000AC]
""+1D8FE28C: 8B C8              -  mov ecx,eax
""+1D8FE28E: 39 09              -  cmp [ecx],ecx
// ---------- INJECTING HERE ----------
""+1D8FE290: D9 40 08           -  fld dword ptr [eax+08]
""+1D8FE293: D9 5D F4           -  fstp dword ptr [ebp-0C]
// ---------- DONE INJECTING  ----------
""+1D8FE296: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1D8FE299: D9 5D F4           -  fstp dword ptr [ebp-0C]
""+1D8FE29C: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1D8FE29F: E9 BA 00 00 00     -  jmp 1D8FE35E
""+1D8FE2A4: 83 EC 08           -  sub esp,08
""+1D8FE2A7: 68 48 D8 EA 0E     -  push 0EEAD848
""+1D8FE2AC: 57                 -  push edi
""+1D8FE2AD: E8 AE 3C 02 E8     -  call 05921F60
""+1D8FE2B2: 83 C4 10           -  add esp,10
""+1D8FE2B5: 85 C0              -  test eax,eax
}

 

Сделал пойнтер.

Прописал смещения. При выделении персонажа, корректно показывает все его характеристики. Исключением является 1 персонаж у которого 4-6 стат показывают бред. Пробовал с другими инструкциями, итог один и тот же. Буду благодарен за подсказку в данном направлении.

Скрипт на бесконечные ресурсы работает:

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

{ Game   : Dead In Bermuda.exe
  Version: 
  Date   : 2017-06-27
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]
aobscan(Resour,8B 40 0C 85 C0 0F 8F DE) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(Resour)

newmem:
  mov [eax+0C],#100

code:
  mov eax,[eax+0C]
  test eax,eax
  jmp return

Resour:
  jmp newmem
return:

[DISABLE]
Resour:
  db 8B 40 0C 85 C0

unregistersymbol(Resour)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1406AF57

""+1406AF3C: 83 EC 08           -  sub esp,08
""+1406AF3F: 53                 -  push ebx
""+1406AF40: 50                 -  push eax
""+1406AF41: E8 2A 0C 67 F1     -  call 056DBB70
""+1406AF46: 83 C4 10           -  add esp,10
""+1406AF49: 8B 45 F0           -  mov eax,[ebp-10]
""+1406AF4C: 8B 48 0C           -  mov ecx,[eax+0C]
""+1406AF4F: 03 CE              -  add ecx,esi
""+1406AF51: 89 48 0C           -  mov [eax+0C],ecx
""+1406AF54: 8B 45 F0           -  mov eax,[ebp-10]
// ---------- INJECTING HERE ----------
""+1406AF57: 8B 40 0C           -  mov eax,[eax+0C]
""+1406AF5A: 85 C0              -  test eax,eax
// ---------- DONE INJECTING  ----------
""+1406AF5C: 0F 8F DE 00 00 00  -  jg 1406B040
""+1406AF62: 8B 43 30           -  mov eax,[ebx+30]
""+1406AF65: 8B 4D F0           -  mov ecx,[ebp-10]
""+1406AF68: 83 EC 08           -  sub esp,08
""+1406AF6B: 51                 -  push ecx
""+1406AF6C: 50                 -  push eax
""+1406AF6D: 39 00              -  cmp [eax],eax
""+1406AF6F: E8 F0 01 00 00     -  call 1406B164
""+1406AF74: 83 C4 10           -  add esp,10
""+1406AF77: 8B 43 20           -  mov eax,[ebx+20]
}

 

Быстрая постройка в мастерской - тоже работает:

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

{ Game   : Dead In Bermuda.exe
  Version: 
  Date   : 2017-06-27
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]
aobscan(ISSLE,88 10 D9 00 83 EC 0C) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(ISSLE)

newmem:
  mov [eax], (float)1000

code:
  fld dword ptr [eax]
  sub esp,0C
  jmp return

ISSLE+02:
  jmp newmem
return:

[DISABLE]
ISSLE+02:
  db D9 00 83 EC 0C

unregistersymbol(ISSLE)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1403EE91

""+1403EE70: E8 A3 D8 69 F1     -  call 056DC718
""+1403EE75: 83 C4 10           -  add esp,10
""+1403EE78: 8B C8              -  mov ecx,eax
""+1403EE7A: 8B 45 D4           -  mov eax,[ebp-2C]
""+1403EE7D: 8B D1              -  mov edx,ecx
""+1403EE7F: 39 12              -  cmp [edx],edx
""+1403EE81: 8B 49 40           -  mov ecx,[ecx+40]
""+1403EE84: 39 48 0C           -  cmp [eax+0C],ecx
""+1403EE87: 0F 86 36 01 00 00  -  jbe 1403EFC3
""+1403EE8D: 8D 44 88 10        -  lea eax,[eax+ecx*4+10]
// ---------- INJECTING HERE ----------
""+1403EE91: D9 00              -  fld dword ptr [eax]
""+1403EE93: 83 EC 0C           -  sub esp,0C
// ---------- DONE INJECTING  ----------
""+1403EE96: 83 EC 04           -  sub esp,04
""+1403EE99: D9 1C 24           -  fstp dword ptr [esp]
""+1403EE9C: E8 2F F7 6D F1     -  call 0571E5D0
""+1403EEA1: 83 C4 10           -  add esp,10
""+1403EEA4: 8B D0              -  mov edx,eax
""+1403EEA6: 8B 45 DC           -  mov eax,[ebp-24]
""+1403EEA9: 8B 4D D8           -  mov ecx,[ebp-28]
""+1403EEAC: 52                 -  push edx
""+1403EEAD: DB 04 24           -  fild dword ptr [esp]
""+1403EEB0: D9 1C 24           -  fstp dword ptr [esp]
}

 

Очки навыков работают:

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

{ Game   : Dead In Bermuda.exe
  Version: 
  Date   : 2017-06-27
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]
aobscan(points,8B 87 10 01 00 00 8B D9) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(points)

newmem:
  mov [edi+00000110],#50

code:
  mov eax,[edi+00000110]
  jmp return

points:
  jmp newmem
  db 90
return:

[DISABLE]
points:
  db 8B 87 10 01 00 00

unregistersymbol(points)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1706B24F

""+1706B232: 85 C0                 -  test eax,eax
""+1706B234: 0F 84 6F 00 00 00     -  je 1706B2A9
""+1706B23A: 8B 46 44              -  mov eax,[esi+44]
""+1706B23D: 83 EC 0C              -  sub esp,0C
""+1706B240: 50                    -  push eax
""+1706B241: 39 00                 -  cmp [eax],eax
""+1706B243: E8 78 99 39 EE        -  call 05404BC0
""+1706B248: 83 C4 10              -  add esp,10
""+1706B24B: 8B C8                 -  mov ecx,eax
""+1706B24D: 39 3F                 -  cmp [edi],edi
// ---------- INJECTING HERE ----------
""+1706B24F: 8B 87 10 01 00 00     -  mov eax,[edi+00000110]
// ---------- DONE INJECTING  ----------
""+1706B255: 8B D9                 -  mov ebx,ecx
""+1706B257: 85 C0                 -  test eax,eax
""+1706B259: 7E 36                 -  jle 1706B291
""+1706B25B: 8B 46 2C              -  mov eax,[esi+2C]
""+1706B25E: 83 EC 0C              -  sub esp,0C
""+1706B261: 50                    -  push eax
""+1706B262: 39 00                 -  cmp [eax],eax
""+1706B264: E8 E7 0A 3A EE        -  call 0540BD50
""+1706B269: 83 C4 10              -  add esp,10
""+1706B26C: 83 EC 04              -  sub esp,04
}

 

Все характеристики по 100 - работает, но нужно покопать поглубже, при рестарте не все значения остаются 100

Пока, что так:

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

{ Game   : Dead In Bermuda.exe
  Version: 
  Date   : 2017-06-27
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]
aobscan(HaRR,D9 40 0C DD 5D F8) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(HaRR)

newmem:
  mov dword ptr [eax+0C], (float)100

code:
  fld dword ptr [eax+0C]
  fstp qword ptr [ebp-08]
  jmp return

HaRR:
  jmp newmem
  db 90
return:

[DISABLE]
HaRR:
  db D9 40 0C DD 5D F8

unregistersymbol(HaRR)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1403CC16

""+1403CBFA: D9 FC           -  frndint 
""+1403CBFC: 83 EC 04        -  sub esp,04
""+1403CBFF: D9 1C 24        -  fstp dword ptr [esp]
""+1403CC02: D9 04 24        -  fld dword ptr [esp]
""+1403CC05: 83 C4 04        -  add esp,04
""+1403CC08: D9 5D F4        -  fstp dword ptr [ebp-0C]
""+1403CC0B: D9 45 F4        -  fld dword ptr [ebp-0C]
""+1403CC0E: DD 5D F8        -  fstp qword ptr [ebp-08]
""+1403CC11: EB 09           -  jmp 1403CC1C
""+1403CC13: 8B 45 08        -  mov eax,[ebp+08]
// ---------- INJECTING HERE ----------
""+1403CC16: D9 40 0C        -  fld dword ptr [eax+0C]
""+1403CC19: DD 5D F8        -  fstp qword ptr [ebp-08]
// ---------- DONE INJECTING  ----------
""+1403CC1C: DD 45 F8        -  fld qword ptr [ebp-08]
""+1403CC1F: C9              -  leave 
""+1403CC20: C3              -  ret 
""+1403CC21: 00 00           -  add [eax],al
""+1403CC23: 00 00           -  add [eax],al
""+1403CC25: 00 00           -  add [eax],al
""+1403CC27: 00 55 8B        -  add [ebp-75],dl
""+1403CC2A: EC              -  in al,dx
""+1403CC2B: 53              -  push ebx
""+1403CC2C: 57              -  push edi
}

 

Ну и ремонт библиотеки и мастерской:

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

{ Game   : Dead In Bermuda.exe
  Version: 
  Date   : 2017-06-27
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]
aobscan(Repair2,D9 80 90 00 00 00 C9) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(Repair2)

newmem:
  mov [eax+00000090], (float)100

code:
  fld dword ptr [eax+00000090]
  jmp return

Repair2:
  jmp newmem
  db 90
return:

[DISABLE]
Repair2:
  db D9 80 90 00 00 00

unregistersymbol(Repair2)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 140384F9

""+140384E5: 00 00                 -  add [eax],al
""+140384E7: 00 55 8B              -  add [ebp-75],dl
""+140384EA: EC                    -  in al,dx
""+140384EB: 83 EC 08              -  sub esp,08
""+140384EE: C9                    -  leave 
""+140384EF: C3                    -  ret 
""+140384F0: 55                    -  push ebp
""+140384F1: 8B EC                 -  mov ebp,esp
""+140384F3: 83 EC 08              -  sub esp,08
""+140384F6: 8B 45 08              -  mov eax,[ebp+08]
// ---------- INJECTING HERE ----------
""+140384F9: D9 80 90 00 00 00     -  fld dword ptr [eax+00000090]
// ---------- DONE INJECTING  ----------
""+140384FF: C9                    -  leave 
""+14038500: C3                    -  ret 
""+14038501: 00 00                 -  add [eax],al
""+14038503: 00 00                 -  add [eax],al
""+14038505: 00 00                 -  add [eax],al
""+14038507: 00 55 8B              -  add [ebp-75],dl
""+1403850A: EC                    -  in al,dx
""+1403850B: 83 EC 08              -  sub esp,08
""+1403850E: 8B 45 08              -  mov eax,[ebp+08]
""+14038511: D9 80 94 00 00 00     -  fld dword ptr [eax+00000094]
}

 

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

Заранее благодарен.

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

Вроде с помощью Lua можно найти все вхождения сигнатур одной строкой, подставив на места меняющихся байт знаки вопроса (это скажет СЕ, что значения в этих байтах могут меняться).

Затем можно пройтись циклом по найденным адресам и везде прописать прыжок на выделенную память, а лучше не прыжок, а call и в конце вместо прыжка возврата ret 

Я в lua не силен, это нужно ждать тех участников, кто разбирается в нем.

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

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

Вроде с помощью Lua можно найти все вхождения сигнатур одной строкой, подставив на места меняющихся байт знаки вопроса (это скажет СЕ, что значения в этих байтах могут меняться).

Затем можно пройтись циклом по найденным адресам и везде прописать прыжок на выделенную память, а лучше не прыжок, а call и в конце вместо прыжка возврата ret 

Я в lua не силен, это нужно ждать тех участников, кто разбирается в нем.

Спасибо, мысль интересная. К сожалению в Lua тоже не силен. Попробую почитать вечером, после работы. 

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

10 часов назад, Xipho сказал:

(это скажет СЕ, что значения в этих байтах могут меняться).

:offtopic: А если Хипхо - таких строк будет не 5, а 155 с пропуском байт под вопросик - то тогда что  ?  Или от одной строчки через + сколько то байт хук ставить ? Так там может расстояния между функциями в + 30000 байт - это считать будешь весь день. Одно дело - это если бы они друг от друга были не далеко, там можно было бы от одной сигнатуры, через + сколько то байт - наставить хуки, но а если они далеко друг от друга :rolleyes:  Хотя автор темы - пишет, что можно сделать поинтером, а то есть вывести адрес и от него уже писать, а это значит они не далеко друг от друга... Но опять же пишет, что там бред показывает у одного из персонажей из за подобного подхода.  

Хотя если игра на Юнити - то я видел как люди делали от модуля прям (а то есть класса персонажа) подобное - прям с одной строкой. 

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

Вот собственно смещения от пойнтера:

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

Голод                        20
Болезнь                     -10
Депрессия                   -40
Усталость                    8
Ранения                     -28
Скрытность                   6c
Изготовление                 84
Исследования                 54
Собирательство               3c
Охота                        b4
Рыбалка                      e4
Сбор                         cc
Готовка                      9c
Сила                         114
Ловкость                     fc
Телосложение                 144
Борьба                       12c
Интелект                     1a4
Речь                         174
Медицина                     18c
Знания                       15c

 

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

14631111.jpg

14625991.jpg

Вот графически. Что бы было более понятно. Наглядно так сказать. У остальных 7 персонажей все корректно отображается.

Что в красном и зеленом квадрате отображается корректно.

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

13 часа назад, Strajder сказал:

Возможно ли заставить работать все 5 скриптов по одному коду? Примерно так:

Тестить не на чем, попробуй так (прочти кометы в скрипте:

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

{ Game   : Dead In Bermuda.exe
  Version:
  Date   : 2017-06-27
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]

aobscan(Psyho,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 EB) // should be unique
aobscan(Sleep,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 BA) // should be unique
aobscan(Noattack,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 54) // should be unique
aobscan(Hungry,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 ED) // should be unique
aobscan(Disease,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9) // should be unique
alloc(newmem,$2048)
label(code)
label(returnP)
label(returnS)
label(returnN)
label(returnH)
label(returnD)
registersymbol(Psyho)
registersymbol(Sleep)
registersymbol(Noattack)
registersymbol(Hungry)
registersymbol(Disease)

newmem:
  mov [eax+08], (float)0

code:
  fld dword ptr [eax+08]
  fstp dword ptr [ebp-0C]
  cmp byte ptr [Psyho+10],EB        // Писал на коленке, так что:
  je returnP                        // 1 - проверь смещение +10 а то
  cmp word ptr [Sleep+10],E9BA      // может я не правильно посчитал и
  je returnS                        // 2 - лучше сделать проверку по
  cmp word ptr [Noattack+10],E954   // двум (а может и по четырём) байтам
  je returnN                        // во всех скриптах, а то у тебя E9
  cmp word ptr [Hungry+10],E9ED     // в четырёх скриптах.
  je returnH
  cmp byte ptr [Disease+10],E9
  je returnD

Sleep:
  jmp newmem
  db 90
returnS:

Psyho:
  jmp newmem
  db 90
returnP:

Noattack:
  jmp newmem
  db 90
returnN:

Hungry:
  jmp newmem
  db 90
returnH:

Disease:
  jmp newmem
  db 90
returnD:

[DISABLE]

Psyho:
  db D9 40 08 D9 5D F4
Sleep:
  db D9 40 08 D9 5D F4
Noattack:
  db D9 40 08 D9 5D F4
Hungry:
  db D9 40 08 D9 5D F4
Disease:
  db D9 40 08 D9 5D F4

unregistersymbol(Psyho)
unregistersymbol(Sleep)
unregistersymbol(Noattack)
unregistersymbol(Hungry)
unregistersymbol(Disease)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1403D049

""+1403D02A: 83 EC 08           -  sub esp,08
""+1403D02D: 68 60 0E D0 0E     -  push 0ED00E60
""+1403D032: 57                 -  push edi
""+1403D033: E8 28 4F 68 F1     -  call 056C1F60
""+1403D038: 83 C4 10           -  add esp,10
""+1403D03B: 85 C0              -  test eax,eax
""+1403D03D: 74 1B              -  je 1403D05A
""+1403D03F: 8B 86 B8 00 00 00  -  mov eax,[esi+000000B8]
""+1403D045: 8B C8              -  mov ecx,eax
""+1403D047: 39 09              -  cmp [ecx],ecx
// ---------- INJECTING HERE ----------
""+1403D049: D9 40 08           -  fld dword ptr [eax+08]
""+1403D04C: D9 5D F4           -  fstp dword ptr [ebp-0C]
// ---------- DONE INJECTING  ----------
""+1403D04F: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403D052: D9 5D F4           -  fstp dword ptr [ebp-0C]
""+1403D055: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403D058: EB 24              -  jmp 1403D07E
""+1403D05A: 83 EC 08           -  sub esp,08
""+1403D05D: 57                 -  push edi
""+1403D05E: 68 10 23 2A 17     -  push 172A2310
""+1403D063: E8 10 49 68 F1     -  call 056C1978
""+1403D068: 83 C4 10           -  add esp,10
""+1403D06B: 83 EC 08           -  sub esp,08
}

 

 

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

ЗЫ: Но скорее всего скрипт будет приводить к вылету - если от двух (или более) игровых инструкций одновременно попадёт на newmem.

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

ЗЫ1: Посмотрел логи во всех пяти скриптах - более правильное решение будет такое:

1. Перейди на адрес 

jmp 1403D07E // на него

в отладчике и сделай АА-скрипт с Логами из инструкции по этому адресу и выложи сюда.

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

Функция:

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

128CDE20 - 55                    - push ebp
128CDE21 - 8B EC                 - mov ebp,esp
128CDE23 - 57                    - push edi
128CDE24 - 56                    - push esi
128CDE25 - 83 EC 10              - sub esp,10 { 16 }
128CDE28 - 8B 75 08              - mov esi,[ebp+08]
128CDE2B - 8B 7D 0C              - mov edi,[ebp+0C]
128CDE2E - 83 EC 08              - sub esp,08 { 8 }
128CDE31 - 68 C03FA70E           - push 0EA73FC0 { [050082F4] }
128CDE36 - 57                    - push edi
128CDE37 - E8 2441CAF2           - call 05571F60
128CDE3C - 83 C4 10              - add esp,10 { 16 }
128CDE3F - 85 C0                 - test eax,eax
128CDE41 - 74 1E                 - je 128CDE61
128CDE43 - 8B 86 A8000000        - mov eax,[esi+000000A8]
128CDE49 - 8B C8                 - mov ecx,eax
128CDE4B - 39 09                 - cmp [ecx],ecx
128CDE4D - D9 40 08              - fld dword ptr [eax+08]
128CDE50 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDE53 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDE56 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDE59 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDE5C - E9 ED000000           - jmp 128CDF4E
128CDE61 - 83 EC 08              - sub esp,08 { 8 }
128CDE64 - 68 403EA70E           - push 0EA73E40 { [050082F4] }
128CDE69 - 57                    - push edi
128CDE6A - E8 F140CAF2           - call 05571F60
128CDE6F - 83 C4 10              - add esp,10 { 16 }
128CDE72 - 85 C0                 - test eax,eax
128CDE74 - 74 1E                 - je 128CDE94
128CDE76 - 8B 86 AC000000        - mov eax,[esi+000000AC]
128CDE7C - 8B C8                 - mov ecx,eax
128CDE7E - 39 09                 - cmp [ecx],ecx
128CDE80 - D9 40 08              - fld dword ptr [eax+08]
128CDE83 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDE86 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDE89 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDE8C - D9 45 F4              - fld dword ptr [ebp-0C]
128CDE8F - E9 BA000000           - jmp 128CDF4E
128CDE94 - 83 EC 08              - sub esp,08 { 8 }
128CDE97 - 68 48C89D0E           - push 0E9DC848 { [050082F4] }
128CDE9C - 57                    - push edi
128CDE9D - E8 BE40CAF2           - call 05571F60
128CDEA2 - 83 C4 10              - add esp,10 { 16 }
128CDEA5 - 85 C0                 - test eax,eax
128CDEA7 - 74 1E                 - je 128CDEC7
128CDEA9 - 8B 86 B0000000        - mov eax,[esi+000000B0]
128CDEAF - 8B C8                 - mov ecx,eax
128CDEB1 - 39 09                 - cmp [ecx],ecx
128CDEB3 - D9 40 08              - fld dword ptr [eax+08]
128CDEB6 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDEB9 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDEBC - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDEBF - D9 45 F4              - fld dword ptr [ebp-0C]
128CDEC2 - E9 87000000           - jmp 128CDF4E
128CDEC7 - 83 EC 08              - sub esp,08 { 8 }
128CDECA - 68 003EA70E           - push 0EA73E00 { [050082F4] }
128CDECF - 57                    - push edi
128CDED0 - E8 8B40CAF2           - call 05571F60
128CDED5 - 83 C4 10              - add esp,10 { 16 }
128CDED8 - 85 C0                 - test eax,eax
128CDEDA - 74 1E                 - je 128CDEFA
128CDEDC - 8B 86 B4000000        - mov eax,[esi+000000B4]
128CDEE2 - 8B C8                 - mov ecx,eax
128CDEE4 - 39 09                 - cmp [ecx],ecx
128CDEE6 - D9 40 08              - fld dword ptr [eax+08]
128CDEE9 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDEEC - D9 45 F4              - fld dword ptr [ebp-0C]
128CDEEF - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDEF2 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDEF5 - E9 54000000           - jmp 128CDF4E
128CDEFA - 83 EC 08              - sub esp,08 { 8 }
128CDEFD - 68 08C79D0E           - push 0E9DC708 { [050082F4] }
128CDF02 - 57                    - push edi
128CDF03 - E8 5840CAF2           - call 05571F60
128CDF08 - 83 C4 10              - add esp,10 { 16 }
128CDF0B - 85 C0                 - test eax,eax
128CDF0D - 74 1B                 - je 128CDF2A
128CDF0F - 8B 86 B8000000        - mov eax,[esi+000000B8]
128CDF15 - 8B C8                 - mov ecx,eax
128CDF17 - 39 09                 - cmp [ecx],ecx
128CDF19 - D9 40 08              - fld dword ptr [eax+08]
128CDF1C - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDF1F - D9 45 F4              - fld dword ptr [ebp-0C]
128CDF22 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDF25 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDF28 - EB 24                 - jmp 128CDF4E
128CDF2A - 83 EC 08              - sub esp,08 { 8 }
128CDF2D - 57                    - push edi
128CDF2E - 68 C0110916           - push 160911C0 { [050082F4] }
128CDF33 - E8 403ACAF2           - call 05571978
128CDF38 - 83 C4 10              - add esp,10 { 16 }
128CDF3B - 83 EC 08              - sub esp,08 { 8 }
128CDF3E - 56                    - push esi
128CDF3F - 50                    - push eax
128CDF40 - E8 A346D0F2           - call 055D25E8
128CDF45 - 83 C4 10              - add esp,10 { 16 }
128CDF48 - D9 05 9809A613        - fld dword ptr [13A60998] { [-1.00] }
128CDF4E - 8D 65 F8              - lea esp,[ebp-08]
128CDF51 - 5E                    - pop esi
128CDF52 - 5F                    - pop edi
128CDF53 - C9                    - leave 
128CDF54 - C3                    - ret 

 

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

14643204.jpg

 

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

20 минут назад, Strajder сказал:

Функция:

Выложи АА-скрипт из:

128CDF48 - D9 05 9809A613        - fld dword ptr [13A60998] { [-1.00] }
128CDF4E - 8D 65 F8              - lea esp,[ebp-08]                     // этой инструкции, попробуем написать скрипт
128CDF51 - 5E                    - pop esi
128CDF52 - 5F                    - pop edi
128CDF53 - C9                    - leave 
128CDF54 - C3                    - ret 

 

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

36 минут назад, Strajder сказал:

Функция:

Смотрю ты заморочился Плагином. Плагин не нужен просто сделай стандартный СЕ-ный скрипт с аобсканом.

Вот давно делал видео для новичков.

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

Да нет, тут маленько другое...

Дочка с садика вернулась с температурой 37,6, маленькие истерики. Нам всего 4 года в августе будет. Вот и ныряю, туда - сюда.

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

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

Да нет, тут маленько другое...

Дочка с садика вернулась с температурой 37,6, маленькие истерики. Нам всего 4 года в августе будет. Вот и ныряю, туда - сюда.

ОК!

Ну тыды, как получится.

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

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

{ Game   : Dead In Bermuda.exe
  Version: 
  Date   : 2017-06-29
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]


aobscan(INJECT,05 * * * * 8D 65 F8 5E 5F C9 C3 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  lea esp,[ebp-08]
  pop esi
  pop edi
  jmp return

INJECT+05:
  jmp newmem
return:
registersymbol(INJECT)

[DISABLE]

INJECT+05:
  db 8D 65 F8 5E 5F

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 15CEC5E6

15CEC5C5: 57                 -  push edi
15CEC5C6: 68 C0 31 4C 1D     -  push 1D4C31C0
15CEC5CB: E8 A8 53 94 EF     -  call 05631978
15CEC5D0: 83 C4 10           -  add esp,10
15CEC5D3: 83 EC 08           -  sub esp,08
15CEC5D6: 56                 -  push esi
15CEC5D7: 50                 -  push eax
15CEC5D8: E8 C3 36 9A EF     -  call 0568FCA0
15CEC5DD: 83 C4 10           -  add esp,10
15CEC5E0: D9 05 50 BA 80 0F  -  fld dword ptr [0F80BA50]
// ---------- INJECTING HERE ----------
15CEC5E6: 8D 65 F8           -  lea esp,[ebp-08]
15CEC5E9: 5E                 -  pop esi
15CEC5EA: 5F                 -  pop edi
// ---------- DONE INJECTING  ----------
15CEC5EB: C9                 -  leave 
15CEC5EC: C3                 -  ret 
15CEC5ED: 00 00              -  add [eax],al
15CEC5EF: 00 55 8B           -  add [ebp-75],dl
15CEC5F2: EC                 -  in al,dx
15CEC5F3: 53                 -  push ebx
15CEC5F4: 57                 -  push edi
15CEC5F5: 56                 -  push esi
15CEC5F6: 83 EC 1C           -  sub esp,1C
15CEC5F9: 8B 45 08           -  mov eax,[ebp+08]
}

 

На счет твоего скрипта не работает. Ругается на смещения +10. Я еще пока, что мало знаю. Да и плохо понимаю, откуда +10 ты вычислил. Буду благодарен за ссылку. Где можно почитать об этом.

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

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

aobscan(INJECT,05 * * * * 8D 65 F8 5E 5F C9 C3 00) // should be unique

Попробуй:

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

{ Game   : Dead In Bermuda.exe
  Version:
  Date   : 2017-06-29
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]
aobscan(INJECT,05 * * * * 8D 65 F8 5E 5F C9 C3 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(INJECT)

newmem:
  mov [eax+08], (float)0
  fld dword ptr [eax+08]
  fst dword ptr [ebp-0C]

code:
  lea esp,[ebp-08]
  pop esi
  pop edi
  jmp return

INJECT+05:
  jmp newmem
return:

[DISABLE]
INJECT+05:
  db 8D 65 F8 5E 5F

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 15CEC5E6

15CEC5C5: 57                 -  push edi
15CEC5C6: 68 C0 31 4C 1D     -  push 1D4C31C0
15CEC5CB: E8 A8 53 94 EF     -  call 05631978
15CEC5D0: 83 C4 10           -  add esp,10
15CEC5D3: 83 EC 08           -  sub esp,08
15CEC5D6: 56                 -  push esi
15CEC5D7: 50                 -  push eax
15CEC5D8: E8 C3 36 9A EF     -  call 0568FCA0
15CEC5DD: 83 C4 10           -  add esp,10
15CEC5E0: D9 05 50 BA 80 0F  -  fld dword ptr [0F80BA50]
// ---------- INJECTING HERE ----------
15CEC5E6: 8D 65 F8           -  lea esp,[ebp-08]
15CEC5E9: 5E                 -  pop esi
15CEC5EA: 5F                 -  pop edi
// ---------- DONE INJECTING  ----------
15CEC5EB: C9                 -  leave
15CEC5EC: C3                 -  ret
15CEC5ED: 00 00              -  add [eax],al
15CEC5EF: 00 55 8B           -  add [ebp-75],dl
15CEC5F2: EC                 -  in al,dx
15CEC5F3: 53                 -  push ebx
15CEC5F4: 57                 -  push edi
15CEC5F5: 56                 -  push esi
15CEC5F6: 83 EC 1C           -  sub esp,1C
15CEC5F9: 8B 45 08           -  mov eax,[ebp+08]
}

 

Но сразу оговорюсь, что обнуляться будут все характеристики ГГ и которые нужно и которые (наверное) не нужно, так что нужно будет фильтровать характеристики. 

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

Как не странно обнуляются, только первые 5 характеристик, остальные 16 не меняются.

Скрипт работает как нужно

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

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

Ругается на смещения +10

А ну да не много не так, пробуй:

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

{ Game   : Dead In Bermuda.exe
  Version:
  Date   : 2017-06-27
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]

aobscan(Psyho,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 EB) // should be unique
aobscan(Sleep,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 BA) // should be unique
aobscan(Noattack,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 54) // should be unique
aobscan(Hungry,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 ED) // should be unique
aobscan(Disease,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9) // should be unique
alloc(newmem,$2048)
label(code)
label(returnP)
label(returnS)
label(returnN)
label(returnH)
label(returnD)
registersymbol(Psyho)
registersymbol(Sleep)
registersymbol(Noattack)
registersymbol(Hungry)
registersymbol(Disease)

newmem:
  mov [eax+08], (float)0

code:
  fld dword ptr [eax+08]
  fstp dword ptr [ebp-0C]
  cmp byte ptr [[Psyho]+10],EB        // Писал на коленке, так что:
  je returnP                        // 1 - проверь смещение +10 а то
  cmp word ptr [[Sleep]+10],E9BA      // может я не правильно посчитал и
  je returnS                        // 2 - лучше сделать проверку по
  cmp word ptr [[Noattack]+10],E954   // двум (а может и по четырём) байтам
  je returnN                        // во всех скриптах, а то у тебя E9
  cmp word ptr [[Hungry]+10],E9ED     // в четырёх скриптах.
  je returnH
  cmp byte ptr [[Disease]+10],E9
  je returnD

Sleep:
  jmp newmem
  db 90
returnS:

Psyho:
  jmp newmem
  db 90
returnP:

Noattack:
  jmp newmem
  db 90
returnN:

Hungry:
  jmp newmem
  db 90
returnH:

Disease:
  jmp newmem
  db 90
returnD:

[DISABLE]

Psyho:
  db D9 40 08 D9 5D F4
Sleep:
  db D9 40 08 D9 5D F4
Noattack:
  db D9 40 08 D9 5D F4
Hungry:
  db D9 40 08 D9 5D F4
Disease:
  db D9 40 08 D9 5D F4

unregistersymbol(Psyho)
unregistersymbol(Sleep)
unregistersymbol(Noattack)
unregistersymbol(Hungry)
unregistersymbol(Disease)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1403D049

""+1403D02A: 83 EC 08           -  sub esp,08
""+1403D02D: 68 60 0E D0 0E     -  push 0ED00E60
""+1403D032: 57                 -  push edi
""+1403D033: E8 28 4F 68 F1     -  call 056C1F60
""+1403D038: 83 C4 10           -  add esp,10
""+1403D03B: 85 C0              -  test eax,eax
""+1403D03D: 74 1B              -  je 1403D05A
""+1403D03F: 8B 86 B8 00 00 00  -  mov eax,[esi+000000B8]
""+1403D045: 8B C8              -  mov ecx,eax
""+1403D047: 39 09              -  cmp [ecx],ecx
// ---------- INJECTING HERE ----------
""+1403D049: D9 40 08           -  fld dword ptr [eax+08]
""+1403D04C: D9 5D F4           -  fstp dword ptr [ebp-0C]
// ---------- DONE INJECTING  ----------
""+1403D04F: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403D052: D9 5D F4           -  fstp dword ptr [ebp-0C]
""+1403D055: D9 45 F4           -  fld dword ptr [ebp-0C]
""+1403D058: EB 24              -  jmp 1403D07E
""+1403D05A: 83 EC 08           -  sub esp,08
""+1403D05D: 57                 -  push edi
""+1403D05E: 68 10 23 2A 17     -  push 172A2310
""+1403D063: E8 10 49 68 F1     -  call 056C1978
""+1403D068: 83 C4 10           -  add esp,10
""+1403D06B: 83 EC 08           -  sub esp,08
}

 

 

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

Все равно пишет ошибка в строке 35. Не весь код пригоден к инъекции.

Можно если не затруднит вкратце рассказать как получил [[Psyho]  ""+10""   ]

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

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

Можно если не затруднит вкратце рассказать как получил [[Psyho]  ""+10""   ]

Посчитать байты 

D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 EB
Ссылка на комментарий
Поделиться на другие сайты

15 минут назад, Strajder сказал:

Как не странно обнуляются, только первые 5 характеристик, остальные 16 не меняются.

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

// Всё правильно в этой функции их пять
128CDE20 - 55                    - push ebp
128CDE21 - 8B EC                 - mov ebp,esp
128CDE23 - 57                    - push edi
128CDE24 - 56                    - push esi
128CDE25 - 83 EC 10              - sub esp,10 { 16 }
128CDE28 - 8B 75 08              - mov esi,[ebp+08]
128CDE2B - 8B 7D 0C              - mov edi,[ebp+0C]
128CDE2E - 83 EC 08              - sub esp,08 { 8 }
128CDE31 - 68 C03FA70E           - push 0EA73FC0 { [050082F4] }
128CDE36 - 57                    - push edi
128CDE37 - E8 2441CAF2           - call 05571F60
128CDE3C - 83 C4 10              - add esp,10 { 16 }
128CDE3F - 85 C0                 - test eax,eax
128CDE41 - 74 1E                 - je 128CDE61
128CDE43 - 8B 86 A8000000        - mov eax,[esi+000000A8]  // 1
128CDE49 - 8B C8                 - mov ecx,eax
128CDE4B - 39 09                 - cmp [ecx],ecx
128CDE4D - D9 40 08              - fld dword ptr [eax+08]
128CDE50 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDE53 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDE56 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDE59 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDE5C - E9 ED000000           - jmp 128CDF4E
128CDE61 - 83 EC 08              - sub esp,08 { 8 }
128CDE64 - 68 403EA70E           - push 0EA73E40 { [050082F4] }
128CDE69 - 57                    - push edi
128CDE6A - E8 F140CAF2           - call 05571F60
128CDE6F - 83 C4 10              - add esp,10 { 16 }
128CDE72 - 85 C0                 - test eax,eax
128CDE74 - 74 1E                 - je 128CDE94
128CDE76 - 8B 86 AC000000        - mov eax,[esi+000000AC] // 2
128CDE7C - 8B C8                 - mov ecx,eax
128CDE7E - 39 09                 - cmp [ecx],ecx
128CDE80 - D9 40 08              - fld dword ptr [eax+08]
128CDE83 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDE86 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDE89 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDE8C - D9 45 F4              - fld dword ptr [ebp-0C]
128CDE8F - E9 BA000000           - jmp 128CDF4E
128CDE94 - 83 EC 08              - sub esp,08 { 8 }
128CDE97 - 68 48C89D0E           - push 0E9DC848 { [050082F4] }
128CDE9C - 57                    - push edi
128CDE9D - E8 BE40CAF2           - call 05571F60
128CDEA2 - 83 C4 10              - add esp,10 { 16 }
128CDEA5 - 85 C0                 - test eax,eax
128CDEA7 - 74 1E                 - je 128CDEC7
128CDEA9 - 8B 86 B0000000        - mov eax,[esi+000000B0]  // 3
128CDEAF - 8B C8                 - mov ecx,eax
128CDEB1 - 39 09                 - cmp [ecx],ecx
128CDEB3 - D9 40 08              - fld dword ptr [eax+08]
128CDEB6 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDEB9 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDEBC - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDEBF - D9 45 F4              - fld dword ptr [ebp-0C]
128CDEC2 - E9 87000000           - jmp 128CDF4E
128CDEC7 - 83 EC 08              - sub esp,08 { 8 }
128CDECA - 68 003EA70E           - push 0EA73E00 { [050082F4] }
128CDECF - 57                    - push edi
128CDED0 - E8 8B40CAF2           - call 05571F60
128CDED5 - 83 C4 10              - add esp,10 { 16 }
128CDED8 - 85 C0                 - test eax,eax
128CDEDA - 74 1E                 - je 128CDEFA
128CDEDC - 8B 86 B4000000        - mov eax,[esi+000000B4]  // 4
128CDEE2 - 8B C8                 - mov ecx,eax
128CDEE4 - 39 09                 - cmp [ecx],ecx
128CDEE6 - D9 40 08              - fld dword ptr [eax+08]
128CDEE9 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDEEC - D9 45 F4              - fld dword ptr [ebp-0C]
128CDEEF - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDEF2 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDEF5 - E9 54000000           - jmp 128CDF4E
128CDEFA - 83 EC 08              - sub esp,08 { 8 }
128CDEFD - 68 08C79D0E           - push 0E9DC708 { [050082F4] }
128CDF02 - 57                    - push edi
128CDF03 - E8 5840CAF2           - call 05571F60
128CDF08 - 83 C4 10              - add esp,10 { 16 }
128CDF0B - 85 C0                 - test eax,eax
128CDF0D - 74 1B                 - je 128CDF2A
128CDF0F - 8B 86 B8000000        - mov eax,[esi+000000B8]  //5
128CDF15 - 8B C8                 - mov ecx,eax
128CDF17 - 39 09                 - cmp [ecx],ecx
128CDF19 - D9 40 08              - fld dword ptr [eax+08]
128CDF1C - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDF1F - D9 45 F4              - fld dword ptr [ebp-0C]
128CDF22 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDF25 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDF28 - EB 24                 - jmp 128CDF4E
128CDF2A - 83 EC 08              - sub esp,08 { 8 }
128CDF2D - 57                    - push edi
128CDF2E - 68 C0110916           - push 160911C0 { [050082F4] }
128CDF33 - E8 403ACAF2           - call 05571978
128CDF38 - 83 C4 10              - add esp,10 { 16 }
128CDF3B - 83 EC 08              - sub esp,08 { 8 }
128CDF3E - 56                    - push esi
128CDF3F - 50                    - push eax
128CDF40 - E8 A346D0F2           - call 055D25E8
128CDF45 - 83 C4 10              - add esp,10 { 16 }
128CDF48 - D9 05 9809A613        - fld dword ptr [13A60998] { [-1.00] }
128CDF4E - 8D 65 F8              - lea esp,[ebp-08]
128CDF51 - 5E                    - pop esi
128CDF52 - 5F                    - pop edi
128CDF53 - C9                    - leave 
128CDF54 - C3                    - ret 

 

 

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

20 минут назад, Strajder сказал:

остальные 16 не меняются.

Чтобы выйти на функции других характеристик, думаю нужно рассматривать структуру по esi: 

mov eax,[esi+000000A8]  // 1
Ссылка на комментарий
Поделиться на другие сайты

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


// Всё правильно в этой функции их пять
128CDE20 - 55                    - push ebp
128CDE21 - 8B EC                 - mov ebp,esp
128CDE23 - 57                    - push edi
128CDE24 - 56                    - push esi
128CDE25 - 83 EC 10              - sub esp,10 { 16 }
128CDE28 - 8B 75 08              - mov esi,[ebp+08]
128CDE2B - 8B 7D 0C              - mov edi,[ebp+0C]
128CDE2E - 83 EC 08              - sub esp,08 { 8 }
128CDE31 - 68 C03FA70E           - push 0EA73FC0 { [050082F4] }
128CDE36 - 57                    - push edi
128CDE37 - E8 2441CAF2           - call 05571F60
128CDE3C - 83 C4 10              - add esp,10 { 16 }
128CDE3F - 85 C0                 - test eax,eax
128CDE41 - 74 1E                 - je 128CDE61
128CDE43 - 8B 86 A8000000        - mov eax,[esi+000000A8]  // 1
128CDE49 - 8B C8                 - mov ecx,eax
128CDE4B - 39 09                 - cmp [ecx],ecx
128CDE4D - D9 40 08              - fld dword ptr [eax+08]
128CDE50 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDE53 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDE56 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDE59 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDE5C - E9 ED000000           - jmp 128CDF4E
128CDE61 - 83 EC 08              - sub esp,08 { 8 }
128CDE64 - 68 403EA70E           - push 0EA73E40 { [050082F4] }
128CDE69 - 57                    - push edi
128CDE6A - E8 F140CAF2           - call 05571F60
128CDE6F - 83 C4 10              - add esp,10 { 16 }
128CDE72 - 85 C0                 - test eax,eax
128CDE74 - 74 1E                 - je 128CDE94
128CDE76 - 8B 86 AC000000        - mov eax,[esi+000000AC] // 2
128CDE7C - 8B C8                 - mov ecx,eax
128CDE7E - 39 09                 - cmp [ecx],ecx
128CDE80 - D9 40 08              - fld dword ptr [eax+08]
128CDE83 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDE86 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDE89 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDE8C - D9 45 F4              - fld dword ptr [ebp-0C]
128CDE8F - E9 BA000000           - jmp 128CDF4E
128CDE94 - 83 EC 08              - sub esp,08 { 8 }
128CDE97 - 68 48C89D0E           - push 0E9DC848 { [050082F4] }
128CDE9C - 57                    - push edi
128CDE9D - E8 BE40CAF2           - call 05571F60
128CDEA2 - 83 C4 10              - add esp,10 { 16 }
128CDEA5 - 85 C0                 - test eax,eax
128CDEA7 - 74 1E                 - je 128CDEC7
128CDEA9 - 8B 86 B0000000        - mov eax,[esi+000000B0]  // 3
128CDEAF - 8B C8                 - mov ecx,eax
128CDEB1 - 39 09                 - cmp [ecx],ecx
128CDEB3 - D9 40 08              - fld dword ptr [eax+08]
128CDEB6 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDEB9 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDEBC - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDEBF - D9 45 F4              - fld dword ptr [ebp-0C]
128CDEC2 - E9 87000000           - jmp 128CDF4E
128CDEC7 - 83 EC 08              - sub esp,08 { 8 }
128CDECA - 68 003EA70E           - push 0EA73E00 { [050082F4] }
128CDECF - 57                    - push edi
128CDED0 - E8 8B40CAF2           - call 05571F60
128CDED5 - 83 C4 10              - add esp,10 { 16 }
128CDED8 - 85 C0                 - test eax,eax
128CDEDA - 74 1E                 - je 128CDEFA
128CDEDC - 8B 86 B4000000        - mov eax,[esi+000000B4]  // 4
128CDEE2 - 8B C8                 - mov ecx,eax
128CDEE4 - 39 09                 - cmp [ecx],ecx
128CDEE6 - D9 40 08              - fld dword ptr [eax+08]
128CDEE9 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDEEC - D9 45 F4              - fld dword ptr [ebp-0C]
128CDEEF - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDEF2 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDEF5 - E9 54000000           - jmp 128CDF4E
128CDEFA - 83 EC 08              - sub esp,08 { 8 }
128CDEFD - 68 08C79D0E           - push 0E9DC708 { [050082F4] }
128CDF02 - 57                    - push edi
128CDF03 - E8 5840CAF2           - call 05571F60
128CDF08 - 83 C4 10              - add esp,10 { 16 }
128CDF0B - 85 C0                 - test eax,eax
128CDF0D - 74 1B                 - je 128CDF2A
128CDF0F - 8B 86 B8000000        - mov eax,[esi+000000B8]  //5
128CDF15 - 8B C8                 - mov ecx,eax
128CDF17 - 39 09                 - cmp [ecx],ecx
128CDF19 - D9 40 08              - fld dword ptr [eax+08]
128CDF1C - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDF1F - D9 45 F4              - fld dword ptr [ebp-0C]
128CDF22 - D9 5D F4              - fstp dword ptr [ebp-0C]
128CDF25 - D9 45 F4              - fld dword ptr [ebp-0C]
128CDF28 - EB 24                 - jmp 128CDF4E
128CDF2A - 83 EC 08              - sub esp,08 { 8 }
128CDF2D - 57                    - push edi
128CDF2E - 68 C0110916           - push 160911C0 { [050082F4] }
128CDF33 - E8 403ACAF2           - call 05571978
128CDF38 - 83 C4 10              - add esp,10 { 16 }
128CDF3B - 83 EC 08              - sub esp,08 { 8 }
128CDF3E - 56                    - push esi
128CDF3F - 50                    - push eax
128CDF40 - E8 A346D0F2           - call 055D25E8
128CDF45 - 83 C4 10              - add esp,10 { 16 }
128CDF48 - D9 05 9809A613        - fld dword ptr [13A60998] { [-1.00] }
128CDF4E - 8D 65 F8              - lea esp,[ebp-08]
128CDF51 - 5E                    - pop esi
128CDF52 - 5F                    - pop edi
128CDF53 - C9                    - leave 
128CDF54 - C3                    - ret 

 

 

И тут ты был тоже прав. Цепляет другие значения. Пропадают диалоги. Попробую с Esi.

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

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

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

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