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

Поиск статического указателя в игре


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

Только что, NickSpirit сказал:

Ну скрипт делал не я изначально. Его предложил Keng. Я просто немного переделал. А главное он заработал) 

Ваш скрипт не верен - скорее всего приведёт к вылету со временем.

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

Вот верный скрипт, адрес, нужный Вам не нужно тогда менять - оставьте его myAddr:

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

{ Game   : FClient.exe
  Version:
  Date   : 2016-10-09
  Author : NickGrava
  This script does blah blah blah
}
[ENABLE]
aobscanmodule(Adress,FClient.exe,D9 5F 6C 5E 5B) // should be unique
alloc(newmem,$1000)
label(return)
label(myAddr)
registersymbol(myAddr)
registersymbol(Adress)

newmem:
  fstp dword ptr [edi+6C]
  lea ebx,[edi+6C]
  mov [myAddr],ebx
  pop esi
  pop ebx
  jmp return

myAddr:
dd 0

Adress:
  jmp newmem
return:

[DISABLE]
Adress:
  db D9 5F 6C 5E 5B

unregistersymbol(myAddr)
unregistersymbol(Adress)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "FClient.exe"+151F38
"FClient.exe"+151F13: 8B 8F 88 00 00 00  -  mov ecx,[edi+00000088]
"FClient.exe"+151F19: 89 5F 64           -  mov [edi+64],ebx
"FClient.exe"+151F1C: 8B 49 04           -  mov ecx,[ecx+04]
"FClient.exe"+151F1F: B8 06 00 00 00     -  mov eax,00000006
"FClient.exe"+151F24: E8 97 40 ED FF     -  call FClient.exe+25FC0
"FClient.exe"+151F29: 89 45 F4           -  mov [ebp-0C],eax
"FClient.exe"+151F2C: DB 45 F4           -  fild dword ptr [ebp-0C]
"FClient.exe"+151F2F: D9 5D F4           -  fstp dword ptr [ebp-0C]
"FClient.exe"+151F32: D9 45 F4           -  fld dword ptr [ebp-0C]
"FClient.exe"+151F35: D9 57 70           -  fst dword ptr [edi+70]
// ---------- INJECTING HERE ----------
"FClient.exe"+151F38: D9 5F 6C           -  fstp dword ptr [edi+6C]
"FClient.exe"+151F3B: 5E                 -  pop esi
"FClient.exe"+151F3C: 5B                 -  pop ebx
// ---------- DONE INJECTING  ----------
"FClient.exe"+151F3D: 8B E5              -  mov esp,ebp
"FClient.exe"+151F3F: 5D                 -  pop ebp
"FClient.exe"+151F40: C3                 -  ret
"FClient.exe"+151F41: CC                 -  int 3
"FClient.exe"+151F42: CC                 -  int 3
"FClient.exe"+151F43: CC                 -  int 3
"FClient.exe"+151F44: CC                 -  int 3
"FClient.exe"+151F45: CC                 -  int 3
"FClient.exe"+151F46: CC                 -  int 3
"FClient.exe"+151F47: CC                 -  int 3
}

 

 

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

Либо в той таблице, которую я Вам дал скрипт № 4, нужно всего навсего закомментировать  одну строку:

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

{ Game   : FClient.exe
  Version:
  Date   : 2016-10-09
  Author : GravaPC
  This script does blah blah blah
}
[ENABLE]
aobscanmodule(Garik66,FClient.exe,D9 45 F4 D9 57 70) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(Pointer1)
registersymbol(Pointer1)
registersymbol(Garik66)

newmem:
 // mov dword ptr [ebp-0C],(float)23
  lea ebx,[edi+6C]
  mov [Pointer1],ebx

code:
  fld dword ptr [ebp-0C]
  fst dword ptr [edi+70]
  jmp return

Pointer1:
dd 0

Garik66:
  jmp newmem
  db 90
return:

[DISABLE]
Garik66:
  db D9 45 F4 D9 57 70

unregistersymbol(Pointer1)
unregistersymbol(Garik66)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "FClient.exe"+151F32
"FClient.exe"+151F0A: 83 C1 10           -  add ecx,10
"FClient.exe"+151F0D: 89 8F A0 00 00 00  -  mov [edi+000000A0],ecx
"FClient.exe"+151F13: 8B 8F 88 00 00 00  -  mov ecx,[edi+00000088]
"FClient.exe"+151F19: 89 5F 64           -  mov [edi+64],ebx
"FClient.exe"+151F1C: 8B 49 04           -  mov ecx,[ecx+04]
"FClient.exe"+151F1F: B8 06 00 00 00     -  mov eax,00000006
"FClient.exe"+151F24: E8 97 40 ED FF     -  call FClient.exe+25FC0
"FClient.exe"+151F29: 89 45 F4           -  mov [ebp-0C],eax
"FClient.exe"+151F2C: DB 45 F4           -  fild dword ptr [ebp-0C]
"FClient.exe"+151F2F: D9 5D F4           -  fstp dword ptr [ebp-0C]
// ---------- INJECTING HERE ----------
"FClient.exe"+151F32: D9 45 F4           -  fld dword ptr [ebp-0C]
"FClient.exe"+151F35: D9 57 70           -  fst dword ptr [edi+70]
// ---------- DONE INJECTING  ----------
"FClient.exe"+151F38: D9 5F 6C           -  fstp dword ptr [edi+6C]
"FClient.exe"+151F3B: 5E                 -  pop esi
"FClient.exe"+151F3C: 5B                 -  pop ebx
"FClient.exe"+151F3D: 8B E5              -  mov esp,ebp
"FClient.exe"+151F3F: 5D                 -  pop ebp
"FClient.exe"+151F40: C3                 -  ret
"FClient.exe"+151F41: CC                 -  int 3
"FClient.exe"+151F42: CC                 -  int 3
"FClient.exe"+151F43: CC                 -  int 3
"FClient.exe"+151F44: CC                 -  int 3
}

 

 

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

Попробую щас вариант с Вашим скриптом. А вот по поводу 4 скрипта - не соглашусь. Там же точка инъекции абсолютно в ином месте. Я может чего то не допонимаю...но я вижу другой порядок инструкций в 4 скрипте.

 

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

Только что, NickSpirit сказал:

Попробую щас вариант с Вашим скриптом. А вот по поводу 4 скрипта - не соглашусь. Там же точка инъекции абсолютно в ином месте. Я может чего то не допонимаю...но я вижу другой порядок инструкций в 4 скрипте.

Проверьте 4 скрипт.

 

Качнул табличку keng, я ошибся не обратил внимание, что keng делал без аобскана скрипт, просто на адресе инструкции, так что скрипт вернул назад в этом сообщении. 

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

Только что, Garik66 сказал:

Должны работать правильно все три скрипта.

Попробовал вот этот вариант

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

{ Game   : FClient.exe
  Version:
  Date   : 2016-10-09
  Author : NickGrava
  This script does blah blah blah
}
[ENABLE]
aobscanmodule(Adress,FClient.exe,D9 5F 6C 5E 5B) // should be unique
alloc(newmem,$1000)
label(return)
label(myAddr)
registersymbol(myAddr)
registersymbol(Adress)

newmem:
  fstp dword ptr [edi+6C]
  lea ebx,[edi+6C]
  mov [myAddr],ebx
  pop esi
  pop ebx
  jmp return

myAddr:
dd 0

Adress:
  jmp newmem
return:

[DISABLE]
Adress:
  db D9 5F 6C 5E 5B

unregistersymbol(myAddr)
unregistersymbol(Adress)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "FClient.exe"+151F38
"FClient.exe"+151F13: 8B 8F 88 00 00 00  -  mov ecx,[edi+00000088]
"FClient.exe"+151F19: 89 5F 64           -  mov [edi+64],ebx
"FClient.exe"+151F1C: 8B 49 04           -  mov ecx,[ecx+04]
"FClient.exe"+151F1F: B8 06 00 00 00     -  mov eax,00000006
"FClient.exe"+151F24: E8 97 40 ED FF     -  call FClient.exe+25FC0
"FClient.exe"+151F29: 89 45 F4           -  mov [ebp-0C],eax
"FClient.exe"+151F2C: DB 45 F4           -  fild dword ptr [ebp-0C]
"FClient.exe"+151F2F: D9 5D F4           -  fstp dword ptr [ebp-0C]
"FClient.exe"+151F32: D9 45 F4           -  fld dword ptr [ebp-0C]
"FClient.exe"+151F35: D9 57 70           -  fst dword ptr [edi+70]
// ---------- INJECTING HERE ----------
"FClient.exe"+151F38: D9 5F 6C           -  fstp dword ptr [edi+6C]
"FClient.exe"+151F3B: 5E                 -  pop esi
"FClient.exe"+151F3C: 5B                 -  pop ebx
// ---------- DONE INJECTING  ----------
"FClient.exe"+151F3D: 8B E5              -  mov esp,ebp
"FClient.exe"+151F3F: 5D                 -  pop ebp
"FClient.exe"+151F40: C3                 -  ret
"FClient.exe"+151F41: CC                 -  int 3
"FClient.exe"+151F42: CC                 -  int 3
"FClient.exe"+151F43: CC                 -  int 3
"FClient.exe"+151F44: CC                 -  int 3
"FClient.exe"+151F45: CC                 -  int 3
"FClient.exe"+151F46: CC                 -  int 3
"FClient.exe"+151F47: CC                 -  int 3
}

 

Получил вылет игры. 

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

Другие скрипты тоже попробуйте.

