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

Как исключить адреса не являющиеся указателями при написании фильтра


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

Скрипт:

"Эмуляция"

Спойлер

{ Game   : Tutorial-i386.exe
  Version: 
  Date   : 2019-04-03
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(INJECT,Tutorial-i386.exe,81 BB 80 04 00 00 E8 03 00 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(Value)
registersymbol(Value)
label(Value1)
registersymbol(Value1)
label(Value2)
registersymbol(Value2)
label(Value3)
registersymbol(Value3)
label(Cikl)
registersymbol(INJECT)

newmem:
  lea ecx,[Value2]
  mov [Value],ecx
  push edx
  mov edx,0
  lea ecx,[Value]

Cikl:
  push [ecx+edx*4]
  pop [Value3]
  inc edx
  cmp edx,3
  je @f
  jmp Cikl

@@:
  pop edx

code:
  cmp [ebx+00000480],000003E8
  jmp return

Value:
  dd 0
Value1:
  dd 7
Value2:
  dd #66
Value3:
  dd 0

INJECT:
  jmp newmem
  db 90 90 90 90 90
return:

[DISABLE]
INJECT:
  db 81 BB 80 04 00 00 E8 03 00 00

unregistersymbol(Value)
unregistersymbol(Value1)
unregistersymbol(Value2)
unregistersymbol(Value3)
unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Tutorial-i386.exe"+24073

"Tutorial-i386.exe"+24061: C9                             -  leave 
"Tutorial-i386.exe"+24062: C3                             -  ret 
"Tutorial-i386.exe"+24063: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+24065: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+24067: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+24069: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+2406B: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+2406D: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+2406F: 00 53 89                       -  add [ebx-77],dl
"Tutorial-i386.exe"+24072: C3                             -  ret 
// ---------- INJECTING HERE ----------
"Tutorial-i386.exe"+24073: 81 BB 80 04 00 00 E8 03 00 00  -  cmp [ebx+00000480],000003E8
// ---------- DONE INJECTING  ----------
"Tutorial-i386.exe"+2407D: 75 2C                          -  jne Tutorial-i386.exe+240AB
"Tutorial-i386.exe"+2407F: 8B 83 68 04 00 00              -  mov eax,[ebx+00000468]
"Tutorial-i386.exe"+24085: B2 01                          -  mov dl,01
"Tutorial-i386.exe"+24087: 8B 8B 68 04 00 00              -  mov ecx,[ebx+00000468]
"Tutorial-i386.exe"+2408D: 8B 09                          -  mov ecx,[ecx]
"Tutorial-i386.exe"+2408F: FF 91 20 02 00 00              -  call dword ptr [ecx+00000220]
"Tutorial-i386.exe"+24095: 8B 83 78 04 00 00              -  mov eax,[ebx+00000478]
"Tutorial-i386.exe"+2409B: B2 00                          -  mov dl,00
"Tutorial-i386.exe"+2409D: 8B 8B 78 04 00 00              -  mov ecx,[ebx+00000478]
"Tutorial-i386.exe"+240A3: 8B 09                          -  mov ecx,[ecx]
}

 

"Фильтрование"

Спойлер

{ Game   : Tutorial-i386.exe
  Version: 
  Date   : 2019-04-03
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscan(INJECT1,FF 34 91 8F 05 XX XX XX XX 42) // should be unique
alloc(newmem,$1000)
label(code)
registersymbol(code)
label(return)
label(Value4)
registersymbol(Value4)
label(Value66)
registersymbol(Value66)
registersymbol(INJECT1)

newmem:
  push eax
  /*cmp edx,0
  jne code*/
  mov eax,[ecx+edx*4]
  mov [Value4],eax
{$LUA}
  function CheckAddress(Value4)
    return readInteger('Value4') ~= nil
  end
{$ASM}
  mov eax,[eax]
  mov [Value66],eax

code:
  pop eax
  readmem(INJECT1,9)
  jmp return

Value4:
  dd 0
Value66:
  dd 0

INJECT1:
  jmp newmem
  db 90 90 90 90
return:

[DISABLE]
INJECT1:
   readmem(code+1,9)

unregistersymbol(Value4)
unregistersymbol(Value66)
unregistersymbol(code)
unregistersymbol(INJECT1)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 000E0018

""+DFFFB:                                -  ?? 
""+DFFFC:                                -  ?? 
""+DFFFD:                                -  ?? 
""+DFFFE:                                -  ?? 
""+DFFFF:                                -  ?? 
""+E0000: 8D 0D 45 00 0E 00              -  lea ecx,[000E0045]
""+E0006: 89 0D 3D 00 0E 00              -  mov [000E003D],ecx
""+E000C: 52                             -  push edx
""+E000D: BA 00 00 00 00                 -  mov edx,00000000
""+E0012: 8D 0D 3D 00 0E 00              -  lea ecx,[000E003D]
// ---------- INJECTING HERE ----------
""+E0018: FF 34 91                       -  push [ecx+edx*4]
""+E001B: 8F 05 49 00 0E 00              -  pop [000E0049]
// ---------- DONE INJECTING  ----------
""+E0021: 42                             -  inc edx
""+E0022: 83 FA 03                       -  cmp edx,03
""+E0025: 0F 84 02 00 00 00              -  je 000E002D
""+E002B: EB EB                          -  jmp 000E0018
""+E002D: 5A                             -  pop edx
""+E002E: 81 BB 80 04 00 00 E8 03 00 00  -  cmp [ebx+00000480],000003E8
""+E0038: E9 40 40 34 00                 -  jmp Tutorial-i386.exe+2407D
""+E003D: 45                             -  inc ebp
""+E003E: 00 0E                          -  add [esi],cl
""+E0040: 00 07                          -  add [edi],al
}

 

Ссылка на тему обсуждения - ТЫК

Видео:

Табличка:

Tutorial-i386_030419.CT

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

@Garik66

Я не совсем понял как работает эта часть скрипта

Спойлер

{$LUA}
  function CheckAddress(Value4)
    return readInteger(Value4) ~= nil
  end

 

 

В мануале по Луа такое описание:

Value4 - область видимости этого параметра только функция CheckAddress. То есть Value4 в функции и Value4 созданный в АА скрипте - это разные переменные.

return - возврат результата. Например вызов такой функции

Спойлер

function CheckAddress(Value4)
local a = 2
   return Value4 + a 
end
CheckAddress(111)

 

вернет 113.

CheckAddress(111) - метод вызова функции с передачей в параметр Value4 значения 111

readInteger(Value4) ~= nil - это операция отношения, следовательно return readInteger(Value4) ~= nil вернет либо false, либо true.

Такие вот описания там.

 

@Garik66 В написанных тобою скриптах AA я не увидел вызова функции CheckAddress.

Также на видео хотелось бы увидеть поведение туториала в случае если указатель указывает на nil.

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

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

Также на видео хотелось бы увидеть поведение туториала в случае если указатель указывает на nil.

Ты прав, похоже эксперимент не удался, нужно будет тестировать на чем-то другом

Добиться вылета из туториала не удалось, если в 

[ecx+edx*4]

не указатель, то доходит до инструкции 

 mov eax,[eax]

и прыгает назад на 

 push eax

по-видимому Дарк Байт в Туториал уже встроил обработку исключений.

ЗЫ: сейчас ТС предыдущей темы обсуждения, зайдет, спишемся с ним и попробуем поэскпериментировать в его игре.

ЗЫ1 или @MasterGH глянет.

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

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

Value4 - область видимости этого параметра только функция CheckAddress. То есть Value4 в функции и Value4 созданный в АА скрипте - это разные переменные.

Не разные image.thumb.png.741320e9ce4899553671e68a514c2048.png при использовании registersymbol(Value3) Value3 глобальная.

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

С ковычками да, будет читать адрес переменной созданной в АА скрипте.

 

Вот примеры разных результатов, если кому интересно

Спойлер

function CheckAddress(Value4)
print(readInteger("Value4")) -- Напечатает 7 (в таблице СЕ значение 7). Читает адрес созданный в АА скрипте.
print(readInteger(Value4)) -- Ничего не напечатает, так как Value4 = 111, и по адресу 111 ничего нет.
print(Value4) -- Напечатает 111

Value4 = getAddress("Value4")
print(Value4) -- Напечатает 917535 (в Hex будет адрес 000E001F)
print(readInteger(Value4)) -- Напечатает 7 (в таблице СЕ значение 7)
end
CheckAddress(111)

 

 

Если я правильно понял из мануала, переменная Value4, которая объявлена здесь - function CheckAddress(Value4), видна только в теле этой функции, но не за её пределами. Это тоже что и объявить local value4 внутри функции.

Спойлер

a = 1
local b = 2

function CheckAddress(c)
local d = 4
end

 

здесь переменная "a" является глобальной, и видна во всем проекте, во всех функциях.

"b" - видна только в этом файле и в любых функциях этого файла

"с" и "d"- видны только в этой функции

Видны только в этой функции- значит вне этой функции невозможно получить доступ к этим переменным.

 

Кроме того чтобы похвастаться, я написал это ещё и с тою целью, чтобы знающие люди найдя здесь неточности, указали мне на них, тем самым сделав наши познания более верными.?

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

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

С ковычками да

Я тебя понял, ошибку в скрипте поправил: 

Спойлер

 mov [Value4],eax
{$LUA}
  function CheckAddress(Value4)
    return readInteger('Value4') ~= nil
  end
{$ASM}
  mov eax,[eax]

 

 

ЗЫ: не могу вспомнить, в каких из установленных у меня игр, есть подобная же ситуация с указателями, чтобы довести дело до конца.
Как и написал выше на Туториале вылета получить не удалось.

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

В 03.04.2019 в 10:27, Garik66 сказал:

Как и написал выше на Туториале вылета получить не удалось.

 

 

почему ?  туториал то же  вылетает  когда не  правильные адреса .
вот  простой скрипт  на шаг 4 туториала срабатывает  на кнопку Hit Me . сразу вылетает .

Спойлер

[ENABLE]

aobscanmodule(INJECT,Tutorial-i386.exe+24BCF,D9 9E 94 04 00 00)
alloc(newmem,2048)

label(code)
label(return)
registersymbol(INJECT)

newmem:
 push eax
 mov eax,[ebx] //  краш здесь. ebx = 00000004 или другое маленькое
 mov eax,[eax+04]
 mov eax,[eax+08]
 pop eax

code:
 fstp dword ptr [esi+00000494]
 jmp return

INJECT:
 jmp newmem
 nop

return:

[DISABLE]

INJECT:
 db D9 9E 94 04 00 00

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Tutorial-i386.exe+24BCF

Tutorial-i386.exe+24BAB: DB 7D C0  - fstp tword ptr [ebp-40]
Tutorial-i386.exe+24BAE: B8 04000000 - mov eax,00000004
Tutorial-i386.exe+24BB3: E8 589DFEFF - call 0040E910
Tutorial-i386.exe+24BB8: 89 45 D0  - mov [ebp-30],eax
Tutorial-i386.exe+24BBB: DB 45 D0  - fild dword ptr [ebp-30]
Tutorial-i386.exe+24BBE: DB 6D C0  - fld tword ptr [ebp-40]
Tutorial-i386.exe+24BC1: DEC1 - faddp 
Tutorial-i386.exe+24BC3: D9 5D FC  - fstp dword ptr [ebp-04]
Tutorial-i386.exe+24BC6: D9 45 FC  - fld dword ptr [ebp-04]
Tutorial-i386.exe+24BC9: D8 AE 94040000  - fsubr dword ptr [esi+00000494]
// ---------- INJECTING HERE ----------
Tutorial-i386.exe+24BCF: D9 9E 94040000  - fstp dword ptr [esi+00000494]
// ---------- DONE INJECTING  ----------
Tutorial-i386.exe+24BD5: FF B6 94040000  - push [esi+00000494]
Tutorial-i386.exe+24BDB: 8D 45 BC  - lea eax,[ebp-44]
Tutorial-i386.exe+24BDE: 50 - push eax
Tutorial-i386.exe+24BDF: B9 04000000 - mov ecx,00000004
Tutorial-i386.exe+24BE4: BA 04000000 - mov edx,00000004
Tutorial-i386.exe+24BE9: B8 00000000 - mov eax,00000000
Tutorial-i386.exe+24BEE: E8 BD8C0100 - call 0043D8B0
Tutorial-i386.exe+24BF3: 8B 55 BC  - mov edx,[ebp-44]
Tutorial-i386.exe+24BF6: 8B 86 80040000  - mov eax,[esi+00000480]
Tutorial-i386.exe+24BFC: E8 7FFB0600 - call 00494780
}

 

 

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

