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

Обход проверки целостности кода для игры Assassins Creed Unity или дополнение к уроку Xipho.


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

Скрипт "Bypass Check":

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

{ Game   : ACU.exe
  Version: 
  Date   : 2016-09-25
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(check1,ACU.exe,32 02 F9 E9 9C 06 00 00) // should be unique
aobscanmodule(check2,ACU.exe,32 02 F6 C3 9B) // should be unique
aobscanmodule(check3,ACU.exe,32 02 F5 A8 3F) // should be unique
aobscanmodule(check4,ACU.exe,8B 00 E9 0F A6 FF FF) // should be unique
aobscanmodule(check5,ACU.exe,32 02 F8 48 83 C2 01) // should be unique
aobscanmodule(check6,ACU.exe,66 8B 00 E9 4F BD FF FF) // should be unique
aobscanmodule(check7,ACU.exe,48 8B 00 E9 5D 2C FF FF) // should be unique
aobscanmodule(check8,ACU.exe,48 8B 00 E9 38 56 02 00) // should be unique
aobscanmodule(check9,ACU.exe,48 8B 00 E9 70 CA FD FF) // should be unique
alloc(newmem1,$4000,"ACU.exe"+55D741F)
alloc(CopyExeFail,125980671)
label(CopyBlock)                      // Блок копирования, чтобы не повторять код.
label(newmem2)
label(newmem3)
label(newmem4)
label(newmem5)
label(newmem6)
label(newmem7)
label(newmem8)
label(newmem9)
label(AlreadyCopy1)
label(AlreadyCopy2)
label(AlreadyCopy3)
label(AlreadyCopy4)
label(AlreadyCopy5)
label(AlreadyCopy6)
label(AlreadyCopy7)
label(AlreadyCopy8)
label(AlreadyCopy9)
label(code1)
label(code2)
label(code3)
label(code4)
label(code5)
label(code6)
label(code7)
label(code8)
label(code9)
label(return1)
label(return2)
label(return3)
label(return4)
label(return5)
label(return6)
label(return7)
label(return8)
label(return9)
registersymbol(check1)
registersymbol(check2)
registersymbol(check3)
registersymbol(check4)
registersymbol(check5)
registersymbol(check6)
registersymbol(check7)
registersymbol(check8)
registersymbol(check9)

newmem1:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne AlreadyCopy1
  call CopyBlock

AlreadyCopy1:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rdx,rsi
  jb code1
  lea rsi,["ACU.exe"+7824FFF]
  cmp rdx,rsi
  ja code1

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rdx,rsi
  lea rsi,[CopyExeFail]
  add rdx,rsi

code1:
  pop rsi
  xor al,[rdx]
  stc 
  jmp 1455D7AC3
  jmp return1

newmem2:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne AlreadyCopy2
  call CopyBlock

AlreadyCopy2:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rdx,rsi
  jb code2
  lea rsi,["ACU.exe"+7824FFF]
  cmp rdx,rsi
  ja code2

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rdx,rsi
  lea rsi,[CopyExeFail]
  add rdx,rsi

code2:
  pop rsi
  xor al,[rdx]
  test bl,-65
  jmp return2

newmem3:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne AlreadyCopy3
  call CopyBlock

AlreadyCopy3:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rdx,rsi
  jb code3
  lea rsi,["ACU.exe"+7824FFF]
  cmp rdx,rsi
  ja code3

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rdx,rsi
  lea rsi,[CopyExeFail]
  add rdx,rsi

code3:
  pop rsi
  xor al,[rdx]
  cmc
  test al,3F
  jmp return3

newmem4:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne AlreadyCopy4
  call CopyBlock

AlreadyCopy4:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb code4
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja code4

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

code4:
  pop rsi
  mov eax,[rax]
  jmp 1455CB8E5
  jmp return4

newmem5:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne AlreadyCopy5
  call CopyBlock

AlreadyCopy5:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rdx,rsi
  jb code5
  lea rsi,["ACU.exe"+7824FFF]
  cmp rdx,rsi
  ja code5

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rdx,rsi
  lea rsi,[CopyExeFail]
  add rdx,rsi

code5:
  pop rsi
  xor al,[rdx]
  clc
  add rdx,01
  jmp return5

newmem6:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne AlreadyCopy6
  call CopyBlock

AlreadyCopy6:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb code6
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja code6

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

code6:
  pop rsi
  mov ax,[rax]
  jmp 1455CFDFC
  jmp return6

newmem7:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne AlreadyCopy7
  call CopyBlock

AlreadyCopy7:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb code7
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja code7

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

code7:
  pop rsi
  mov rax,[rax]
  jmp 1455CAA8F
  jmp return7

newmem8:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne AlreadyCopy8
  call CopyBlock

AlreadyCopy8:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb code8
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja code8

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

code8:
  pop rsi
  mov rax,[rax]
  jmp 1455EF4E4
  jmp return8

newmem9:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne AlreadyCopy9
  call CopyBlock

AlreadyCopy9:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb code9
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja code9

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

code9:
  pop rsi
  mov rax,[rax]
  jmp 1455CCA45
  jmp return9

CopyBlock:
  push rdi
  push rcx

// Блок копирования ехе файла
  lea rsi,["ACU.exe"]                // Адрес exe файла
  lea rdi,[CopyExeFail]              // Адрес нашей копии ехе файла
  mov rcx,7824FFF                    // Размер ехе файла в hex`е
  repe movsb

// Блок восстановления копии до оригинала ехе файла.
  lea rdi,[CopyExeFail]
  mov rcx,55D741F
  mov [rdi+rcx],E9F90232
  mov [rdi+rcx+4],0000069C
  mov rcx,55D658F
  mov [rdi+rcx],C3F60232
  mov [rdi+rcx+4],D9F8E99B
  mov rcx,7F48
  mov [rdi+rcx],A8F50232
  mov [rdi+rcx+4],C283483F
  mov rcx,55D12CF
  mov [rdi+rcx],0FE9008B
  mov [rdi+rcx+4],0FFFFFA6
  mov rcx,27708D6
  mov [rdi+rcx],48F80232
  mov [rdi+rcx+4],E901C283
  mov rcx,55D40A5
  mov [rdi+rcx],E9008b66
  mov [rdi+rcx+4],FFFFBD4F
  mov rcx,55D7E2A
  mov [rdi+rcx],E9008b48
  mov [rdi+rcx+4],FFFF2C5D
  mov rcx,55C9EA4
  mov [rdi+rcx],E9008B48
  mov [rdi+rcx+4],00025638
  mov rcx,55EFFCD
  mov [rdi+rcx],E9008B48
  mov [rdi+rcx+4],FFFDCA70

  pop rcx
  pop rdi

  ret

CopyExeFail:
  dq (double)0

check1:
  jmp newmem1
  db 90 90 90
return1:

check2:
  jmp newmem2
return2:

check3:
  jmp newmem3
return3:

check4:
  jmp newmem4
  db 90 90
return4:

check5:
  jmp newmem5
  db 90 90
return5:

check6:
  jmp newmem6
  db 90 90 90
return6:

check7:
  jmp newmem7
  db 90 90 90
return7:

check8:
  jmp newmem8
  db 90 90 90
return8:

check9:
  jmp newmem9
  db 90 90 90
return9:

[DISABLE]
check1:
  db 32 02 F9 E9 9C 06 00 00
check2:
  db 32 02 F6 C3 9B
check3:
  db 32 02 F5 A8 3F
check4:
  db 8B 00 E9 0F A6 FF FF
check5:
  db 32 02 F8 48 83 C2 01
check6:
  db 66 8B 00 E9 4F BD FF FF
check7:
  db 48 8B 00 E9 5D 2C FF FF
check8:
  db 48 8B 00 E9 38 56 02 00
check9:
  db 48 8B 00 E9 70 CA FD FF

unregistersymbol(check1)
unregistersymbol(check2)
unregistersymbol(check3)
unregistersymbol(check4)
unregistersymbol(check5)
unregistersymbol(check6)
unregistersymbol(check7)
unregistersymbol(check8)
unregistersymbol(check9)
//dealloc(CopyExeFail)
dealloc(newmem1)

{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D741F

"ACU.exe"+55D73F0: 48 83 ED 06              -  sub rbp,06
"ACU.exe"+55D73F4: E9 70 9D 01 00           -  jmp ACU.exe+55F1169
"ACU.exe"+55D73F9: E9 7E C9 FF FF           -  jmp ACU.exe+55D3D7C
"ACU.exe"+55D73FE: E9 32 9A FF FF           -  jmp ACU.exe+55D0E35
"ACU.exe"+55D7403: E9 4E 36 19 FD           -  jmp ACU.exe+276AA56
"ACU.exe"+55D7408: E9 00 A2 01 00           -  jmp ACU.exe+55F160D
"ACU.exe"+55D740D: E9 1A 86 01 00           -  jmp ACU.exe+55EFA2C
"ACU.exe"+55D7412: 8F 45 00                 -  pop [rbp+00]
"ACU.exe"+55D7415: E9 9D 09 00 00           -  jmp ACU.exe+55D7DB7
"ACU.exe"+55D741A: E9 50 AA FF FF           -  jmp ACU.exe+55D1E6F
// ---------- INJECTING HERE ----------
"ACU.exe"+55D741F: 32 02                    -  xor al,[rdx]
"ACU.exe"+55D7421: F9                       -  stc 
"ACU.exe"+55D7422: E9 9C 06 00 00           -  jmp ACU.exe+55D7AC3
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D7427: E9 26 59 FF FF           -  jmp ACU.exe+55CCD52
"ACU.exe"+55D742C: 66 89 10                 -  mov [rax],dx
"ACU.exe"+55D742F: E9 D6 E8 FF FF           -  jmp ACU.exe+55D5D0A
"ACU.exe"+55D7434: 55                       -  push rbp
"ACU.exe"+55D7435: E9 B3 0C 25 FD           -  jmp ACU.exe+28280ED
"ACU.exe"+55D743A: D3 C6                    -  rol esi,cl
"ACU.exe"+55D743C: 8B 75 00                 -  mov esi,[rbp+00]
"ACU.exe"+55D743F: E9 A4 BB FF FF           -  jmp ACU.exe+55D2FE8
"ACU.exe"+55D7444: 6B CC CC                 -  imul ecx,esp,-34
"ACU.exe"+55D7447: CC                       -  int 3 
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D658F

"ACU.exe"+55D6575: F8                    -  clc
"ACU.exe"+55D6576: C1 E0 07              -  shl eax,07
"ACU.exe"+55D6579: 3D FD 8E C5 09        -  cmp eax,09C58EFD
"ACU.exe"+55D657E: F5                    -  cmc
"ACU.exe"+55D657F: F8                    -  clc
"ACU.exe"+55D6580: C1 E9 19              -  shr ecx,19
"ACU.exe"+55D6583: F9                    -  stc
"ACU.exe"+55D6584: 09 C8                 -  or eax,ecx
"ACU.exe"+55D6586: 48 85 EA              -  test rdx,rbp
"ACU.exe"+55D6589: 81 FB 87 57 E3 41     -  cmp ebx,41E35787
// ---------- INJECTING HERE ----------
"ACU.exe"+55D658F: 32 02                 -  xor al,[rdx]
"ACU.exe"+55D6591: F6 C3 9B              -  test bl,-65
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D6594: E9 F8 D9 01 00        -  jmp ACU.exe+55F3F91
"ACU.exe"+55D6599: 81 FC 00 FD DF 0B     -  cmp esp,0BDFFD00
"ACU.exe"+55D659F: 66 8B 04 38           -  mov ax,[rax+rdi]
"ACU.exe"+55D65A3: F9                    -  stc
"ACU.exe"+55D65A4: 66 0F A3 D2           -  bt dx,dx
"ACU.exe"+55D65A8: F5                    -  cmc
"ACU.exe"+55D65A9: 48 83 ED 02           -  sub rbp,02
"ACU.exe"+55D65AD: E9 8E 2F FF FF        -  jmp ACU.exe+55C9540
"ACU.exe"+55D65B2: 0F 85 AA 59 FF FF     -  jne ACU.exe+55CBF62
"ACU.exe"+55D65B8: D2 FF                 -  sar bh,cl
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+7F48

"ACU.exe"+7F1C: E9 85 9C 5C 05           -  jmp ACU.exe+55D1BA6
"ACU.exe"+7F21: 66 89 45 08              -  mov [rbp+08],ax
"ACU.exe"+7F25: E9 6A C2 5C 05           -  jmp ACU.exe+55D4194
"ACU.exe"+7F2A: 8F 45 00                 -  pop [rbp+00]
"ACU.exe"+7F2D: E9 F3 AE 5C 05           -  jmp ACU.exe+55D2E25
"ACU.exe"+7F32: 81 FB E0 0F 00 00        -  cmp ebx,00000FE0
"ACU.exe"+7F38: E9 C8 C6 5C 05           -  jmp ACU.exe+55D4605
"ACU.exe"+7F3D: 51                       -  push rcx
"ACU.exe"+7F3E: E9 DD C4 5E 05           -  jmp ACU.exe+55F4420
"ACU.exe"+7F43: 66 0F BA E5 06           -  bt bp,06
// ---------- INJECTING HERE ----------
"ACU.exe"+7F48: 32 02                    -  xor al,[rdx]
"ACU.exe"+7F4A: F5                       -  cmc
"ACU.exe"+7F4B: A8 3F                    -  test al,3F
// ---------- DONE INJECTING  ----------
"ACU.exe"+7F4D: 48 83 C2 01              -  add rdx,01
"ACU.exe"+7F51: 0F 8E F5 1E 5C 05        -  jng ACU.exe+55C9E4C
"ACU.exe"+7F57: FF 4D 00                 -  dec [rbp+00]
"ACU.exe"+7F5A: E9 7D 94 5E 05           -  jmp ACU.exe+55F13DC
"ACU.exe"+7F5F: 66 0F CA                 -  bswap dx
"ACU.exe"+7F62: FE C0                    -  inc al
"ACU.exe"+7F64: 66 0F BA F2 03           -  btr dx,03
"ACU.exe"+7F69: F7 DA                    -  neg edx
"ACU.exe"+7F6B: 48 8D 76 FF              -  lea rsi,[rsi-01]
"ACU.exe"+7F6F: E9 FB 9D 5E 05           -  jmp ACU.exe+55F1D6F
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D12CF

"ACU.exe"+55D12A8: E9 D7 2B 00 00     -  jmp ACU.exe+55D3E84
"ACU.exe"+55D12AD: 9C                 -  pushfq
"ACU.exe"+55D12AE: E9 62 7E FF FF     -  jmp ACU.exe+55C9115
"ACU.exe"+55D12B3: F5                 -  cmc
"ACU.exe"+55D12B4: E9 1A 3C 02 00     -  jmp ACU.exe+55F4ED3
"ACU.exe"+55D12B9: E9 33 B1 FF FF     -  jmp ACU.exe+55CC3F1
"ACU.exe"+55D12BE: E9 8A F2 FF FF     -  jmp ACU.exe+55D054D
"ACU.exe"+55D12C3: E9 7B 90 27 FD     -  jmp ACU.exe+284A343
"ACU.exe"+55D12C8: 41 51              -  push r9
"ACU.exe"+55D12CA: E9 03 C3 FF FF     -  jmp ACU.exe+55CD5D2
// ---------- INJECTING HERE ----------
"ACU.exe"+55D12CF: 8B 00              -  mov eax,[rax]
"ACU.exe"+55D12D1: E9 0F A6 FF FF     -  jmp ACU.exe+55CB8E5
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D12D6: 0F 89 80 00 00 00  -  jns ACU.exe+55D135C
"ACU.exe"+55D12DC: 41 53              -  push r11
"ACU.exe"+55D12DE: E9 72 6C 00 00     -  jmp ACU.exe+55D7F55
"ACU.exe"+55D12E3: F9                 -  stc
"ACU.exe"+55D12E4: 31 C0              -  xor eax,eax
"ACU.exe"+55D12E6: F8                 -  clc
"ACU.exe"+55D12E7: 48 87 44 CD 00     -  xchg [rbp+rcx*8+00],rax
"ACU.exe"+55D12EC: F9                 -  stc
"ACU.exe"+55D12ED: 83 F9 04           -  cmp ecx,04
"ACU.exe"+55D12F0: E9 EF F2 FF FF     -  jmp ACU.exe+55D05E4
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+27708D6

"ACU.exe"+27708B1: 41 57                 -  push r15
"ACU.exe"+27708B3: E9 3E EA E5 02        -  jmp ACU.exe+55CF2F6
"ACU.exe"+27708B8: 66 89 45 00           -  mov [rbp+00],ax
"ACU.exe"+27708BC: E9 64 25 E6 02        -  jmp ACU.exe+55D2E25
"ACU.exe"+27708C1: E9 2B 75 89 FD        -  jmp ACU.exe+7DF1
"ACU.exe"+27708C6: 09 C8                 -  or eax,ecx
"ACU.exe"+27708C8: 66 0F BA E0 0F        -  bt ax,0F
"ACU.exe"+27708CD: F5                    -  cmc
"ACU.exe"+27708CE: 48 3D 8D 98 31 1A     -  cmp eax,1A31988D
"ACU.exe"+27708D4: 84 FF                 -  test bh,bh
// ---------- INJECTING HERE ----------
"ACU.exe"+27708D6: 32 02                 -  xor al,[rdx]
"ACU.exe"+27708D8: F8                    -  clc
"ACU.exe"+27708D9: 48 83 C2 01           -  add rdx,01
// ---------- DONE INJECTING  ----------
"ACU.exe"+27708DD: E9 9C B7 E5 02        -  jmp ACU.exe+55CC07E
"ACU.exe"+27708E2: 48 89 45 00           -  mov [rbp+00],rax
"ACU.exe"+27708E6: E9 FE 63 E6 02        -  jmp ACU.exe+55D6CE9
"ACU.exe"+27708EB: E9 95 A0 E5 02        -  jmp ACU.exe+55CA985
"ACU.exe"+27708F0: 48 89 C1              -  mov rcx,rax
"ACU.exe"+27708F3: E9 98 B1 E5 02        -  jmp ACU.exe+55CBA90
"ACU.exe"+27708F8: E9 41 D8 E5 02        -  jmp ACU.exe+55CE13E
"ACU.exe"+27708FD: 41 52                 -  push r10
"ACU.exe"+27708FF: E9 C9 11 E8 02        -  jmp ACU.exe+55F1ACD
"ACU.exe"+2770904: 0F A3 E5              -  bt ebp,esp
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D40A5

"ACU.exe"+55D4084: B1 F6                    -  mov cl,-0A
"ACU.exe"+55D4086: 0F BE C9                 -  movsx ecx,cl
"ACU.exe"+55D4089: 66 B9 C3 9F              -  mov cx,9FC3
"ACU.exe"+55D408D: 59                       -  pop rcx
"ACU.exe"+55D408E: C3                       -  ret
"ACU.exe"+55D408F: E9 B8 E8 FF FF           -  jmp ACU.exe+55D294C
"ACU.exe"+55D4094: 41 50                    -  push r8
"ACU.exe"+55D4096: E9 AB FA 01 00           -  jmp ACU.exe+55F3B46
"ACU.exe"+55D409B: E9 25 32 18 FD           -  jmp ACU.exe+27572C5
"ACU.exe"+55D40A0: E9 4A 59 FF FF           -  jmp ACU.exe+55C99EF
// ---------- INJECTING HERE ----------
"ACU.exe"+55D40A5: 66 8B 00                 -  mov ax,[rax]
"ACU.exe"+55D40A8: E9 4F BD FF FF           -  jmp ACU.exe+55CFDFC
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D40AD: 0F BA E0 18              -  bt eax,18
"ACU.exe"+55D40B1: 48 0F C8                 -  bswap rax
"ACU.exe"+55D40B4: 38 E5                    -  cmp ch,ah
"ACU.exe"+55D40B6: 38 E6                    -  cmp dh,ah
"ACU.exe"+55D40B8: E9 AC 5C FF FF           -  jmp ACU.exe+55C9D69
"ACU.exe"+55D40BD: 66 0F AD D2              -  shrd dx,dx,cl
"ACU.exe"+55D40C1: 20 C8                    -  and al,cl
"ACU.exe"+55D40C3: F7 D8                    -  neg eax
"ACU.exe"+55D40C5: 48 8B 45 00              -  mov rax,[rbp+00]
"ACU.exe"+55D40C9: 66 FF CA                 -  dec dx
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D7E2A

"ACU.exe"+55D7E08: 3C D5                 -  cmp al,-2B
"ACU.exe"+55D7E0A: 0F A5 F2              -  shld edx,esi,cl
"ACU.exe"+55D7E0D: 00 C3                 -  add bl,al
"ACU.exe"+55D7E0F: 66 F7 D2              -  not dx
"ACU.exe"+55D7E12: 48 8B 14 38           -  mov rdx,[rax+rdi]
"ACU.exe"+55D7E16: E9 E0 28 FF FF        -  jmp ACU.exe+55CA6FB
"ACU.exe"+55D7E1B: 48 89 55 00           -  mov [rbp+00],rdx
"ACU.exe"+55D7E1F: E9 D3 17 FF FF        -  jmp ACU.exe+55C95F7
"ACU.exe"+55D7E24: 57                    -  push rdi
"ACU.exe"+55D7E25: E9 6C CA FF FF        -  jmp ACU.exe+55D4896
// ---------- INJECTING HERE ----------
"ACU.exe"+55D7E2A: 48 8B 00              -  mov rax,[rax]
"ACU.exe"+55D7E2D: E9 5D 2C FF FF        -  jmp ACU.exe+55CAA8F
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D7E32: 56                    -  push rsi
"ACU.exe"+55D7E33: E9 E1 84 FF FF        -  jmp ACU.exe+55D0319
"ACU.exe"+55D7E38: E9 28 98 FF FF        -  jmp ACU.exe+55D1665
"ACU.exe"+55D7E3D: E9 9D B5 01 00        -  jmp ACU.exe+55F33DF
"ACU.exe"+55D7E42: 0F 85 CC C7 FF FF     -  jne ACU.exe+55D4614
"ACU.exe"+55D7E48: 66 C1 EB 06           -  shr bx,06
"ACU.exe"+55D7E4C: 89 C3                 -  mov ebx,eax
"ACU.exe"+55D7E4E: 66 0F A3 E9           -  bt cx,bp
"ACU.exe"+55D7E52: F9                    -  stc
"ACU.exe"+55D7E53: E9 98 60 FF FF        -  jmp ACU.exe+55CDEF0
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55C9EA4

"ACU.exe"+55C9E84: F6 C7 BE                 -  test bh,-42
"ACU.exe"+55C9E87: F9                       -  stc
"ACU.exe"+55C9E88: 66 F7 C3 50 9C           -  test bx,9C50
"ACU.exe"+55C9E8D: D3 E0                    -  shl eax,cl
"ACU.exe"+55C9E8F: E9 C7 77 00 00           -  jmp ACU.exe+55D165B
"ACU.exe"+55C9E94: 48 83 ED 08              -  sub rbp,08
"ACU.exe"+55C9E98: E9 D1 E1 2C FD           -  jmp ACU.exe+289806E
"ACU.exe"+55C9E9D: FD                       -  std
"ACU.exe"+55C9E9E: FC                       -  cld
"ACU.exe"+55C9E9F: E9 87 6D 00 00           -  jmp ACU.exe+55D0C2B
// ---------- INJECTING HERE ----------
"ACU.exe"+55C9EA4: 48 8B 00                 -  mov rax,[rax]
"ACU.exe"+55C9EA7: E9 38 56 02 00           -  jmp ACU.exe+55EF4E4
// ---------- DONE INJECTING  ----------
"ACU.exe"+55C9EAC: 48 FF CE                 -  dec rsi
"ACU.exe"+55C9EAF: F9                       -  stc
"ACU.exe"+55C9EB0: F8                       -  clc
"ACU.exe"+55C9EB1: F5                       -  cmc
"ACU.exe"+55C9EB2: 28 C3                    -  sub bl,al
"ACU.exe"+55C9EB4: F9                       -  stc
"ACU.exe"+55C9EB5: F9                       -  stc
"ACU.exe"+55C9EB6: 66 98                    -  cbw
"ACU.exe"+55C9EB8: F8                       -  clc
"ACU.exe"+55C9EB9: 66 81 FE 0E 96           -  cmp si,960E
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55EFFCD

"ACU.exe"+55EFFB4: F8                 -  clc
"ACU.exe"+55EFFB5: D2 E9              -  shr cl,cl
"ACU.exe"+55EFFB7: 89 C1              -  mov ecx,eax
"ACU.exe"+55EFFB9: F5                 -  cmc
"ACU.exe"+55EFFBA: F5                 -  cmc
"ACU.exe"+55EFFBB: E9 6D 01 2E FD     -  jmp ACU.exe+28D012D
"ACU.exe"+55EFFC0: 9C                 -  pushfq
"ACU.exe"+55EFFC1: E9 DA 3A FE FF     -  jmp ACU.exe+55D3AA0
"ACU.exe"+55EFFC6: 41 54              -  push r12
"ACU.exe"+55EFFC8: E9 89 A8 17 FD     -  jmp ACU.exe+276A856
// ---------- INJECTING HERE ----------
"ACU.exe"+55EFFCD: 48 8B 00           -  mov rax,[rax]
"ACU.exe"+55EFFD0: E9 70 CA FD FF     -  jmp ACU.exe+55CCA45
// ---------- DONE INJECTING  ----------
"ACU.exe"+55EFFD5: 66 35 4D B8        -  xor ax,B84D
"ACU.exe"+55EFFD9: F9                 -  stc
"ACU.exe"+55EFFDA: 66 C1 C0 08        -  rol ax,08
"ACU.exe"+55EFFDE: E9 F6 86 FE FF     -  jmp ACU.exe+55D86D9
"ACU.exe"+55EFFE3: 9C                 -  pushfq
"ACU.exe"+55EFFE4: E9 4C 5E FE FF     -  jmp ACU.exe+55D5E35
"ACU.exe"+55EFFE9: E9 C8 0F 00 00     -  jmp ACU.exe+55F0FB6
"ACU.exe"+55EFFEE: 9C                 -  pushfq
"ACU.exe"+55EFFEF: E9 C1 69 FE FF     -  jmp ACU.exe+55D69B5
"ACU.exe"+55EFFF4: 51                 -  push rcx
}

 

 Видео:

 

Ссылки на материалы используемые в видео:

И сама табличка:

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

 

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

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

Скачал табличку, - игра версии 1.5 с таблеткой от Rld падает спустя некоторое время. Попытки повторялись.

 

 

Ну по-видимому я не все проверки нашёл.

Вот только что почитал - у Вас 15 проверок в игре.

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

К сожалению у меня со временем сейчас плохо, если сможете - доработайте пожалуйста.

Если у меня появиться время, то тоже ещё покопаюсь.

 

Но результат какой-то есть, т.е. частично проверка точно отключена, так как вылет, при активации скрипта опции, происходит не сразу моментально.

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

 

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

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

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

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

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

Приятный такой голос у Гарика,

keng, аж засмущал.:rolleyes:

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

По поводу скрипта - я бы избавился от лишних меток

А где там лишние? Вроде все - при деле.

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

Вот пример:

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

newmem1:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne AlreadyCopy1
  call CopyBlock

AlreadyCopy1:

 

Можно переделать в:

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

newmem1:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:

 

И тогда не нужно объявлять label.

 

CE умеет такую магию JMP @f и JMP @b - forward и back. А метка - просто @@.

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

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

@@:

И тогда не нужно объявлять label.

А понял. Ты про безымянные метки.

Я оставил code и AlreadyCopy специально для читабельности, так как писал не только для себя. А когда пишу для себя, конечно я чаще всего использую именно безымянные метки

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

В 06.10.2016в05:58, Garik66 сказал:

Ну по-видимому я не все проверки нашёл.

Вот только что почитал - у Вас 15 проверок в игре.

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

К сожалению у меня со временем сейчас плохо, если сможете - доработайте пожалуйста.

Если у меня появиться время, то тоже ещё покопаюсь.

 

Но результат какой-то есть, т.е. частично проверка точно отключена, так как вылет, при активации скрипта опции, происходит не сразу моментально.

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

 

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

 

1. Гарик, у Тебя не получилось обойти защиту, игра падает. Что с того, что Ты лишь отодвинул момент краша. Защита в игре не сломлена, цель не достигнута, способ не подтвержден.

 

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

Либо измени название темы, либо сделай в обязательном порядке обход.

 

2. Я нигде не говорил что выложу скрипты. Все что я говорил по этому поводу - " А там, как Бог устроит".

И для чего мне выкладывать, тем я не создавал, видео туториалов не снимал, сказал ли я что "я обошел" - но сказал для ободрением тех кто еще сомневается вообще в возможности обойти. Довольно для меня того что я выложил в теме Влада.

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

В 07.10.2016в08:50, AntonVit сказал:

"Не сложившаяся попытка сделать обход защиты целостности кода для игры...."

Спасибо за "Хорошую" оценку моей работы. :D

 

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

 

А я уже писал, что у меня со временем плохо. Сам принцип написания скрипта, причём более оптимизированного я показал и на урок мне кажется это тянет.

Если будет время (и желание), то покопаюсь в игре ещё.


Да и нашёл откуда я качал игру. Это:

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

Assassin's Creed Unity [v 1.5.0 + DLCs] (2014) PC | RePack от xatab 

Таблетка: Вшита (RELOADED)

» Ничего не вырезано | Ничего не перекодировано 
» Пропатчено до версии 1.5.0 
» Все пути реестра сохранены 
 DLC: 
      - Pre-Order Content 
      - Gold Edition Content 
      - Assassin’s Creed Unity "Dead Kings" (Павшие Короли) 
» Время установки 35-40 минут 
» Repack от xatab

 

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

Извини Гарик, если задел, но обход я считаю у Тебя не окончен, и следовательно говорить о его состоятельности, - неверно. Это чистой воды логика, без какой либо предвзятости.

 

Я выложил видео из игры "The Crew", там вместо 15 проверок, - 28. Разработчик один и тот же, проверка почти та же самая. Думаю этого вполне достаточно, чтобы поверить.

 

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

 

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

9 минут назад, AntonVit сказал:

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

Мне не нужно ( я из видео Xipho понял как это делается), нужно форумчанам.

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

Я выложил видео из игры "The Crew"

Бегло смотрел видео (ещё когда Вы его выложили), но там вроде Вы просто ездите на машине, ни какой активации скрипта не показано. 

 

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

я считаю у Тебя не окончен

Ну, если проверили ( у меня времени на это не было, мой герой, как я и писал стоит в самом начале игры) и есть вылет, то конечно не закончен, не все проверки я нашёл, чтобы найти их мне нужно по полчаса тестить по две инструкции, чтобы сработали все инструкции, а на это нужно время (9 инструкций {которые я нашёл} / 2 бряка {как видно из моего видео, я могу одновременно только два бряка ставить}  * 30 мин {чтобы точно сработали все проверки} итого 2 часа 15 минут). к сожалению жаль тратить на это время. 

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

если задел

Не задели :D Не обиделся.

 

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

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

В 07.10.2016в08:50, AntonVit сказал:

игра падает.

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

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

1455D658F - 32 02  - xor al,[rdx]
1455D741F - 32 02  - xor al,[rdx]
140007F48 - 32 02  - xor al,[rdx]
1455C9EA4 - 48 8B 00  - mov rax,[rax]
1455D12CF - 8B 00  - mov eax,[rax]
1455C9986 - 66 8B 00  - mov ax,[rax]    // Проверка 10
1455EFFCD - 48 8B 00  - mov rax,[rax]

 

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

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

Больше 10 проверок пока не удалось найти, добавил в скрипт 10 проверку и сократил скрипт, с помощью безымянных меток:

Скрипт "Bypass Check"и табличку выложу ниже - обнаружил у себя ошибку в скрипте при просмотре видео. 

 Видео:

 

 

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

Обнаружил у себя ошибку в скрипте (сделал при добавлении 10 проверки) - не восстановил регистр.

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

Вот пока пишу, прошло 5 минут после активации скрипта, пока вылета не было. Потестирую час. 

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

Скрипт "Bypass Check":

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

{ Game   : ACU.exe
  Version: 
  Date   : 2016-09-25
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(check1,ACU.exe,32 02 F9 E9 9C 06 00 00) // should be unique
aobscanmodule(check2,ACU.exe,32 02 F6 C3 9B) // should be unique
aobscanmodule(check3,ACU.exe,32 02 F5 A8 3F) // should be unique
aobscanmodule(check4,ACU.exe,8B 00 E9 0F A6 FF FF) // should be unique
aobscanmodule(check5,ACU.exe,32 02 F8 48 83 C2 01) // should be unique
aobscanmodule(check6,ACU.exe,66 8B 00 E9 4F BD FF FF) // should be unique
aobscanmodule(check7,ACU.exe,48 8B 00 E9 5D 2C FF FF) // should be unique
aobscanmodule(check8,ACU.exe,48 8B 00 E9 38 56 02 00) // should be unique
aobscanmodule(check9,ACU.exe,48 8B 00 E9 70 CA FD FF) // should be unique
aobscanmodule(check10,ACU.exe,66 8B 00 E9 8D 12 1A FD) // should be unique
alloc(newmem1,$4000,"ACU.exe"+55D741F)
alloc(CopyExeFail,125980671)
label(CopyBlock)                      // Блок копирования, чтобы не повторять код.
label(newmem2)
label(newmem3)
label(newmem4)
label(newmem5)
label(newmem6)
label(newmem7)
label(newmem8)
label(newmem9)
label(newmem10)
label(return1)
label(return2)
label(return3)
label(return4)
label(return5)
label(return6)
label(return7)
label(return8)
label(return9)
label(return10)
registersymbol(check1)
registersymbol(check2)
registersymbol(check3)
registersymbol(check4)
registersymbol(check5)
registersymbol(check6)
registersymbol(check7)
registersymbol(check8)
registersymbol(check9)
registersymbol(check10)

newmem1:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rdx,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rdx,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rdx,rsi
  lea rsi,[CopyExeFail]
  add rdx,rsi

@@:
  pop rsi
  xor al,[rdx]
  stc 
  jmp 1455D7AC3
  jmp return1

newmem2:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rdx,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rdx,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rdx,rsi
  lea rsi,[CopyExeFail]
  add rdx,rsi

@@:
  pop rsi
  xor al,[rdx]
  test bl,-65
  jmp return2

newmem3:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rdx,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rdx,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rdx,rsi
  lea rsi,[CopyExeFail]
  add rdx,rsi

@@:
  pop rsi
  xor al,[rdx]
  cmc
  test al,3F
  jmp return3

newmem4:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov eax,[rax]
  jmp 1455CB8E5
  jmp return4

newmem5:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rdx,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rdx,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rdx,rsi
  lea rsi,[CopyExeFail]
  add rdx,rsi

@@:
  pop rsi
  xor al,[rdx]
  clc
  add rdx,01
  jmp return5

newmem6:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov ax,[rax]
  jmp 1455CFDFC
  jmp return6

newmem7:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov rax,[rax]
  jmp 1455CAA8F
  jmp return7

newmem8:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov rax,[rax]
  jmp 1455EF4E4
  jmp return8

newmem9:
  push rsi
  cmp [CopyExeFail],0
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov rax,[rax]
  jmp 1455CCA45
  jmp return9

newmem10:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov ax,[rax]
  jmp 14276AC1B
  jmp return10

CopyBlock:
  push rdi
  push rcx

// Блок копирования ехе файла
  lea rsi,["ACU.exe"]                // Адрес exe файла
  lea rdi,[CopyExeFail]              // Адрес нашей копии ехе файла
  mov rcx,7824FFF                    // Размер ехе файла в hex`е
  repe movsb

// Блок восстановления копии до оригинала ехе файла.
  lea rdi,[CopyExeFail]
  mov rcx,55D741F
  mov [rdi+rcx],E9F90232
  mov [rdi+rcx+4],0000069C
  mov rcx,55D658F
  mov [rdi+rcx],C3F60232
  mov [rdi+rcx+4],D9F8E99B
  mov rcx,7F48
  mov [rdi+rcx],A8F50232
  mov [rdi+rcx+4],C283483F
  mov rcx,55D12CF
  mov [rdi+rcx],0FE9008B
  mov [rdi+rcx+4],0FFFFFA6
  mov rcx,27708D6
  mov [rdi+rcx],48F80232
  mov [rdi+rcx+4],E901C283
  mov rcx,55D40A5
  mov [rdi+rcx],E9008b66
  mov [rdi+rcx+4],FFFFBD4F
  mov rcx,55D7E2A
  mov [rdi+rcx],E9008b48
  mov [rdi+rcx+4],FFFF2C5D
  mov rcx,55C9EA4
  mov [rdi+rcx],E9008B48
  mov [rdi+rcx+4],00025638
  mov rcx,55EFFCD
  mov [rdi+rcx],E9008B48
  mov [rdi+rcx+4],FFFDCA70
  mov rcx,55C9986
  mov [rdi+rcx],E9008B66
  mov [rdi+rcx+4],FD1A128D

  pop rcx
  pop rdi

  ret

CopyExeFail:
  dq (double)0

check1:
  jmp newmem1
  db 90 90 90
return1:

check2:
  jmp newmem2
return2:

check3:
  jmp newmem3
return3:

check4:
  jmp newmem4
  db 90 90
return4:

check5:
  jmp newmem5
  db 90 90
return5:

check6:
  jmp newmem6
  db 90 90 90
return6:

check7:
  jmp newmem7
  db 90 90 90
return7:

check8:
  jmp newmem8
  db 90 90 90
return8:

check9:
  jmp newmem9
  db 90 90 90
return9:

check10:
  jmp newmem10
  db 90 90 90
return10:

[DISABLE]
check1:
  db 32 02 F9 E9 9C 06 00 00
check2:
  db 32 02 F6 C3 9B
check3:
  db 32 02 F5 A8 3F
check4:
  db 8B 00 E9 0F A6 FF FF
check5:
  db 32 02 F8 48 83 C2 01
check6:
  db 66 8B 00 E9 4F BD FF FF
check7:
  db 48 8B 00 E9 5D 2C FF FF
check8:
  db 48 8B 00 E9 38 56 02 00
check9:
  db 48 8B 00 E9 70 CA FD FF
check10:
  db 66 8B 00 E9 8D 12 1A FD


unregistersymbol(check1)
unregistersymbol(check2)
unregistersymbol(check3)
unregistersymbol(check4)
unregistersymbol(check5)
unregistersymbol(check6)
unregistersymbol(check7)
unregistersymbol(check8)
unregistersymbol(check9)
unregistersymbol(check10)
dealloc(CopyExeFail)
dealloc(newmem1)

{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D741F

"ACU.exe"+55D73F0: 48 83 ED 06              -  sub rbp,06
"ACU.exe"+55D73F4: E9 70 9D 01 00           -  jmp ACU.exe+55F1169
"ACU.exe"+55D73F9: E9 7E C9 FF FF           -  jmp ACU.exe+55D3D7C
"ACU.exe"+55D73FE: E9 32 9A FF FF           -  jmp ACU.exe+55D0E35
"ACU.exe"+55D7403: E9 4E 36 19 FD           -  jmp ACU.exe+276AA56
"ACU.exe"+55D7408: E9 00 A2 01 00           -  jmp ACU.exe+55F160D
"ACU.exe"+55D740D: E9 1A 86 01 00           -  jmp ACU.exe+55EFA2C
"ACU.exe"+55D7412: 8F 45 00                 -  pop [rbp+00]
"ACU.exe"+55D7415: E9 9D 09 00 00           -  jmp ACU.exe+55D7DB7
"ACU.exe"+55D741A: E9 50 AA FF FF           -  jmp ACU.exe+55D1E6F
// ---------- INJECTING HERE ----------
"ACU.exe"+55D741F: 32 02                    -  xor al,[rdx]
"ACU.exe"+55D7421: F9                       -  stc 
"ACU.exe"+55D7422: E9 9C 06 00 00           -  jmp ACU.exe+55D7AC3
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D7427: E9 26 59 FF FF           -  jmp ACU.exe+55CCD52
"ACU.exe"+55D742C: 66 89 10                 -  mov [rax],dx
"ACU.exe"+55D742F: E9 D6 E8 FF FF           -  jmp ACU.exe+55D5D0A
"ACU.exe"+55D7434: 55                       -  push rbp
"ACU.exe"+55D7435: E9 B3 0C 25 FD           -  jmp ACU.exe+28280ED
"ACU.exe"+55D743A: D3 C6                    -  rol esi,cl
"ACU.exe"+55D743C: 8B 75 00                 -  mov esi,[rbp+00]
"ACU.exe"+55D743F: E9 A4 BB FF FF           -  jmp ACU.exe+55D2FE8
"ACU.exe"+55D7444: 6B CC CC                 -  imul ecx,esp,-34
"ACU.exe"+55D7447: CC                       -  int 3 
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D658F

"ACU.exe"+55D6575: F8                    -  clc
"ACU.exe"+55D6576: C1 E0 07              -  shl eax,07
"ACU.exe"+55D6579: 3D FD 8E C5 09        -  cmp eax,09C58EFD
"ACU.exe"+55D657E: F5                    -  cmc
"ACU.exe"+55D657F: F8                    -  clc
"ACU.exe"+55D6580: C1 E9 19              -  shr ecx,19
"ACU.exe"+55D6583: F9                    -  stc
"ACU.exe"+55D6584: 09 C8                 -  or eax,ecx
"ACU.exe"+55D6586: 48 85 EA              -  test rdx,rbp
"ACU.exe"+55D6589: 81 FB 87 57 E3 41     -  cmp ebx,41E35787
// ---------- INJECTING HERE ----------
"ACU.exe"+55D658F: 32 02                 -  xor al,[rdx]
"ACU.exe"+55D6591: F6 C3 9B              -  test bl,-65
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D6594: E9 F8 D9 01 00        -  jmp ACU.exe+55F3F91
"ACU.exe"+55D6599: 81 FC 00 FD DF 0B     -  cmp esp,0BDFFD00
"ACU.exe"+55D659F: 66 8B 04 38           -  mov ax,[rax+rdi]
"ACU.exe"+55D65A3: F9                    -  stc
"ACU.exe"+55D65A4: 66 0F A3 D2           -  bt dx,dx
"ACU.exe"+55D65A8: F5                    -  cmc
"ACU.exe"+55D65A9: 48 83 ED 02           -  sub rbp,02
"ACU.exe"+55D65AD: E9 8E 2F FF FF        -  jmp ACU.exe+55C9540
"ACU.exe"+55D65B2: 0F 85 AA 59 FF FF     -  jne ACU.exe+55CBF62
"ACU.exe"+55D65B8: D2 FF                 -  sar bh,cl
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+7F48

"ACU.exe"+7F1C: E9 85 9C 5C 05           -  jmp ACU.exe+55D1BA6
"ACU.exe"+7F21: 66 89 45 08              -  mov [rbp+08],ax
"ACU.exe"+7F25: E9 6A C2 5C 05           -  jmp ACU.exe+55D4194
"ACU.exe"+7F2A: 8F 45 00                 -  pop [rbp+00]
"ACU.exe"+7F2D: E9 F3 AE 5C 05           -  jmp ACU.exe+55D2E25
"ACU.exe"+7F32: 81 FB E0 0F 00 00        -  cmp ebx,00000FE0
"ACU.exe"+7F38: E9 C8 C6 5C 05           -  jmp ACU.exe+55D4605
"ACU.exe"+7F3D: 51                       -  push rcx
"ACU.exe"+7F3E: E9 DD C4 5E 05           -  jmp ACU.exe+55F4420
"ACU.exe"+7F43: 66 0F BA E5 06           -  bt bp,06
// ---------- INJECTING HERE ----------
"ACU.exe"+7F48: 32 02                    -  xor al,[rdx]
"ACU.exe"+7F4A: F5                       -  cmc
"ACU.exe"+7F4B: A8 3F                    -  test al,3F
// ---------- DONE INJECTING  ----------
"ACU.exe"+7F4D: 48 83 C2 01              -  add rdx,01
"ACU.exe"+7F51: 0F 8E F5 1E 5C 05        -  jng ACU.exe+55C9E4C
"ACU.exe"+7F57: FF 4D 00                 -  dec [rbp+00]
"ACU.exe"+7F5A: E9 7D 94 5E 05           -  jmp ACU.exe+55F13DC
"ACU.exe"+7F5F: 66 0F CA                 -  bswap dx
"ACU.exe"+7F62: FE C0                    -  inc al
"ACU.exe"+7F64: 66 0F BA F2 03           -  btr dx,03
"ACU.exe"+7F69: F7 DA                    -  neg edx
"ACU.exe"+7F6B: 48 8D 76 FF              -  lea rsi,[rsi-01]
"ACU.exe"+7F6F: E9 FB 9D 5E 05           -  jmp ACU.exe+55F1D6F
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D12CF

"ACU.exe"+55D12A8: E9 D7 2B 00 00     -  jmp ACU.exe+55D3E84
"ACU.exe"+55D12AD: 9C                 -  pushfq
"ACU.exe"+55D12AE: E9 62 7E FF FF     -  jmp ACU.exe+55C9115
"ACU.exe"+55D12B3: F5                 -  cmc
"ACU.exe"+55D12B4: E9 1A 3C 02 00     -  jmp ACU.exe+55F4ED3
"ACU.exe"+55D12B9: E9 33 B1 FF FF     -  jmp ACU.exe+55CC3F1
"ACU.exe"+55D12BE: E9 8A F2 FF FF     -  jmp ACU.exe+55D054D
"ACU.exe"+55D12C3: E9 7B 90 27 FD     -  jmp ACU.exe+284A343
"ACU.exe"+55D12C8: 41 51              -  push r9
"ACU.exe"+55D12CA: E9 03 C3 FF FF     -  jmp ACU.exe+55CD5D2
// ---------- INJECTING HERE ----------
"ACU.exe"+55D12CF: 8B 00              -  mov eax,[rax]
"ACU.exe"+55D12D1: E9 0F A6 FF FF     -  jmp ACU.exe+55CB8E5
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D12D6: 0F 89 80 00 00 00  -  jns ACU.exe+55D135C
"ACU.exe"+55D12DC: 41 53              -  push r11
"ACU.exe"+55D12DE: E9 72 6C 00 00     -  jmp ACU.exe+55D7F55
"ACU.exe"+55D12E3: F9                 -  stc
"ACU.exe"+55D12E4: 31 C0              -  xor eax,eax
"ACU.exe"+55D12E6: F8                 -  clc
"ACU.exe"+55D12E7: 48 87 44 CD 00     -  xchg [rbp+rcx*8+00],rax
"ACU.exe"+55D12EC: F9                 -  stc
"ACU.exe"+55D12ED: 83 F9 04           -  cmp ecx,04
"ACU.exe"+55D12F0: E9 EF F2 FF FF     -  jmp ACU.exe+55D05E4
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+27708D6

"ACU.exe"+27708B1: 41 57                 -  push r15
"ACU.exe"+27708B3: E9 3E EA E5 02        -  jmp ACU.exe+55CF2F6
"ACU.exe"+27708B8: 66 89 45 00           -  mov [rbp+00],ax
"ACU.exe"+27708BC: E9 64 25 E6 02        -  jmp ACU.exe+55D2E25
"ACU.exe"+27708C1: E9 2B 75 89 FD        -  jmp ACU.exe+7DF1
"ACU.exe"+27708C6: 09 C8                 -  or eax,ecx
"ACU.exe"+27708C8: 66 0F BA E0 0F        -  bt ax,0F
"ACU.exe"+27708CD: F5                    -  cmc
"ACU.exe"+27708CE: 48 3D 8D 98 31 1A     -  cmp eax,1A31988D
"ACU.exe"+27708D4: 84 FF                 -  test bh,bh
// ---------- INJECTING HERE ----------
"ACU.exe"+27708D6: 32 02                 -  xor al,[rdx]
"ACU.exe"+27708D8: F8                    -  clc
"ACU.exe"+27708D9: 48 83 C2 01           -  add rdx,01
// ---------- DONE INJECTING  ----------
"ACU.exe"+27708DD: E9 9C B7 E5 02        -  jmp ACU.exe+55CC07E
"ACU.exe"+27708E2: 48 89 45 00           -  mov [rbp+00],rax
"ACU.exe"+27708E6: E9 FE 63 E6 02        -  jmp ACU.exe+55D6CE9
"ACU.exe"+27708EB: E9 95 A0 E5 02        -  jmp ACU.exe+55CA985
"ACU.exe"+27708F0: 48 89 C1              -  mov rcx,rax
"ACU.exe"+27708F3: E9 98 B1 E5 02        -  jmp ACU.exe+55CBA90
"ACU.exe"+27708F8: E9 41 D8 E5 02        -  jmp ACU.exe+55CE13E
"ACU.exe"+27708FD: 41 52                 -  push r10
"ACU.exe"+27708FF: E9 C9 11 E8 02        -  jmp ACU.exe+55F1ACD
"ACU.exe"+2770904: 0F A3 E5              -  bt ebp,esp
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D40A5

"ACU.exe"+55D4084: B1 F6                    -  mov cl,-0A
"ACU.exe"+55D4086: 0F BE C9                 -  movsx ecx,cl
"ACU.exe"+55D4089: 66 B9 C3 9F              -  mov cx,9FC3
"ACU.exe"+55D408D: 59                       -  pop rcx
"ACU.exe"+55D408E: C3                       -  ret
"ACU.exe"+55D408F: E9 B8 E8 FF FF           -  jmp ACU.exe+55D294C
"ACU.exe"+55D4094: 41 50                    -  push r8
"ACU.exe"+55D4096: E9 AB FA 01 00           -  jmp ACU.exe+55F3B46
"ACU.exe"+55D409B: E9 25 32 18 FD           -  jmp ACU.exe+27572C5
"ACU.exe"+55D40A0: E9 4A 59 FF FF           -  jmp ACU.exe+55C99EF
// ---------- INJECTING HERE ----------
"ACU.exe"+55D40A5: 66 8B 00                 -  mov ax,[rax]
"ACU.exe"+55D40A8: E9 4F BD FF FF           -  jmp ACU.exe+55CFDFC
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D40AD: 0F BA E0 18              -  bt eax,18
"ACU.exe"+55D40B1: 48 0F C8                 -  bswap rax
"ACU.exe"+55D40B4: 38 E5                    -  cmp ch,ah
"ACU.exe"+55D40B6: 38 E6                    -  cmp dh,ah
"ACU.exe"+55D40B8: E9 AC 5C FF FF           -  jmp ACU.exe+55C9D69
"ACU.exe"+55D40BD: 66 0F AD D2              -  shrd dx,dx,cl
"ACU.exe"+55D40C1: 20 C8                    -  and al,cl
"ACU.exe"+55D40C3: F7 D8                    -  neg eax
"ACU.exe"+55D40C5: 48 8B 45 00              -  mov rax,[rbp+00]
"ACU.exe"+55D40C9: 66 FF CA                 -  dec dx
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D7E2A

"ACU.exe"+55D7E08: 3C D5                 -  cmp al,-2B
"ACU.exe"+55D7E0A: 0F A5 F2              -  shld edx,esi,cl
"ACU.exe"+55D7E0D: 00 C3                 -  add bl,al
"ACU.exe"+55D7E0F: 66 F7 D2              -  not dx
"ACU.exe"+55D7E12: 48 8B 14 38           -  mov rdx,[rax+rdi]
"ACU.exe"+55D7E16: E9 E0 28 FF FF        -  jmp ACU.exe+55CA6FB
"ACU.exe"+55D7E1B: 48 89 55 00           -  mov [rbp+00],rdx
"ACU.exe"+55D7E1F: E9 D3 17 FF FF        -  jmp ACU.exe+55C95F7
"ACU.exe"+55D7E24: 57                    -  push rdi
"ACU.exe"+55D7E25: E9 6C CA FF FF        -  jmp ACU.exe+55D4896
// ---------- INJECTING HERE ----------
"ACU.exe"+55D7E2A: 48 8B 00              -  mov rax,[rax]
"ACU.exe"+55D7E2D: E9 5D 2C FF FF        -  jmp ACU.exe+55CAA8F
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D7E32: 56                    -  push rsi
"ACU.exe"+55D7E33: E9 E1 84 FF FF        -  jmp ACU.exe+55D0319
"ACU.exe"+55D7E38: E9 28 98 FF FF        -  jmp ACU.exe+55D1665
"ACU.exe"+55D7E3D: E9 9D B5 01 00        -  jmp ACU.exe+55F33DF
"ACU.exe"+55D7E42: 0F 85 CC C7 FF FF     -  jne ACU.exe+55D4614
"ACU.exe"+55D7E48: 66 C1 EB 06           -  shr bx,06
"ACU.exe"+55D7E4C: 89 C3                 -  mov ebx,eax
"ACU.exe"+55D7E4E: 66 0F A3 E9           -  bt cx,bp
"ACU.exe"+55D7E52: F9                    -  stc
"ACU.exe"+55D7E53: E9 98 60 FF FF        -  jmp ACU.exe+55CDEF0
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55C9EA4

"ACU.exe"+55C9E84: F6 C7 BE                 -  test bh,-42
"ACU.exe"+55C9E87: F9                       -  stc
"ACU.exe"+55C9E88: 66 F7 C3 50 9C           -  test bx,9C50
"ACU.exe"+55C9E8D: D3 E0                    -  shl eax,cl
"ACU.exe"+55C9E8F: E9 C7 77 00 00           -  jmp ACU.exe+55D165B
"ACU.exe"+55C9E94: 48 83 ED 08              -  sub rbp,08
"ACU.exe"+55C9E98: E9 D1 E1 2C FD           -  jmp ACU.exe+289806E
"ACU.exe"+55C9E9D: FD                       -  std
"ACU.exe"+55C9E9E: FC                       -  cld
"ACU.exe"+55C9E9F: E9 87 6D 00 00           -  jmp ACU.exe+55D0C2B
// ---------- INJECTING HERE ----------
"ACU.exe"+55C9EA4: 48 8B 00                 -  mov rax,[rax]
"ACU.exe"+55C9EA7: E9 38 56 02 00           -  jmp ACU.exe+55EF4E4
// ---------- DONE INJECTING  ----------
"ACU.exe"+55C9EAC: 48 FF CE                 -  dec rsi
"ACU.exe"+55C9EAF: F9                       -  stc
"ACU.exe"+55C9EB0: F8                       -  clc
"ACU.exe"+55C9EB1: F5                       -  cmc
"ACU.exe"+55C9EB2: 28 C3                    -  sub bl,al
"ACU.exe"+55C9EB4: F9                       -  stc
"ACU.exe"+55C9EB5: F9                       -  stc
"ACU.exe"+55C9EB6: 66 98                    -  cbw
"ACU.exe"+55C9EB8: F8                       -  clc
"ACU.exe"+55C9EB9: 66 81 FE 0E 96           -  cmp si,960E
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55EFFCD

"ACU.exe"+55EFFB4: F8                 -  clc
"ACU.exe"+55EFFB5: D2 E9              -  shr cl,cl
"ACU.exe"+55EFFB7: 89 C1              -  mov ecx,eax
"ACU.exe"+55EFFB9: F5                 -  cmc
"ACU.exe"+55EFFBA: F5                 -  cmc
"ACU.exe"+55EFFBB: E9 6D 01 2E FD     -  jmp ACU.exe+28D012D
"ACU.exe"+55EFFC0: 9C                 -  pushfq
"ACU.exe"+55EFFC1: E9 DA 3A FE FF     -  jmp ACU.exe+55D3AA0
"ACU.exe"+55EFFC6: 41 54              -  push r12
"ACU.exe"+55EFFC8: E9 89 A8 17 FD     -  jmp ACU.exe+276A856
// ---------- INJECTING HERE ----------
"ACU.exe"+55EFFCD: 48 8B 00           -  mov rax,[rax]
"ACU.exe"+55EFFD0: E9 70 CA FD FF     -  jmp ACU.exe+55CCA45
// ---------- DONE INJECTING  ----------
"ACU.exe"+55EFFD5: 66 35 4D B8        -  xor ax,B84D
"ACU.exe"+55EFFD9: F9                 -  stc
"ACU.exe"+55EFFDA: 66 C1 C0 08        -  rol ax,08
"ACU.exe"+55EFFDE: E9 F6 86 FE FF     -  jmp ACU.exe+55D86D9
"ACU.exe"+55EFFE3: 9C                 -  pushfq
"ACU.exe"+55EFFE4: E9 4C 5E FE FF     -  jmp ACU.exe+55D5E35
"ACU.exe"+55EFFE9: E9 C8 0F 00 00     -  jmp ACU.exe+55F0FB6
"ACU.exe"+55EFFEE: 9C                 -  pushfq
"ACU.exe"+55EFFEF: E9 C1 69 FE FF     -  jmp ACU.exe+55D69B5
"ACU.exe"+55EFFF4: 51                 -  push rcx
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55C9986

"ACU.exe"+55C9969: 48 83 ED 06                    -  sub rbp,06
"ACU.exe"+55C996D: F5                             -  cmc
"ACU.exe"+55C996E: F8                             -  clc
"ACU.exe"+55C996F: F9                             -  stc
"ACU.exe"+55C9970: D2 E8                          -  shr al,cl
"ACU.exe"+55C9972: E9 94 8B 00 00                 -  jmp ACU.exe+55D250B
"ACU.exe"+55C9977: 8F 45 00                       -  pop [rbp+00]
"ACU.exe"+55C997A: E9 6A D3 00 00                 -  jmp ACU.exe+55D6CE9
"ACU.exe"+55C997F: 41 52                          -  push r10
"ACU.exe"+55C9981: E9 63 4B 00 00                 -  jmp ACU.exe+55CE4E9
// ---------- INJECTING HERE ----------
"ACU.exe"+55C9986: 66 8B 00                       -  mov ax,[rax]
"ACU.exe"+55C9989: E9 8D 12 1A FD                 -  jmp ACU.exe+276AC1B
// ---------- DONE INJECTING  ----------
"ACU.exe"+55C998E: E9 0D 31 00 00                 -  jmp ACU.exe+55CCAA0
"ACU.exe"+55C9993: 89 CF                          -  mov edi,ecx
"ACU.exe"+55C9995: 5F                             -  pop rdi
"ACU.exe"+55C9996: C3                             -  ret
"ACU.exe"+55C9997: CC                             -  int 3
"ACU.exe"+55C9998: CC                             -  int 3
"ACU.exe"+55C9999: CC                             -  int 3
"ACU.exe"+55C999A: CC                             -  int 3
"ACU.exe"+55C999B: CC                             -  int 3
"ACU.exe"+55C999C: CC                             -  int 3
}

 

Видео:

 

 

 

 

Табличка:

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

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

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

у меня тоже падает Assassins Unity

Ага ;) :D

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

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

Гарик, я заметил что Ты для перехода в newmem копируешь и вставляешь адрес "xxxxxxx".

 

 jmp xxxxxx
 nop
 nop

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

Вообще на прыжках, при нажатии на пробел, СЕ перенаправляет в место прыжка.

 

 

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

Не трать более времени на поиски этих инструкций, его (времени) и без этого очень мало.

 

 

Что до моей версии обхода, - я его "пофиксил", и теперь игра не вылетает.

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

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

1 минуту назад, AntonVit сказал:

Не трать более времени на поиски этих инструкций, его (времени) и без этого очень мало.

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

Заранее Большое спасибо!!! 

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

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

Нет желания выкладывать адреса.

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

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

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

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

Нашёл время, нашёл способ как ускорить срабатывание инструкций проверок, нашёл ещё 4 проверки, дописал скрипт, тестил его в течении 1 часа - всё работает, записал видео. В сумме у меня получилось 14 проверок и 620 строк кода.

 

Итого окончательный скрипт "Bypass Check" :

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

{ Game   : ACU.exe
  Version: 
  Date   : 2016-09-25
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(check1,ACU.exe,32 02 F9 E9 9C 06 00 00) // should be unique
aobscanmodule(check2,ACU.exe,32 02 F6 C3 9B) // should be unique
aobscanmodule(check3,ACU.exe,32 02 F5 A8 3F) // should be unique
aobscanmodule(check4,ACU.exe,8B 00 E9 0F A6 FF FF) // should be unique
aobscanmodule(check5,ACU.exe,32 02 F8 48 83 C2 01) // should be unique
aobscanmodule(check6,ACU.exe,66 8B 00 E9 4F BD FF FF) // should be unique
aobscanmodule(check7,ACU.exe,48 8B 00 E9 5D 2C FF FF) // should be unique
aobscanmodule(check8,ACU.exe,48 8B 00 E9 38 56 02 00) // should be unique
aobscanmodule(check9,ACU.exe,48 8B 00 E9 70 CA FD FF) // should be unique
aobscanmodule(check10,ACU.exe,66 8B 00 E9 8D 12 1A FD) // should be unique
aobscanmodule(check11,ACU.exe,8B 00 E9 69 2B 00 00) // should be unique
aobscanmodule(check12,ACU.exe,48 8B 00 E9 FB 90 00 00) // should be unique
aobscanmodule(check13,ACU.exe,32 02 F5 F8 84 EF) // should be unique
aobscanmodule(check14,ACU.exe,48 8B 00 E9 0B 68 A3 FA) // should be unique
alloc(newmem1,$4000,"ACU.exe"+55D741F)
alloc(CopyExeFail,125980671)
label(CopyBlock)                      // Блок копирования, чтобы не повторять код.
label(newmem2)
label(newmem3)
label(newmem4)
label(newmem5)
label(newmem6)
label(newmem7)
label(newmem8)
label(newmem9)
label(newmem10)
label(newmem11)
label(newmem12)
label(newmem13)
label(newmem14)
label(return1)
label(return2)
label(return3)
label(return4)
label(return5)
label(return6)
label(return7)
label(return8)
label(return9)
label(return10)
label(return11)
label(return12)
label(return13)
label(return14)
registersymbol(check1)
registersymbol(check2)
registersymbol(check3)
registersymbol(check4)
registersymbol(check5)
registersymbol(check6)
registersymbol(check7)
registersymbol(check8)
registersymbol(check9)
registersymbol(check10)
registersymbol(check11)
registersymbol(check12)
registersymbol(check13)
registersymbol(check14)

newmem1:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rdx,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rdx,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rdx,rsi
  lea rsi,[CopyExeFail]
  add rdx,rsi

@@:
  pop rsi
  xor al,[rdx]
  stc 
  jmp 1455D7AC3
  jmp return1

newmem2:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rdx,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rdx,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rdx,rsi
  lea rsi,[CopyExeFail]
  add rdx,rsi

@@:
  pop rsi
  xor al,[rdx]
  test bl,-65
  jmp return2

newmem3:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rdx,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rdx,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rdx,rsi
  lea rsi,[CopyExeFail]
  add rdx,rsi

@@:
  pop rsi
  xor al,[rdx]
  cmc
  test al,3F
  jmp return3

newmem4:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov eax,[rax]
  jmp 1455CB8E5
  jmp return4

newmem5:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rdx,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rdx,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rdx,rsi
  lea rsi,[CopyExeFail]
  add rdx,rsi

@@:
  pop rsi
  xor al,[rdx]
  clc
  add rdx,01
  jmp return5

newmem6:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov ax,[rax]
  jmp 1455CFDFC
  jmp return6

newmem7:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov rax,[rax]
  jmp 1455CAA8F
  jmp return7

newmem8:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov rax,[rax]
  jmp 1455EF4E4
  jmp return8

newmem9:
  push rsi
  cmp [CopyExeFail],0
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov rax,[rax]
  jmp 1455CCA45
  jmp return9

newmem10:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov ax,[rax]
  jmp 14276AC1B
  jmp return10

newmem11:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov eax,[rax]
  jmp ACU.exe+55CE036
  jmp return11

newmem12:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov rax,[rax]
  jmp ACU.exe+55D7537
  jmp return12

newmem13:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rdx,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rdx,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rdx,rsi
  lea rsi,[CopyExeFail]
  add rdx,rsi

@@:
  pop rsi
  xor al,[rdx]
  cmc
  clc
  test bh,ch
  jmp return13

newmem14:
  push rsi
  cmp [CopyExeFail],0                 // Проверяем, есть ли уже копия
  jne @f
  call CopyBlock

@@:
// Блок проверки -находится ли наш адрес внутри скопированного блока памяти
  lea rsi,["ACU.exe"]
  cmp rax,rsi
  jb @f
  lea rsi,["ACU.exe"+7824FFF]
  cmp rax,rsi
  ja @f

// Блок подмены адреса игры для инструкции проверки на адрес копии exe файла.
  lea rsi,["ACU.exe"]
  sub rax,rsi
  lea rsi,[CopyExeFail]
  add rax,rsi

@@:
  pop rsi
  mov rax,[rax]
  jmp ACU.WriteData+2239
  jmp return14

CopyBlock:
  push rdi
  push rcx

// Блок копирования ехе файла
  lea rsi,["ACU.exe"]                // Адрес exe файла
  lea rdi,[CopyExeFail]              // Адрес нашей копии ехе файла
  mov rcx,7824FFF                    // Размер ехе файла в hex`е
  repe movsb

// Блок восстановления копии до оригинала ехе файла.
  lea rdi,[CopyExeFail]
  mov rcx,55D741F
  mov [rdi+rcx],E9F90232
  mov [rdi+rcx+4],0000069C
  mov rcx,55D658F
  mov [rdi+rcx],C3F60232
  mov [rdi+rcx+4],D9F8E99B
  mov rcx,7F48
  mov [rdi+rcx],A8F50232
  mov [rdi+rcx+4],C283483F
  mov rcx,55D12CF
  mov [rdi+rcx],0FE9008B
  mov [rdi+rcx+4],0FFFFFA6
  mov rcx,27708D6
  mov [rdi+rcx],48F80232
  mov [rdi+rcx+4],E901C283
  mov rcx,55D40A5
  mov [rdi+rcx],E9008b66
  mov [rdi+rcx+4],FFFFBD4F
  mov rcx,55D7E2A
  mov [rdi+rcx],E9008b48
  mov [rdi+rcx+4],FFFF2C5D
  mov rcx,55C9EA4
  mov [rdi+rcx],E9008B48
  mov [rdi+rcx+4],00025638
  mov rcx,55EFFCD
  mov [rdi+rcx],E9008B48
  mov [rdi+rcx+4],FFFDCA70
  mov rcx,55C9986
  mov [rdi+rcx],E9008B66
  mov [rdi+rcx+4],FD1A128D
  mov rcx,55CB4C6
  mov [rdi+rcx],69E9008B
  mov [rdi+rcx+4],4100002B
  mov rcx,55CE434
  mov [rdi+rcx],E9008B48
  mov [rdi+rcx+4],000090FB
  mov rcx,55D81AE
  mov [rdi+rcx],F8F50232
  mov [rdi+rcx+4],8348EF84
  mov rcx,55D16A6
  mov [rdi+rcx],E9008B48
  mov [rdi+rcx+4],FAA3680B

  pop rcx
  pop rdi

  ret

CopyExeFail:
  dq (double)0

check1:
  jmp newmem1
  db 90 90 90
return1:

check2:
  jmp newmem2
return2:

check3:
  jmp newmem3
return3:

check4:
  jmp newmem4
  db 90 90
return4:

check5:
  jmp newmem5
  db 90 90
return5:

check6:
  jmp newmem6
  db 90 90 90
return6:

check7:
  jmp newmem7
  db 90 90 90
return7:

check8:
  jmp newmem8
  db 90 90 90
return8:

check9:
  jmp newmem9
  db 90 90 90
return9:

check10:
  jmp newmem10
  db 90 90 90
return10:

check11:
  jmp newmem11
  db 90 90
return11:

check12:
  jmp newmem12
  db 90 90 90
return12:

check13:
  jmp newmem13
  db 90
return13:

check14:
  jmp newmem14
  db 90 90 90
return14:

[DISABLE]
check1:
  db 32 02 F9 E9 9C 06 00 00
check2:
  db 32 02 F6 C3 9B
check3:
  db 32 02 F5 A8 3F
check4:
  db 8B 00 E9 0F A6 FF FF
check5:
  db 32 02 F8 48 83 C2 01
check6:
  db 66 8B 00 E9 4F BD FF FF
check7:
  db 48 8B 00 E9 5D 2C FF FF
check8:
  db 48 8B 00 E9 38 56 02 00
check9:
  db 48 8B 00 E9 70 CA FD FF
check10:
  db 66 8B 00 E9 8D 12 1A FD
check11:
  db 8B 00 E9 69 2B 00 00
check12:
  db 48 8B 00 E9 FB 90 00 00
check13:
  db 32 02 F5 F8 84 EF
check14:
  db 48 8B 00 E9 0B 68 A3 FA

unregistersymbol(check1)
unregistersymbol(check2)
unregistersymbol(check3)
unregistersymbol(check4)
unregistersymbol(check5)
unregistersymbol(check6)
unregistersymbol(check7)
unregistersymbol(check8)
unregistersymbol(check9)
unregistersymbol(check10)
unregistersymbol(check11)
unregistersymbol(check12)
unregistersymbol(check13)
unregistersymbol(check14)
dealloc(CopyExeFail)
dealloc(newmem1)

{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D741F

"ACU.exe"+55D73F0: 48 83 ED 06              -  sub rbp,06
"ACU.exe"+55D73F4: E9 70 9D 01 00           -  jmp ACU.exe+55F1169
"ACU.exe"+55D73F9: E9 7E C9 FF FF           -  jmp ACU.exe+55D3D7C
"ACU.exe"+55D73FE: E9 32 9A FF FF           -  jmp ACU.exe+55D0E35
"ACU.exe"+55D7403: E9 4E 36 19 FD           -  jmp ACU.exe+276AA56
"ACU.exe"+55D7408: E9 00 A2 01 00           -  jmp ACU.exe+55F160D
"ACU.exe"+55D740D: E9 1A 86 01 00           -  jmp ACU.exe+55EFA2C
"ACU.exe"+55D7412: 8F 45 00                 -  pop [rbp+00]
"ACU.exe"+55D7415: E9 9D 09 00 00           -  jmp ACU.exe+55D7DB7
"ACU.exe"+55D741A: E9 50 AA FF FF           -  jmp ACU.exe+55D1E6F
// ---------- INJECTING HERE ----------
"ACU.exe"+55D741F: 32 02                    -  xor al,[rdx]
"ACU.exe"+55D7421: F9                       -  stc 
"ACU.exe"+55D7422: E9 9C 06 00 00           -  jmp ACU.exe+55D7AC3
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D7427: E9 26 59 FF FF           -  jmp ACU.exe+55CCD52
"ACU.exe"+55D742C: 66 89 10                 -  mov [rax],dx
"ACU.exe"+55D742F: E9 D6 E8 FF FF           -  jmp ACU.exe+55D5D0A
"ACU.exe"+55D7434: 55                       -  push rbp
"ACU.exe"+55D7435: E9 B3 0C 25 FD           -  jmp ACU.exe+28280ED
"ACU.exe"+55D743A: D3 C6                    -  rol esi,cl
"ACU.exe"+55D743C: 8B 75 00                 -  mov esi,[rbp+00]
"ACU.exe"+55D743F: E9 A4 BB FF FF           -  jmp ACU.exe+55D2FE8
"ACU.exe"+55D7444: 6B CC CC                 -  imul ecx,esp,-34
"ACU.exe"+55D7447: CC                       -  int 3 
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D658F

"ACU.exe"+55D6575: F8                    -  clc
"ACU.exe"+55D6576: C1 E0 07              -  shl eax,07
"ACU.exe"+55D6579: 3D FD 8E C5 09        -  cmp eax,09C58EFD
"ACU.exe"+55D657E: F5                    -  cmc
"ACU.exe"+55D657F: F8                    -  clc
"ACU.exe"+55D6580: C1 E9 19              -  shr ecx,19
"ACU.exe"+55D6583: F9                    -  stc
"ACU.exe"+55D6584: 09 C8                 -  or eax,ecx
"ACU.exe"+55D6586: 48 85 EA              -  test rdx,rbp
"ACU.exe"+55D6589: 81 FB 87 57 E3 41     -  cmp ebx,41E35787
// ---------- INJECTING HERE ----------
"ACU.exe"+55D658F: 32 02                 -  xor al,[rdx]
"ACU.exe"+55D6591: F6 C3 9B              -  test bl,-65
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D6594: E9 F8 D9 01 00        -  jmp ACU.exe+55F3F91
"ACU.exe"+55D6599: 81 FC 00 FD DF 0B     -  cmp esp,0BDFFD00
"ACU.exe"+55D659F: 66 8B 04 38           -  mov ax,[rax+rdi]
"ACU.exe"+55D65A3: F9                    -  stc
"ACU.exe"+55D65A4: 66 0F A3 D2           -  bt dx,dx
"ACU.exe"+55D65A8: F5                    -  cmc
"ACU.exe"+55D65A9: 48 83 ED 02           -  sub rbp,02
"ACU.exe"+55D65AD: E9 8E 2F FF FF        -  jmp ACU.exe+55C9540
"ACU.exe"+55D65B2: 0F 85 AA 59 FF FF     -  jne ACU.exe+55CBF62
"ACU.exe"+55D65B8: D2 FF                 -  sar bh,cl
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+7F48

"ACU.exe"+7F1C: E9 85 9C 5C 05           -  jmp ACU.exe+55D1BA6
"ACU.exe"+7F21: 66 89 45 08              -  mov [rbp+08],ax
"ACU.exe"+7F25: E9 6A C2 5C 05           -  jmp ACU.exe+55D4194
"ACU.exe"+7F2A: 8F 45 00                 -  pop [rbp+00]
"ACU.exe"+7F2D: E9 F3 AE 5C 05           -  jmp ACU.exe+55D2E25
"ACU.exe"+7F32: 81 FB E0 0F 00 00        -  cmp ebx,00000FE0
"ACU.exe"+7F38: E9 C8 C6 5C 05           -  jmp ACU.exe+55D4605
"ACU.exe"+7F3D: 51                       -  push rcx
"ACU.exe"+7F3E: E9 DD C4 5E 05           -  jmp ACU.exe+55F4420
"ACU.exe"+7F43: 66 0F BA E5 06           -  bt bp,06
// ---------- INJECTING HERE ----------
"ACU.exe"+7F48: 32 02                    -  xor al,[rdx]
"ACU.exe"+7F4A: F5                       -  cmc
"ACU.exe"+7F4B: A8 3F                    -  test al,3F
// ---------- DONE INJECTING  ----------
"ACU.exe"+7F4D: 48 83 C2 01              -  add rdx,01
"ACU.exe"+7F51: 0F 8E F5 1E 5C 05        -  jng ACU.exe+55C9E4C
"ACU.exe"+7F57: FF 4D 00                 -  dec [rbp+00]
"ACU.exe"+7F5A: E9 7D 94 5E 05           -  jmp ACU.exe+55F13DC
"ACU.exe"+7F5F: 66 0F CA                 -  bswap dx
"ACU.exe"+7F62: FE C0                    -  inc al
"ACU.exe"+7F64: 66 0F BA F2 03           -  btr dx,03
"ACU.exe"+7F69: F7 DA                    -  neg edx
"ACU.exe"+7F6B: 48 8D 76 FF              -  lea rsi,[rsi-01]
"ACU.exe"+7F6F: E9 FB 9D 5E 05           -  jmp ACU.exe+55F1D6F
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D12CF

"ACU.exe"+55D12A8: E9 D7 2B 00 00     -  jmp ACU.exe+55D3E84
"ACU.exe"+55D12AD: 9C                 -  pushfq
"ACU.exe"+55D12AE: E9 62 7E FF FF     -  jmp ACU.exe+55C9115
"ACU.exe"+55D12B3: F5                 -  cmc
"ACU.exe"+55D12B4: E9 1A 3C 02 00     -  jmp ACU.exe+55F4ED3
"ACU.exe"+55D12B9: E9 33 B1 FF FF     -  jmp ACU.exe+55CC3F1
"ACU.exe"+55D12BE: E9 8A F2 FF FF     -  jmp ACU.exe+55D054D
"ACU.exe"+55D12C3: E9 7B 90 27 FD     -  jmp ACU.exe+284A343
"ACU.exe"+55D12C8: 41 51              -  push r9
"ACU.exe"+55D12CA: E9 03 C3 FF FF     -  jmp ACU.exe+55CD5D2
// ---------- INJECTING HERE ----------
"ACU.exe"+55D12CF: 8B 00              -  mov eax,[rax]
"ACU.exe"+55D12D1: E9 0F A6 FF FF     -  jmp ACU.exe+55CB8E5
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D12D6: 0F 89 80 00 00 00  -  jns ACU.exe+55D135C
"ACU.exe"+55D12DC: 41 53              -  push r11
"ACU.exe"+55D12DE: E9 72 6C 00 00     -  jmp ACU.exe+55D7F55
"ACU.exe"+55D12E3: F9                 -  stc
"ACU.exe"+55D12E4: 31 C0              -  xor eax,eax
"ACU.exe"+55D12E6: F8                 -  clc
"ACU.exe"+55D12E7: 48 87 44 CD 00     -  xchg [rbp+rcx*8+00],rax
"ACU.exe"+55D12EC: F9                 -  stc
"ACU.exe"+55D12ED: 83 F9 04           -  cmp ecx,04
"ACU.exe"+55D12F0: E9 EF F2 FF FF     -  jmp ACU.exe+55D05E4
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+27708D6

"ACU.exe"+27708B1: 41 57                 -  push r15
"ACU.exe"+27708B3: E9 3E EA E5 02        -  jmp ACU.exe+55CF2F6
"ACU.exe"+27708B8: 66 89 45 00           -  mov [rbp+00],ax
"ACU.exe"+27708BC: E9 64 25 E6 02        -  jmp ACU.exe+55D2E25
"ACU.exe"+27708C1: E9 2B 75 89 FD        -  jmp ACU.exe+7DF1
"ACU.exe"+27708C6: 09 C8                 -  or eax,ecx
"ACU.exe"+27708C8: 66 0F BA E0 0F        -  bt ax,0F
"ACU.exe"+27708CD: F5                    -  cmc
"ACU.exe"+27708CE: 48 3D 8D 98 31 1A     -  cmp eax,1A31988D
"ACU.exe"+27708D4: 84 FF                 -  test bh,bh
// ---------- INJECTING HERE ----------
"ACU.exe"+27708D6: 32 02                 -  xor al,[rdx]
"ACU.exe"+27708D8: F8                    -  clc
"ACU.exe"+27708D9: 48 83 C2 01           -  add rdx,01
// ---------- DONE INJECTING  ----------
"ACU.exe"+27708DD: E9 9C B7 E5 02        -  jmp ACU.exe+55CC07E
"ACU.exe"+27708E2: 48 89 45 00           -  mov [rbp+00],rax
"ACU.exe"+27708E6: E9 FE 63 E6 02        -  jmp ACU.exe+55D6CE9
"ACU.exe"+27708EB: E9 95 A0 E5 02        -  jmp ACU.exe+55CA985
"ACU.exe"+27708F0: 48 89 C1              -  mov rcx,rax
"ACU.exe"+27708F3: E9 98 B1 E5 02        -  jmp ACU.exe+55CBA90
"ACU.exe"+27708F8: E9 41 D8 E5 02        -  jmp ACU.exe+55CE13E
"ACU.exe"+27708FD: 41 52                 -  push r10
"ACU.exe"+27708FF: E9 C9 11 E8 02        -  jmp ACU.exe+55F1ACD
"ACU.exe"+2770904: 0F A3 E5              -  bt ebp,esp
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D40A5

"ACU.exe"+55D4084: B1 F6                    -  mov cl,-0A
"ACU.exe"+55D4086: 0F BE C9                 -  movsx ecx,cl
"ACU.exe"+55D4089: 66 B9 C3 9F              -  mov cx,9FC3
"ACU.exe"+55D408D: 59                       -  pop rcx
"ACU.exe"+55D408E: C3                       -  ret
"ACU.exe"+55D408F: E9 B8 E8 FF FF           -  jmp ACU.exe+55D294C
"ACU.exe"+55D4094: 41 50                    -  push r8
"ACU.exe"+55D4096: E9 AB FA 01 00           -  jmp ACU.exe+55F3B46
"ACU.exe"+55D409B: E9 25 32 18 FD           -  jmp ACU.exe+27572C5
"ACU.exe"+55D40A0: E9 4A 59 FF FF           -  jmp ACU.exe+55C99EF
// ---------- INJECTING HERE ----------
"ACU.exe"+55D40A5: 66 8B 00                 -  mov ax,[rax]
"ACU.exe"+55D40A8: E9 4F BD FF FF           -  jmp ACU.exe+55CFDFC
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D40AD: 0F BA E0 18              -  bt eax,18
"ACU.exe"+55D40B1: 48 0F C8                 -  bswap rax
"ACU.exe"+55D40B4: 38 E5                    -  cmp ch,ah
"ACU.exe"+55D40B6: 38 E6                    -  cmp dh,ah
"ACU.exe"+55D40B8: E9 AC 5C FF FF           -  jmp ACU.exe+55C9D69
"ACU.exe"+55D40BD: 66 0F AD D2              -  shrd dx,dx,cl
"ACU.exe"+55D40C1: 20 C8                    -  and al,cl
"ACU.exe"+55D40C3: F7 D8                    -  neg eax
"ACU.exe"+55D40C5: 48 8B 45 00              -  mov rax,[rbp+00]
"ACU.exe"+55D40C9: 66 FF CA                 -  dec dx
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D7E2A

"ACU.exe"+55D7E08: 3C D5                 -  cmp al,-2B
"ACU.exe"+55D7E0A: 0F A5 F2              -  shld edx,esi,cl
"ACU.exe"+55D7E0D: 00 C3                 -  add bl,al
"ACU.exe"+55D7E0F: 66 F7 D2              -  not dx
"ACU.exe"+55D7E12: 48 8B 14 38           -  mov rdx,[rax+rdi]
"ACU.exe"+55D7E16: E9 E0 28 FF FF        -  jmp ACU.exe+55CA6FB
"ACU.exe"+55D7E1B: 48 89 55 00           -  mov [rbp+00],rdx
"ACU.exe"+55D7E1F: E9 D3 17 FF FF        -  jmp ACU.exe+55C95F7
"ACU.exe"+55D7E24: 57                    -  push rdi
"ACU.exe"+55D7E25: E9 6C CA FF FF        -  jmp ACU.exe+55D4896
// ---------- INJECTING HERE ----------
"ACU.exe"+55D7E2A: 48 8B 00              -  mov rax,[rax]
"ACU.exe"+55D7E2D: E9 5D 2C FF FF        -  jmp ACU.exe+55CAA8F
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D7E32: 56                    -  push rsi
"ACU.exe"+55D7E33: E9 E1 84 FF FF        -  jmp ACU.exe+55D0319
"ACU.exe"+55D7E38: E9 28 98 FF FF        -  jmp ACU.exe+55D1665
"ACU.exe"+55D7E3D: E9 9D B5 01 00        -  jmp ACU.exe+55F33DF
"ACU.exe"+55D7E42: 0F 85 CC C7 FF FF     -  jne ACU.exe+55D4614
"ACU.exe"+55D7E48: 66 C1 EB 06           -  shr bx,06
"ACU.exe"+55D7E4C: 89 C3                 -  mov ebx,eax
"ACU.exe"+55D7E4E: 66 0F A3 E9           -  bt cx,bp
"ACU.exe"+55D7E52: F9                    -  stc
"ACU.exe"+55D7E53: E9 98 60 FF FF        -  jmp ACU.exe+55CDEF0
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55C9EA4

"ACU.exe"+55C9E84: F6 C7 BE                 -  test bh,-42
"ACU.exe"+55C9E87: F9                       -  stc
"ACU.exe"+55C9E88: 66 F7 C3 50 9C           -  test bx,9C50
"ACU.exe"+55C9E8D: D3 E0                    -  shl eax,cl
"ACU.exe"+55C9E8F: E9 C7 77 00 00           -  jmp ACU.exe+55D165B
"ACU.exe"+55C9E94: 48 83 ED 08              -  sub rbp,08
"ACU.exe"+55C9E98: E9 D1 E1 2C FD           -  jmp ACU.exe+289806E
"ACU.exe"+55C9E9D: FD                       -  std
"ACU.exe"+55C9E9E: FC                       -  cld
"ACU.exe"+55C9E9F: E9 87 6D 00 00           -  jmp ACU.exe+55D0C2B
// ---------- INJECTING HERE ----------
"ACU.exe"+55C9EA4: 48 8B 00                 -  mov rax,[rax]
"ACU.exe"+55C9EA7: E9 38 56 02 00           -  jmp ACU.exe+55EF4E4
// ---------- DONE INJECTING  ----------
"ACU.exe"+55C9EAC: 48 FF CE                 -  dec rsi
"ACU.exe"+55C9EAF: F9                       -  stc
"ACU.exe"+55C9EB0: F8                       -  clc
"ACU.exe"+55C9EB1: F5                       -  cmc
"ACU.exe"+55C9EB2: 28 C3                    -  sub bl,al
"ACU.exe"+55C9EB4: F9                       -  stc
"ACU.exe"+55C9EB5: F9                       -  stc
"ACU.exe"+55C9EB6: 66 98                    -  cbw
"ACU.exe"+55C9EB8: F8                       -  clc
"ACU.exe"+55C9EB9: 66 81 FE 0E 96           -  cmp si,960E
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55EFFCD

"ACU.exe"+55EFFB4: F8                 -  clc
"ACU.exe"+55EFFB5: D2 E9              -  shr cl,cl
"ACU.exe"+55EFFB7: 89 C1              -  mov ecx,eax
"ACU.exe"+55EFFB9: F5                 -  cmc
"ACU.exe"+55EFFBA: F5                 -  cmc
"ACU.exe"+55EFFBB: E9 6D 01 2E FD     -  jmp ACU.exe+28D012D
"ACU.exe"+55EFFC0: 9C                 -  pushfq
"ACU.exe"+55EFFC1: E9 DA 3A FE FF     -  jmp ACU.exe+55D3AA0
"ACU.exe"+55EFFC6: 41 54              -  push r12
"ACU.exe"+55EFFC8: E9 89 A8 17 FD     -  jmp ACU.exe+276A856
// ---------- INJECTING HERE ----------
"ACU.exe"+55EFFCD: 48 8B 00           -  mov rax,[rax]
"ACU.exe"+55EFFD0: E9 70 CA FD FF     -  jmp ACU.exe+55CCA45
// ---------- DONE INJECTING  ----------
"ACU.exe"+55EFFD5: 66 35 4D B8        -  xor ax,B84D
"ACU.exe"+55EFFD9: F9                 -  stc
"ACU.exe"+55EFFDA: 66 C1 C0 08        -  rol ax,08
"ACU.exe"+55EFFDE: E9 F6 86 FE FF     -  jmp ACU.exe+55D86D9
"ACU.exe"+55EFFE3: 9C                 -  pushfq
"ACU.exe"+55EFFE4: E9 4C 5E FE FF     -  jmp ACU.exe+55D5E35
"ACU.exe"+55EFFE9: E9 C8 0F 00 00     -  jmp ACU.exe+55F0FB6
"ACU.exe"+55EFFEE: 9C                 -  pushfq
"ACU.exe"+55EFFEF: E9 C1 69 FE FF     -  jmp ACU.exe+55D69B5
"ACU.exe"+55EFFF4: 51                 -  push rcx
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55C9986

"ACU.exe"+55C9969: 48 83 ED 06                    -  sub rbp,06
"ACU.exe"+55C996D: F5                             -  cmc
"ACU.exe"+55C996E: F8                             -  clc
"ACU.exe"+55C996F: F9                             -  stc
"ACU.exe"+55C9970: D2 E8                          -  shr al,cl
"ACU.exe"+55C9972: E9 94 8B 00 00                 -  jmp ACU.exe+55D250B
"ACU.exe"+55C9977: 8F 45 00                       -  pop [rbp+00]
"ACU.exe"+55C997A: E9 6A D3 00 00                 -  jmp ACU.exe+55D6CE9
"ACU.exe"+55C997F: 41 52                          -  push r10
"ACU.exe"+55C9981: E9 63 4B 00 00                 -  jmp ACU.exe+55CE4E9
// ---------- INJECTING HERE ----------
"ACU.exe"+55C9986: 66 8B 00                       -  mov ax,[rax]
"ACU.exe"+55C9989: E9 8D 12 1A FD                 -  jmp ACU.exe+276AC1B
// ---------- DONE INJECTING  ----------
"ACU.exe"+55C998E: E9 0D 31 00 00                 -  jmp ACU.exe+55CCAA0
"ACU.exe"+55C9993: 89 CF                          -  mov edi,ecx
"ACU.exe"+55C9995: 5F                             -  pop rdi
"ACU.exe"+55C9996: C3                             -  ret
"ACU.exe"+55C9997: CC                             -  int 3
"ACU.exe"+55C9998: CC                             -  int 3
"ACU.exe"+55C9999: CC                             -  int 3
"ACU.exe"+55C999A: CC                             -  int 3
"ACU.exe"+55C999B: CC                             -  int 3
"ACU.exe"+55C999C: CC                             -  int 3
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55CB4C6

"ACU.exe"+55CB4A8: 48 98                 -  cdqe
"ACU.exe"+55CB4AA: 38 F6                 -  cmp dh,dh
"ACU.exe"+55CB4AC: F5                    -  cmc
"ACU.exe"+55CB4AD: 48 83 ED 08           -  sub rbp,08
"ACU.exe"+55CB4B1: E9 85 5E 00 00        -  jmp ACU.exe+55D133B
"ACU.exe"+55CB4B6: 50                    -  push rax
"ACU.exe"+55CB4B7: E9 6F 29 00 00        -  jmp ACU.exe+55CDE2B
"ACU.exe"+55CB4BC: F8                    -  clc
"ACU.exe"+55CB4BD: 48 0F AD D0           -  shrd rax,rdx,cl
"ACU.exe"+55CB4C1: E9 93 C3 00 00        -  jmp ACU.exe+55D7859
// ---------- INJECTING HERE ----------
"ACU.exe"+55CB4C6: 8B 00                 -  mov eax,[rax]
"ACU.exe"+55CB4C8: E9 69 2B 00 00        -  jmp ACU.exe+55CE036
// ---------- DONE INJECTING  ----------
"ACU.exe"+55CB4CD: 41 52                 -  push r10
"ACU.exe"+55CB4CF: E9 12 86 02 00        -  jmp ACU.exe+55F3AE6
"ACU.exe"+55CB4D4: E9 4C C1 A3 FA        -  jmp ACU.exe+7625
"ACU.exe"+55CB4D9: 41 53                 -  push r11
"ACU.exe"+55CB4DB: E9 D0 B9 00 00        -  jmp ACU.exe+55D6EB0
"ACU.exe"+55CB4E0: F3 9C                 - repe  pushfq
"ACU.exe"+55CB4E2: E9 D5 54 1A FD        -  jmp ACU.exe+27709BC
"ACU.exe"+55CB4E7: E9 23 31 00 00        -  jmp ACU.exe+55CE60F
"ACU.exe"+55CB4EC: 8F 45 00              -  pop [rbp+00]
"ACU.exe"+55CB4EF: E9 C3 C8 00 00        -  jmp ACU.exe+55D7DB7
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55CE434

"ACU.exe"+55CE411: F5                 -  cmc
"ACU.exe"+55CE412: 48 D3 E8           -  shr rax,cl
"ACU.exe"+55CE415: E9 C2 CD FF FF     -  jmp ACU.exe+55CB1DC
"ACU.exe"+55CE41A: E9 44 40 02 00     -  jmp ACU.exe+55F2463
"ACU.exe"+55CE41F: FF 4D 00           -  dec [rbp+00]
"ACU.exe"+55CE422: E9 B6 43 00 00     -  jmp ACU.exe+55D27DD
"ACU.exe"+55CE427: 41 52              -  push r10
"ACU.exe"+55CE429: E9 57 20 00 00     -  jmp ACU.exe+55D0485
"ACU.exe"+55CE42E: 55                 -  push rbp
"ACU.exe"+55CE42F: E9 A8 49 02 00     -  jmp ACU.exe+55F2DDC
// ---------- INJECTING HERE ----------
"ACU.exe"+55CE434: 48 8B 00           -  mov rax,[rax]
"ACU.exe"+55CE437: E9 FB 90 00 00     -  jmp ACU.exe+55D7537
// ---------- DONE INJECTING  ----------
"ACU.exe"+55CE43C: E9 D2 28 00 00     -  jmp ACU.exe+55D0D13
"ACU.exe"+55CE441: 8B 6D 00           -  mov ebp,[rbp+00]
"ACU.exe"+55CE444: E9 6E 99 00 00     -  jmp ACU.exe+55D7DB7
"ACU.exe"+55CE449: 9C                 -  pushfq
"ACU.exe"+55CE44A: E9 46 17 02 00     -  jmp ACU.exe+55EFB95
"ACU.exe"+55CE44F: E9 C6 5B 00 00     -  jmp ACU.exe+55D401A
"ACU.exe"+55CE454: 12 CC              -  adc cl,ah
"ACU.exe"+55CE456: CC                 -  int 3
"ACU.exe"+55CE457: CC                 -  int 3
"ACU.exe"+55CE458: CC                 -  int 3
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D81AE

"ACU.exe"+55D819B: 0F A3 CD           -  bt ebp,ecx
"ACU.exe"+55D819E: C1 E9 19           -  shr ecx,19
"ACU.exe"+55D81A1: 0F A3 E5           -  bt ebp,esp
"ACU.exe"+55D81A4: F8                 -  clc
"ACU.exe"+55D81A5: F5                 -  cmc
"ACU.exe"+55D81A6: F5                 -  cmc
"ACU.exe"+55D81A7: 09 C8              -  or eax,ecx
"ACU.exe"+55D81A9: F5                 -  cmc
"ACU.exe"+55D81AA: F9                 -  stc
"ACU.exe"+55D81AB: 66 39 E3           -  cmp bx,sp
// ---------- INJECTING HERE ----------
"ACU.exe"+55D81AE: 32 02              -  xor al,[rdx]
"ACU.exe"+55D81B0: F5                 -  cmc
"ACU.exe"+55D81B1: F8                 -  clc
"ACU.exe"+55D81B2: 84 EF              -  test bh,ch
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D81B4: 48 83 C2 01        -  add rdx,01
"ACU.exe"+55D81B8: E9 41 C7 FF FF     -  jmp ACU.exe+55D48FE
"ACU.exe"+55D81BD: E9 43 9A FF FF     -  jmp ACU.exe+55D1C05
"ACU.exe"+55D81C2: 0F 81 EF 4F FF FF  -  jno ACU.exe+55CD1B7
"ACU.exe"+55D81C8: 0F 87 E6 9F 01 00  -  ja ACU.exe+55F21B4
"ACU.exe"+55D81CE: E9 92 97 01 00     -  jmp ACU.exe+55F1965
"ACU.exe"+55D81D3: E9 7A 45 FF FF     -  jmp ACU.exe+55CC752
"ACU.exe"+55D81D8: 89 55 08           -  mov [rbp+08],edx
"ACU.exe"+55D81DB: E9 44 AC 01 00     -  jmp ACU.exe+55F2E24
"ACU.exe"+55D81E0: 8F 45 00           -  pop [rbp+00]
}
{
// ORIGINAL CODE - INJECTION POINT: "ACU.exe"+55D16A6

"ACU.exe"+55D1679: 66 89 45 00           -  mov [rbp+00],ax
"ACU.exe"+55D167D: E9 D1 1B 00 00        -  jmp ACU.exe+55D3253
"ACU.exe"+55D1682: 66 F7 F1              -  div cx
"ACU.exe"+55D1685: 0F 8A A5 F5 FF FF     -  jp ACU.exe+55D0C30
"ACU.exe"+55D168B: 66 89 55 08           -  mov [rbp+08],dx
"ACU.exe"+55D168F: 0F 8B E8 60 00 00     -  jnp ACU.exe+55D777D
"ACU.exe"+55D1695: 66 89 45 0A           -  mov [rbp+0A],ax
"ACU.exe"+55D1699: E9 2F DA 01 00        -  jmp ACU.exe+55EF0CD
"ACU.exe"+55D169E: C1 C8 13              -  ror eax,13
"ACU.exe"+55D16A1: E9 4F EF 19 FD        -  jmp ACU.exe+27705F5
// ---------- INJECTING HERE ----------
"ACU.exe"+55D16A6: 48 8B 00              -  mov rax,[rax]
"ACU.exe"+55D16A9: E9 0B 68 A3 FA        -  jmp ACU.exe+7EB9
// ---------- DONE INJECTING  ----------
"ACU.exe"+55D16AE: 8F 45 00              -  pop [rbp+00]
"ACU.exe"+55D16B1: E9 41 7F FF FF        -  jmp ACU.exe+55C95F7
"ACU.exe"+55D16B6: F9                    -  stc
"ACU.exe"+55D16B7: F8                    -  clc
"ACU.exe"+55D16B8: 83 F9 04              -  cmp ecx,04
"ACU.exe"+55D16BB: E9 D1 5F 00 00        -  jmp ACU.exe+55D7691
"ACU.exe"+55D16C0: E9 B6 18 02 00        -  jmp ACU.exe+55F2F7B
"ACU.exe"+55D16C5: BB 03 F0 05 CC        -  mov ebx,CC05F003
"ACU.exe"+55D16CA: CC                    -  int 3
"ACU.exe"+55D16CB: CC                    -  int 3
}

 

 Видео:

 

И последняя версия таблицы:

ACU.CT

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

Гарик, такие вещи (финальные версии таблиц) рекомендую заливать в файловый архив, ибо в темах сложно будет найти, а в файловом архиве оно будет, как мне кажется, на месте.

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

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

Гарик, такие вещи (финальные версии таблиц) рекомендую заливать в файловый архив, ибо в темах сложно будет найти, а в файловом архиве оно будет, как мне кажется, на месте.

Xipho, сейчас постараюсь доделать скрипт с учётом замечания AntonVit (Хотя особого смысла в этом не вижу, так как есть сигнатуры самих проверок и заменить 8 прыжков в скрипте - нет проблем для продвинутых пользователей. Ну ладно сделаю, заодно запишу ещё одно видео для начинающих, как это можно сделать. Правда скрипт удлинится) и выложу таблицу в файловый архив.

AntonVit, сейчас сделаю.

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

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

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

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