Скрипты делал на основе того что Вы выкладывали. И у Вас на одном компе не работало на другом работало, так что ошибка там где-то, а не в скриптах. 

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

Посмотрел сейчас свою табличку, где все 4 скрипта.

Мой самый первый - скрипт 1 и скрипт keng одно и тоже и должен работать правильно, просто у меня с аобсканом, который Вы дали. Так что он тоже должен работать правильно, но не понятно что Вы делаете и как. И верный ли аобскан дали.

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

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

в комментах к скрипту от Keng - регистр EAX - c ним не пошло почему то. Пошло с EBX.

Не пошло, потому что регистр eax дальше по коду игры используется и соответственно нужно делать связку

push eax
................
pop eax

а в случае с ebx у нас уже в коде видно, что ebx восстанавливается вот здесь:

"FClient.exe"+151F3C: 5B                 -  pop ebx

 

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

40 минуты назад, Garik66 сказал:

Ну ладно, результатов тестирования скриптов, я по-видимому не дождусь - я пошёл по делам.;)

 

Работа такая работа!) я пока работу работаю. не могу тестить) и на том пока спасибо!

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

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

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

{ Game   : FClient.exe
  Version: 
  Date   : 2016-10-17
  Author : AirSim

  This script does blah blah blah
}

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

 
 
aobscanmodule(VIDRYBI,FClient.exe,D9 47 6C D9 E8) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(pointer)
registersymbol(pointer)
registersymbol(VIDRYBI)

newmem:
  push eax
  lea eax,[edi+6C]
  mov [pointer],eax
  pop eax

code:
  fld dword ptr [edi+6C]
  fld1 
  jmp return

pointer:
  dd 0

VIDRYBI:
  jmp newmem
return:


[DISABLE]
//code from here till the end of the code will be used to disable the cheat
VIDRYBI:
  db D9 47 6C D9 E8

dealloc(newmem)
unregistersymbol(VIDRYBI)
unregistersymbol(pointer)
{
// ORIGINAL CODE - INJECTION POINT: "FClient.exe"+151415

"FClient.exe"+1513EF: 2B F0                    -  sub esi,eax
"FClient.exe"+1513F1: 89 74 24 14              -  mov [esp+14],esi
"FClient.exe"+1513F5: 83 FE 01                 -  cmp esi,01
"FClient.exe"+1513F8: 7F 08                    -  jg FClient.exe+151402
"FClient.exe"+1513FA: C7 44 24 14 01 00 00 00  -  mov [esp+14],00000001
"FClient.exe"+151402: DB 44 24 14              -  fild dword ptr [esp+14]
"FClient.exe"+151406: 8B C3                    -  mov eax,ebx
"FClient.exe"+151408: 2B 47 74                 -  sub eax,[edi+74]
"FClient.exe"+15140B: DC 0D 68 C0 12 01        -  fmul qword ptr [FClient.exe+33C068]
"FClient.exe"+151411: D9 5C 24 10              -  fstp dword ptr [esp+10]
// ---------- INJECTING HERE ----------
"FClient.exe"+151415: D9 47 6C                 -  fld dword ptr [edi+6C]
"FClient.exe"+151418: D9 E8                    -  fld1 
// ---------- DONE INJECTING  ----------
"FClient.exe"+15141A: DC E9                    -  fsub st(1),st(0)
"FClient.exe"+15141C: D9 44 24 10              -  fld dword ptr [esp+10]
"FClient.exe"+151420: D9 C0                    -  fld st(0)
"FClient.exe"+151422: 89 44 24 10              -  mov [esp+10],eax
"FClient.exe"+151426: DE FB                    -  fdivp st(3),st(0)
"FClient.exe"+151428: D9 CA                    -  fxch st(2)
"FClient.exe"+15142A: D9 5C 24 14              -  fstp dword ptr [esp+14]
"FClient.exe"+15142E: DB 44 24 10              -  fild dword ptr [esp+10]
"FClient.exe"+151432: 79 06                    -  jns FClient.exe+15143A
"FClient.exe"+151434: D8 05 BC B9 12 01        -  fadd dword ptr [FClient.exe+33B9BC]
}

 

Вообщем - на двух компах работает. вылетов нет. перезаходил в игру - включал выключал скрипт - тестил часа 3-4. Теперь есть другой адрес..но там инструкция работает не с одним адресом...и придется изучать фильтры. P.S. подскажите - вот этот скрипт на вид верен или нет?

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

24 минуты назад, NickSpirit сказал:

вот этот скрипт на вид верен или нет?

Верен, все скрипты, выложенные ранее, примерно такие-же.

Только 

dealloc(newmem)
unregistersymbol(VIDRYBI)
unregistersymbol(pointer)

Лучше так

unregistersymbol(VIDRYBI)
unregistersymbol(pointer)
dealloc(newmem)

dealloc(newmem) в самом низу.

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

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

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

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