Почему бы не погуглить? Обработчик исключений был бы идеальным решением, проверки адресов. https://wiki.cheatengine.org/index.php?title=Auto_Assembler:TRY_EXCEPT

Там даже пример есть. Ох уж любители костылей.

 

Цитата

In this example, if any error occurs - for example, ecx is zero or ecx+10 is unreadable -, eax will be set to zero:

{$try}

mov eax,[ecx+10]

jmp short noerror

{$except}

xor eax,eax

noerror:

 

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

В 04.04.2019 в 20:58, partoftheworlD сказал:

Почему бы не погуглить? Обработчик исключений был бы идеальным решением, проверки адресов. https://wiki.cheatengine.org/index.php?title=Auto_Assembler:TRY_EXCEPT

Там даже пример есть. Ох уж любители костылей.

 

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

 

Так что решили проблему? По Lua я не помогу, т.к. пока очень мало времени. По Lua я бы сделал иначе. Там нужно вызывать Lua функцию через AA. Если будет время, покажу пример.

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

В 04.04.2019 в 20:29, Alex2411 сказал:

вот  простой скрипт  на шаг 4 туториала срабатывает  на кнопку Hit Me . сразу вылетает .

вот попробуй

Спойлер

{ Game   : Tutorial-i386.exe
  Version: 
  Date   : 2019-04-07
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
{$LUA}
timer = createTimer(true)
timer:setInterval(1)
timer.OnTimer = function()
Value8 = readInteger('Value')
  if readInteger('Value8') ~= 0 and readInteger('Value8') ~= nil then
    writeInteger('Flag',1)
  end
end

{$ASM}
aobscanmodule(INJECT,Tutorial-i386.exe,D9 9E 94 04 00 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(Value)
registersymbol(Value)
label(Value8)
registersymbol(Value8)
label(Flag)
registersymbol(Flag)
registersymbol(INJECT)

newmem:
  mov [Value],ebx
  cmp [Flag],0
  je code
  mov eax,[ebx] //  краш здесь. ebx = 00000004 или другое маленькое
  mov eax,[eax+04]
  mov eax,[eax+08]

code:
  fstp dword ptr [esi+00000494]
  jmp return

Value:
  dd 0
Value8:
  dd 0
Flag:
  dd 0

INJECT:
  jmp newmem
  db 90
return:

[DISABLE]
{$LUA}
timer:setEnabled(false)

{$ASM}
INJECT:
  db D9 9E 94 04 00 00

unregistersymbol(Value)
unregistersymbol(Value8)
unregistersymbol(Flag)
unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Tutorial-i386.exe"+24BCF

"Tutorial-i386.exe"+24BAB: DB 7D C0              -  fstp tword ptr [ebp-40]
"Tutorial-i386.exe"+24BAE: B8 04 00 00 00        -  mov eax,00000004
"Tutorial-i386.exe"+24BB3: E8 58 9D FE FF        -  call Tutorial-i386.exe+E910
"Tutorial-i386.exe"+24BB8: 89 45 D0              -  mov [ebp-30],eax
"Tutorial-i386.exe"+24BBB: DB 45 D0              -  fild dword ptr [ebp-30]
"Tutorial-i386.exe"+24BBE: DB 6D C0              -  fld tword ptr [ebp-40]
"Tutorial-i386.exe"+24BC1: DE C1                 -  faddp 
"Tutorial-i386.exe"+24BC3: D9 5D FC              -  fstp dword ptr [ebp-04]
"Tutorial-i386.exe"+24BC6: D9 45 FC              -  fld dword ptr [ebp-04]
"Tutorial-i386.exe"+24BC9: D8 AE 94 04 00 00     -  fsubr dword ptr [esi+00000494]
// ---------- INJECTING HERE ----------
"Tutorial-i386.exe"+24BCF: D9 9E 94 04 00 00     -  fstp dword ptr [esi+00000494]
// ---------- DONE INJECTING  ----------
"Tutorial-i386.exe"+24BD5: FF B6 94 04 00 00     -  push [esi+00000494]
"Tutorial-i386.exe"+24BDB: 8D 45 BC              -  lea eax,[ebp-44]
"Tutorial-i386.exe"+24BDE: 50                    -  push eax
"Tutorial-i386.exe"+24BDF: B9 04 00 00 00        -  mov ecx,00000004
"Tutorial-i386.exe"+24BE4: BA 04 00 00 00        -  mov edx,00000004
"Tutorial-i386.exe"+24BE9: B8 00 00 00 00        -  mov eax,00000000
"Tutorial-i386.exe"+24BEE: E8 BD 8C 01 00        -  call Tutorial-i386.exe+3D8B0
"Tutorial-i386.exe"+24BF3: 8B 55 BC              -  mov edx,[ebp-44]
"Tutorial-i386.exe"+24BF6: 8B 86 80 04 00 00     -  mov eax,[esi+00000480]
"Tutorial-i386.exe"+24BFC: E8 7F FB 06 00        -  call Tutorial-i386.exe+94780
}

 

 

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

В 04.04.2019 в 17:58, partoftheworlD сказал:

Почему бы не погуглить? Обработчик исключений был бы идеальным решением

 

это появилось  только в  чит енжин 6.8

 

 

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

Этот пример стоит попробовать,

 

у меня с этой проверкой скрипт  вообше не реаботает . даже  не включаеться

 

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

 

 

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

вот попробуй

 

это  не вылетает , но  с приавильными адресми этот  скрипт то  же не работает . все уходит  в фильтр

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

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

все уходит  в фильтр

да тупанул.

Короче нужно высыпаться.

Через недельку посмотрю.

Пока из-за работы - не получается.

Нужно все-таки найти будет реальную игровую ситуацию и на ней тестить.

 

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

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

Нужно все-таки найти будет реальную игровую ситуацию и на ней тестить.

 

для туториала  я добавлял  метку  для ebx  что бы с начала  записывать в ebx  разные значения , а потом проверять  на вылет.
на реальных  играх у  меня вылетало  на Omerta City of Gangsters   Tales of Maj'Eyal   Poker Night 2   Battle Brothers . еще  вроде на  играх RPG Maker .

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

6 часов назад, Alex2411 сказал:

у меня с этой проверкой скрипт  вообше не реаботает . даже  не включаеться

 

try/except на последней версии CE 6.8.3 должно работать

{$try}
mov eax,[ecx+10]
jmp short noerror
{$except}
xor eax,eax
noerror:

Может быть, ты свой скрипт покажешь, если хочешь конечно

Под except нужно восстановить оригинальное значение.

Хотя я думаю, не поможет этот try/catch. Будет вылетать на других инструкциях

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

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

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

 

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

28 минут назад, MasterGH сказал:

try/except на последней версии CE 6.8.3 должно работать

 

у меня  6.8.3. 6 . качал здесь

https://github.com/cheat-engine/cheat-engine/releases

там  она уже наверное  месяц не обновлялась. когда вписывыю  в скрипт
{$try}
{$except}
он  вобще перестает  активироаться  по этому я не знаю  работает проверка или неь .  надписи эти выделяються  оранжевым цветом  как регистры и подчеркиваються.
 читал  не помню где что если инструкции  срабатывает очень часто  то эта проверка может сильно тормозать  и даже крашить  игру

 

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

 

скрипт из игры  я выладывал здесь

https://gamehacklab.ru/topic/7243-как-исключить-не-действительные-адреса-из-фильтра/?do=findComment&comment=58547

я пробовал в него  добавить проверку try except , но скрипт после этого не включаеться

 

пысы .  когда будет время   посмотри пожалуйста тему  про плагин aa maker

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

Все работает ;)

Спойлер

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
{$try}
mov eax,[0]
//mov eax,[ebx+00000480]
jmp short noerror
{$except}
noerror:
mov eax,[ebx+00000480]
exit:
jmp returnhere

"Tutorial-i386.exe"+23EA8:
jmp newmem
nop
returnhere:

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"Tutorial-i386.exe"+23EA8:
mov eax,[ebx+00000480]
//Alt: db 8B 83 80 04 00 00

 

 

Если делать без try/except, то естественный crash

 

Спойлер

image.png

 

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

12 минут назад, partoftheworlD сказал:

хм, видимо short/far надо обязательно указывать.

 

Я проверил. Это без разницы. Вообще я думал кода будет больше, когда я давно писал SEH я еще инструкции добавлял.

Я беру убираю эти директивы и получается точно такой же код, однако вылет)) Похоже CE прячет байты и инструкции того самого SEH

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

3 часа назад, Alex2411 сказал:

я не знаю  работает проверка или неь

У меня как и 

 

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

Все работает ;)

тоже работает: Проверял на твоем скрипте для 4 шага туториала.

Спойлер

image.thumb.png.efbeb689a3d50e53c884223ebadf2c48.png

 

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

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

Все работает ;)

 

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

тоже работает

 

еще раз  проверял .  не работает у меня.  не включаеться  этот скрипт
может  что бы  работал  нужне dvbm ? у  меня ос старая  не подерживает ((

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

  • 1 год спустя...

всё нашёл сам вот уникальная сигнатура  81 * * * * * * * * * 75 * 8B * * * * * B2 в смысле на табличке в первом скрипте

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

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

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

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