Garik66 Опубликовано 5 октября, 2016 Поделиться Опубликовано 5 октября, 2016 (изменено) Скрипт "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 } Видео: Ссылки на материалы используемые в видео: Скрытый текст Обход защиты целостности кода Как правильно использовать инструкцию repe movsb для 64-битных игр. Assassin Creed Unity Обход защиты Видео от Xipho: И сама табличка: // Окончательный скрипт и табличку выложил здесь. Смотрите все части видео. Изменено 11 октября, 2016 пользователем Garik66 5 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 5 октября, 2016 Поделиться Опубликовано 5 октября, 2016 Скачал табличку, - игра версии 1.5 с таблеткой от Rld падает спустя некоторое время. Попытки повторялись. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 6 октября, 2016 Автор Поделиться Опубликовано 6 октября, 2016 6 часов назад, AntonVit сказал: Скачал табличку, - игра версии 1.5 с таблеткой от Rld падает спустя некоторое время. Попытки повторялись. Ну по-видимому я не все проверки нашёл. Вот только что почитал - у Вас 15 проверок в игре. Как видите у меня на видео, я в самом начале игры, дальше не ходил, может некоторые из проверок начинают работать, не с начала игры, а потом подключаются, может нужно дольше ждать результата на каждом адресе (я ждал по две минуты, периодически заходя в игру). К сожалению у меня со временем сейчас плохо, если сможете - доработайте пожалуйста. Если у меня появиться время, то тоже ещё покопаюсь. Но результат какой-то есть, т.е. частично проверка точно отключена, так как вылет, при активации скрипта опции, происходит не сразу моментально. И я себе задачу ставил именно подтвердить, что способ, предложенный Xipho рабочий и что для 8 байтных адресов нужен не много другой подход в отличии от урока Xipho. AntonVit, а так - я у Вас прочитал, что Вы выложите и свои скрипты тоже, после моих. Так что выложите их, например здесь. Или лучше снять ещё один урок. Пользователи Вам будут благодарны. Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 6 октября, 2016 Поделиться Опубликовано 6 октября, 2016 Приятный такой голос у Гарика, раньше как-то не доводилось его видео смотреть. Могу посоветовать заранее планировать урок и текст к нему, чтобы не сбиваться. По поводу скрипта - я бы избавился от лишних меток, но это - дело вкуса. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 6 октября, 2016 Автор Поделиться Опубликовано 6 октября, 2016 13 часа назад, keng сказал: Приятный такой голос у Гарика, keng, аж засмущал. 13 часа назад, keng сказал: По поводу скрипта - я бы избавился от лишних меток А где там лишние? Вроде все - при деле. Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 6 октября, 2016 Поделиться Опубликовано 6 октября, 2016 Вот пример: Скрытый текст 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. А метка - просто @@. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 6 октября, 2016 Автор Поделиться Опубликовано 6 октября, 2016 (изменено) 7 минут назад, keng сказал: @@: И тогда не нужно объявлять label. А понял. Ты про безымянные метки. Я оставил code и AlreadyCopy специально для читабельности, так как писал не только для себя. А когда пишу для себя, конечно я чаще всего использую именно безымянные метки Изменено 6 октября, 2016 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 7 октября, 2016 Поделиться Опубликовано 7 октября, 2016 В 06.10.2016в05:58, Garik66 сказал: Ну по-видимому я не все проверки нашёл. Вот только что почитал - у Вас 15 проверок в игре. Как видите у меня на видео, я в самом начале игры, дальше не ходил, может некоторые из проверок начинают работать, не с начала игры, а потом подключаются, может нужно дольше ждать результата на каждом адресе (я ждал по две минуты, периодически заходя в игру). К сожалению у меня со временем сейчас плохо, если сможете - доработайте пожалуйста. Если у меня появиться время, то тоже ещё покопаюсь. Но результат какой-то есть, т.е. частично проверка точно отключена, так как вылет, при активации скрипта опции, происходит не сразу моментально. И я себе задачу ставил именно подтвердить, что способ, предложенный Xipho рабочий и что для 8 байтных адресов нужен не много другой подход в отличии от урока Xipho. AntonVit, а так - я у Вас прочитал, что Вы выложите и свои скрипты тоже, после моих. Так что выложите их, например здесь. Или лучше снять ещё один урок. Пользователи Вам будут благодарны. 1. Гарик, у Тебя не получилось обойти защиту, игра падает. Что с того, что Ты лишь отодвинул момент краша. Защита в игре не сломлена, цель не достигнута, способ не подтвержден. "Не сложившаяся попытка сделать обход защиты целостности кода для игры...." - вот приличествующее названия в данный момент для этой темы. Иначе - люди тратят попусту время смотря видео. Думая смотреть обход - видят лишь попытку. Либо измени название темы, либо сделай в обязательном порядке обход. 2. Я нигде не говорил что выложу скрипты. Все что я говорил по этому поводу - " А там, как Бог устроит". И для чего мне выкладывать, тем я не создавал, видео туториалов не снимал, сказал ли я что "я обошел" - но сказал для ободрением тех кто еще сомневается вообще в возможности обойти. Довольно для меня того что я выложил в теме Влада. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 8 октября, 2016 Автор Поделиться Опубликовано 8 октября, 2016 В 07.10.2016в08:50, AntonVit сказал: "Не сложившаяся попытка сделать обход защиты целостности кода для игры...." Спасибо за "Хорошую" оценку моей работы. Но мне кажется не Вам судить, Вы хотя бы выложили коротенькое видео, где при активации именно Вашего скрипта, не происходит вылета из игры, чтобы доказать, что выполнили полностью обход защиты. А я уже писал, что у меня со временем плохо. Сам принцип написания скрипта, причём более оптимизированного я показал и на урок мне кажется это тянет. Если будет время (и желание), то покопаюсь в игре ещё. Да и нашёл откуда я качал игру. Это: Скрытый текст 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 8 октября, 2016 Поделиться Опубликовано 8 октября, 2016 Извини Гарик, если задел, но обход я считаю у Тебя не окончен, и следовательно говорить о его состоятельности, - неверно. Это чистой воды логика, без какой либо предвзятости. Я выложил видео из игры "The Crew", там вместо 15 проверок, - 28. Разработчик один и тот же, проверка почти та же самая. Думаю этого вполне достаточно, чтобы поверить. Но, если желаешь, как нибудь запишу видео об обходе асасина. Но, так же, при наличии времени и желания. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 8 октября, 2016 Автор Поделиться Опубликовано 8 октября, 2016 9 минут назад, AntonVit сказал: Но, если желаешь, как нибудь запишу видео об обходе асасина. Но, так же, при наличии времени и желания. Мне не нужно ( я из видео Xipho понял как это делается), нужно форумчанам. 10 минуту назад, AntonVit сказал: Я выложил видео из игры "The Crew" Бегло смотрел видео (ещё когда Вы его выложили), но там вроде Вы просто ездите на машине, ни какой активации скрипта не показано. 12 минуты назад, AntonVit сказал: я считаю у Тебя не окончен Ну, если проверили ( у меня времени на это не было, мой герой, как я и писал стоит в самом начале игры) и есть вылет, то конечно не закончен, не все проверки я нашёл, чтобы найти их мне нужно по полчаса тестить по две инструкции, чтобы сработали все инструкции, а на это нужно время (9 инструкций {которые я нашёл} / 2 бряка {как видно из моего видео, я могу одновременно только два бряка ставить} * 30 мин {чтобы точно сработали все проверки} итого 2 часа 15 минут). к сожалению жаль тратить на это время. 17 минуту назад, AntonVit сказал: если задел Не задели Не обиделся. На урок, я считаю моё видео тянет (хоть и не доделано), так как показан прицип поиска проверок и обхода их, и написание самого скрипта + оптимизация его. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 9 октября, 2016 Автор Поделиться Опубликовано 9 октября, 2016 В 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] Буду делать проверку дальше, если удастся найти все - дозапишу вторую часть видео этой темы. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 9 октября, 2016 Автор Поделиться Опубликовано 9 октября, 2016 (изменено) Больше 10 проверок пока не удалось найти, добавил в скрипт 10 проверку и сократил скрипт, с помощью безымянных меток: Скрипт "Bypass Check"и табличку выложу ниже - обнаружил у себя ошибку в скрипте при просмотре видео. Видео: Изменено 9 октября, 2016 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 9 октября, 2016 Автор Поделиться Опубликовано 9 октября, 2016 Обнаружил у себя ошибку в скрипте (сделал при добавлении 10 проверки) - не восстановил регистр. Сейчас записываю видео, тестирую с исправленным скриптом, так что будет и часть 3 видео. Вот пока пишу, прошло 5 минут после активации скрипта, пока вылета не было. Потестирую час. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 9 октября, 2016 Автор Поделиться Опубликовано 9 октября, 2016 (изменено) Скрипт "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 } Видео: Табличка: // Окончательный скрипт и табличку выложил здесь. Смотрите все части видео. Изменено 11 октября, 2016 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 9 октября, 2016 Поделиться Опубликовано 9 октября, 2016 По секрету, всему свету: у меня тоже падает Assassins Unity спустя примерно пол часа, после активации. Стало известно - только что. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 9 октября, 2016 Автор Поделиться Опубликовано 9 октября, 2016 1 час назад, AntonVit сказал: у меня тоже падает Assassins Unity Ага Думаю, что это всё-таки те прыжки срабатывают (которые я на видео показывал), их нужно тоже проверить. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 9 октября, 2016 Поделиться Опубликовано 9 октября, 2016 Гарик, я заметил что Ты для перехода в newmem копируешь и вставляешь адрес "xxxxxxx". jmp xxxxxx nop nop Можно просто нажать клавишу пробел на прыжке. Вообще на прыжках, при нажатии на пробел, СЕ перенаправляет в место прыжка. По поводу Твоего скрипта, - видно что работает он правильно. Все что ему сейчас не хватает, - это всего лишь нескольких проверяющих инструкций. Не трать более времени на поиски этих инструкций, его (времени) и без этого очень мало. Что до моей версии обхода, - я его "пофиксил", и теперь игра не вылетает. Проработала около двух с половиной часов, где то побегал, где то постоял, долее уже нет смысла выжидать. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 9 октября, 2016 Автор Поделиться Опубликовано 9 октября, 2016 1 минуту назад, AntonVit сказал: Не трать более времени на поиски этих инструкций, его (времени) и без этого очень мало. Ну тогда, если не секрет конечно выложите сюда адреса проверяющих инструкций, которых у меня не хватает, я допишу скрипт. Заранее Большое спасибо!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 10 октября, 2016 Поделиться Опубликовано 10 октября, 2016 Нет желания выкладывать адреса. P.S. В качестве альтернативы, можешь попробовать обойти защиту в "Assassins creed syndicate". Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 октября, 2016 Автор Поделиться Опубликовано 11 октября, 2016 20 часа назад, AntonVit сказал: Нет желания выкладывать адреса. Ну тогда, покопаюсь ещё сам, когда время будет появляться - не люблю не доделки. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 октября, 2016 Автор Поделиться Опубликовано 11 октября, 2016 (изменено) 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 Изменено 11 октября, 2016 пользователем Garik66 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 Гарик, такие вещи (финальные версии таблиц) рекомендую заливать в файловый архив, ибо в темах сложно будет найти, а в файловом архиве оно будет, как мне кажется, на месте. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 В скрипте необходимо сделать аоб на "JMP", на все "JMP", (На случай патча). @@: pop rsi xor al,[rdx] stc jmp 1455D7AC3 // аоб Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 октября, 2016 Автор Поделиться Опубликовано 12 октября, 2016 3 часа назад, Xipho сказал: Гарик, такие вещи (финальные версии таблиц) рекомендую заливать в файловый архив, ибо в темах сложно будет найти, а в файловом архиве оно будет, как мне кажется, на месте. Xipho, сейчас постараюсь доделать скрипт с учётом замечания AntonVit (Хотя особого смысла в этом не вижу, так как есть сигнатуры самих проверок и заменить 8 прыжков в скрипте - нет проблем для продвинутых пользователей. Ну ладно сделаю, заодно запишу ещё одно видео для начинающих, как это можно сделать. Правда скрипт удлинится) и выложу таблицу в файловый архив. AntonVit, сейчас сделаю. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения