Garik66 Опубликовано 29 апреля, 2016 Поделиться Опубликовано 29 апреля, 2016 Наконец-то и я столкнулся с этой проблемой, просмотрел наш форум, тем было несколько, но везде нету окончательного решения этого вопроса. Поэтому повторю её. Просьба кто уже разобрался с этим вопросом поучаствовать в решении. Пытаюсь помочь с решением пользователю Vuqar в этой теме (читайте моё сообщение). Изначально полученный СЕ-ный АА-скрипт такой: Скрытый текст { Game : chrome.exe Version: Date : 2016-04-29 Author : Garik66 This script does blah blah blah } [ENABLE] aobscan(INJECT,E0 F2 0F 10 4D D8 F2 0F 11 41 20) // should be unique alloc(newmem,$1000,551210111C0) label(code) label(return) registersymbol(INJECT) newmem: code: movsd [rcx+20],xmm0 jmp return INJECT+06: jmp newmem return: [DISABLE] INJECT+06: db F2 0F 11 41 20 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 551210111C0 55121011189: 49 8B 48 00 - mov rcx,[r8+00] 5512101118D: F2 41 0F 10 40 08 - movsd xmm0,[r8+08] 55121011193: F2 41 0F 10 60 10 - movsd xmm4,[r8+10] 55121011199: F2 41 0F 10 58 18 - movsd xmm3,[r8+18] 5512101119F: F2 41 0F 10 50 20 - movsd xmm2,[r8+20] 551210111A5: F2 41 0F 10 48 28 - movsd xmm1,[r8+28] 551210111AB: F2 0F 11 4D D8 - movsd [rbp-28],xmm1 551210111B0: F2 41 0F 10 48 30 - movsd xmm1,[r8+30] 551210111B6: F2 0F 11 4D E0 - movsd [rbp-20],xmm1 551210111BB: F2 0F 10 4D D8 - movsd xmm1,[rbp-28] // ---------- INJECTING HERE ---------- 551210111C0: F2 0F 11 41 20 - movsd [rcx+20],xmm0 // ---------- DONE INJECTING ---------- 551210111C5: F2 0F 10 45 E0 - movsd xmm0,[rbp-20] 551210111CA: F2 0F 11 61 28 - movsd [rcx+28],xmm4 551210111CF: F2 0F 11 59 30 - movsd [rcx+30],xmm3 551210111D4: F2 0F 11 51 38 - movsd [rcx+38],xmm2 551210111D9: F2 0F 11 49 40 - movsd [rcx+40],xmm1 551210111DE: F2 0F 11 41 48 - movsd [rcx+48],xmm0 551210111E3: 48 8B 4D E8 - mov rcx,[rbp-18] 551210111E7: 48 89 4A 58 - mov [rdx+58],rcx 551210111EB: 48 8B E5 - mov rsp,rbp 551210111EE: 5D - pop rbp } Даже, если ничего больше не менять в коде, то после нескольких активаций/деактиваций происходит прыжок не туда, игровой код меняется и происходит вылет из игры. Пробовал несколько вариантов решения, последнее из них делал опираясь на это сообщение пользователя gmz. Вот мой код: Скрытый текст { Game : chrome.exe Version: Date : 2016-04-29 Author : Garik66 This script does blah blah blah } [ENABLE] aobscan(INJECT,E0 F2 0F 10 4D D8 F2 0F 11 41 20) // should be unique alloc(newmem,$1000,551210111C0) label(code) label(return) registersymbol(INJECT) newmem: code: movsd [rcx+20],xmm0 movsd xmm0,[rbp-20] movsd [rcx+28],xmm4 mov rax,[return] jmp rax INJECT+06: push rax mov rax,[newmem] jmp rax nop return: pop rax [DISABLE] INJECT+06: db F2 0F 11 41 20 F2 0F 10 45 E0 F2 0F 11 61 28 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 551210111C0 55121011189: 49 8B 48 00 - mov rcx,[r8+00] 5512101118D: F2 41 0F 10 40 08 - movsd xmm0,[r8+08] 55121011193: F2 41 0F 10 60 10 - movsd xmm4,[r8+10] 55121011199: F2 41 0F 10 58 18 - movsd xmm3,[r8+18] 5512101119F: F2 41 0F 10 50 20 - movsd xmm2,[r8+20] 551210111A5: F2 41 0F 10 48 28 - movsd xmm1,[r8+28] 551210111AB: F2 0F 11 4D D8 - movsd [rbp-28],xmm1 551210111B0: F2 41 0F 10 48 30 - movsd xmm1,[r8+30] 551210111B6: F2 0F 11 4D E0 - movsd [rbp-20],xmm1 551210111BB: F2 0F 10 4D D8 - movsd xmm1,[rbp-28] // ---------- INJECTING HERE ---------- 551210111C0: F2 0F 11 41 20 - movsd [rcx+20],xmm0 // ---------- DONE INJECTING ---------- 551210111C5: F2 0F 10 45 E0 - movsd xmm0,[rbp-20] 551210111CA: F2 0F 11 61 28 - movsd [rcx+28],xmm4 551210111CF: F2 0F 11 59 30 - movsd [rcx+30],xmm3 551210111D4: F2 0F 11 51 38 - movsd [rcx+38],xmm2 551210111D9: F2 0F 11 49 40 - movsd [rcx+40],xmm1 551210111DE: F2 0F 11 41 48 - movsd [rcx+48],xmm0 551210111E3: 48 8B 4D E8 - mov rcx,[rbp-18] 551210111E7: 48 89 4A 58 - mov [rdx+58],rcx 551210111EB: 48 8B E5 - mov rsp,rbp 551210111EE: 5D - pop rbp } Но также вылет из игры. Подскажите, что делаю не правильно. Внизу скрипта сохранены логи инструкций для выравнивания. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2016 Автор Поделиться Опубликовано 29 апреля, 2016 До разобрался, переписал скрипт, 7 раз перезапустил игру - работает. И того решение: Скрытый текст { Game : chrome.exe Version: Date : 2016-04-29 Author : Garik66 This script does blah blah blah } [ENABLE] aobscan(INJECT,E0 F2 0F 10 4D D8 F2 0F 11 41 20) // should be unique alloc(newmem,$1000,551210111C0) label(code) label(return) registersymbol(INJECT) newmem: code: movsd [rcx+20],xmm0 movsd xmm0,[rbp-20] // инструкция добавлена для выравнивания movsd [rcx+28],xmm4 // инструкция добавлена для выравнивания mov rax,return // загружаем в rax, адрес возврата jmp rax // прыгаем на этот адрес. INJECT+06: push rax // Сохраняем регистр, перед использованием mov rax,newmem // загружаем в rax, адрес прыжка на нашу инъекцию jmp rax // прыгаем на этот адрес. nop // nop добавлен для выравнивания return: // Метка возврата в код игры pop rax // Восстанавливаем регистр. [DISABLE] INJECT+06: db F2 0F 11 41 20 F2 0F 10 45 E0 F2 0F 11 61 28 // добавил две инструкции для выравнивания. unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 551210111C0 55121011189: 49 8B 48 00 - mov rcx,[r8+00] 5512101118D: F2 41 0F 10 40 08 - movsd xmm0,[r8+08] 55121011193: F2 41 0F 10 60 10 - movsd xmm4,[r8+10] 55121011199: F2 41 0F 10 58 18 - movsd xmm3,[r8+18] 5512101119F: F2 41 0F 10 50 20 - movsd xmm2,[r8+20] 551210111A5: F2 41 0F 10 48 28 - movsd xmm1,[r8+28] 551210111AB: F2 0F 11 4D D8 - movsd [rbp-28],xmm1 551210111B0: F2 41 0F 10 48 30 - movsd xmm1,[r8+30] 551210111B6: F2 0F 11 4D E0 - movsd [rbp-20],xmm1 551210111BB: F2 0F 10 4D D8 - movsd xmm1,[rbp-28] // ---------- INJECTING HERE ---------- 551210111C0: F2 0F 11 41 20 - movsd [rcx+20],xmm0 // ---------- DONE INJECTING ---------- 551210111C5: F2 0F 10 45 E0 - movsd xmm0,[rbp-20] 551210111CA: F2 0F 11 61 28 - movsd [rcx+28],xmm4 551210111CF: F2 0F 11 59 30 - movsd [rcx+30],xmm3 551210111D4: F2 0F 11 51 38 - movsd [rcx+38],xmm2 551210111D9: F2 0F 11 49 40 - movsd [rcx+40],xmm1 551210111DE: F2 0F 11 41 48 - movsd [rcx+48],xmm0 551210111E3: 48 8B 4D E8 - mov rcx,[rbp-18] 551210111E7: 48 89 4A 58 - mov [rdx+58],rcx 551210111EB: 48 8B E5 - mov rsp,rbp 551210111EE: 5D - pop rbp } Новички для того чтобы понять смотрите самый первый скрипт и этот. Для чего и как было сделано выравнивание: Для чего - чтобы не нарушать дальнейшего кода игры. Как: у нас изначально прыжок jmp newmem и оригинальная инструкция movsd [rcx+20],xmm0 по 5 байт. При изменении кода прыжка у нас в сумме 14 байт+ 1 байт nop и оригинальные инструкции в сумме 3 штуки тоже 15 байт. Ссылка на комментарий Поделиться на другие сайты Поделиться
Vuqar Опубликовано 30 апреля, 2016 Поделиться Опубликовано 30 апреля, 2016 eto pravilno ? esli ne pravilno isprav eto ,ostalnie ya sam vsyo ponyal Скрытый текст { Game : chrome.exe Version: Date : 2016-04-30 Author : Resul This script does blah blah blah } [ENABLE] aobscan(POOL,F3 0F 7E 51 10 0F 28) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(POOL) newmem: code: movq xmm2,[ecx+10] movaps xmm3,xmm7 mulsd xmm3,xmm2 mov eax,[return] jmp eax POOL: push eax mov eax,[newmem] jmp eax nop return: pop eax [DISABLE] POOL: db F3 0F 7E 51 10 0F 28 DF F2 0F 59 DA unregistersymbol(POOL) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 09B1F4B2 09B1F48D: 73 08 - jae 09B1F497 09B1F48F: E8 92 FB FF 4B - call pepflashplayer.dll+8F026 09B1F494: 8B 55 10 - mov edx,[ebp+10] 09B1F497: 8B 42 04 - mov eax,[edx+04] 09B1F49A: 8B 4A 08 - mov ecx,[edx+08] 09B1F49D: 85 C0 - test eax,eax 09B1F49F: 0F 84 29 01 00 00 - je 09B1F5CE 09B1F4A5: F3 0F 7E 78 10 - movq xmm7,[eax+10] 09B1F4AA: 85 C9 - test ecx,ecx 09B1F4AC: 0F 84 1C 01 00 00 - je 09B1F5CE // ---------- INJECTING HERE ---------- 09B1F4B2: F3 0F 7E 51 10 - movq xmm2,[ecx+10] // ---------- DONE INJECTING ---------- 09B1F4B7: 0F 28 DF - movaps xmm3,xmm7 09B1F4BA: F2 0F 59 DA - mulsd xmm3,xmm2 09B1F4BE: F3 0F 7E 40 20 - movq xmm0,[eax+20] 09B1F4C3: F3 0F 7E 61 18 - movq xmm4,[ecx+18] 09B1F4C8: 0F 28 C8 - movaps xmm1,xmm0 09B1F4CB: F2 0F 59 CC - mulsd xmm1,xmm4 09B1F4CF: F2 0F 58 D9 - addsd xmm3,xmm1 09B1F4D3: 66 0F D6 5D E0 - movq [ebp-20],xmm3 09B1F4D8: F3 0F 7E 48 18 - movq xmm1,[eax+18] 09B1F4DD: 0F 28 D9 - movaps xmm3,xmm1 } Ссылка на комментарий Поделиться на другие сайты Поделиться
Vuqar Опубликовано 30 апреля, 2016 Поделиться Опубликовано 30 апреля, 2016 Скрытый текст code: movsd [rcx+20],xmm0 movsd xmm0,[rbp-20] movsd [rcx+28],xmm4 mov rax,[return] jmp rax INJECT+06: push rax mov rax,[newmem] jmp rax nop return: pop rax eto v tvayom sluchae ttak poluchilos i ti napisal tak Скрытый текст movq xmm2,[ecx+10] //eti 3 znachene 12 bayt movaps xmm3,xmm7 mulsd xmm3,xmm2 //kak budet v mayom sluchae? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 30 апреля, 2016 Автор Поделиться Опубликовано 30 апреля, 2016 Vuqar, 1. Пользуйся тегами кода и спойлера. 2. Выложи свой АА-скрипт сюда. Если не знаешь как, посмотри эту тему Новички, если на Ваш вопрос, просят выложить АА-скрипт. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 1 мая, 2016 Автор Поделиться Опубликовано 1 мая, 2016 20 часа назад, Vuqar сказал: eto pravilno ? esli ne pravilno isprav eto ,ostalnie ya sam vsyo ponyal Нет. 1. return и newmem - это не указатели, а сами адреса и поэтому квадратные скобки не нужны. 2. Не правильно выравнен код, вот это участок: push rax mov rax,[newmem] jmp rax pop rax у меня в 64-битной системе равен 14 байтам. твой же участок будет равным 10 байтам. 3. Тебе не нужно менять скрипт, так как у тебя прыжок на 4 байта. Т.е. воспользуйся СЕ-ным скриптом: Скрытый текст { Game : chrome.exe Version: Date : 2016-04-30 Author : Resul This script does blah blah blah } [ENABLE] aobscan(POOL,F3 0F 7E 51 10 0F 28) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(POOL) newmem: code: movq xmm2,[ecx+10] jmp return POOL: jmp newmem return: [DISABLE] POOL: db F3 0F 7E 51 10 unregistersymbol(POOL) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 09B1F4B2 09B1F48D: 73 08 - jae 09B1F497 09B1F48F: E8 92 FB FF 4B - call pepflashplayer.dll+8F026 09B1F494: 8B 55 10 - mov edx,[ebp+10] 09B1F497: 8B 42 04 - mov eax,[edx+04] 09B1F49A: 8B 4A 08 - mov ecx,[edx+08] 09B1F49D: 85 C0 - test eax,eax 09B1F49F: 0F 84 29 01 00 00 - je 09B1F5CE 09B1F4A5: F3 0F 7E 78 10 - movq xmm7,[eax+10] 09B1F4AA: 85 C9 - test ecx,ecx 09B1F4AC: 0F 84 1C 01 00 00 - je 09B1F5CE // ---------- INJECTING HERE ---------- 09B1F4B2: F3 0F 7E 51 10 - movq xmm2,[ecx+10] // ---------- DONE INJECTING ---------- 09B1F4B7: 0F 28 DF - movaps xmm3,xmm7 09B1F4BA: F2 0F 59 DA - mulsd xmm3,xmm2 09B1F4BE: F3 0F 7E 40 20 - movq xmm0,[eax+20] 09B1F4C3: F3 0F 7E 61 18 - movq xmm4,[ecx+18] 09B1F4C8: 0F 28 C8 - movaps xmm1,xmm0 09B1F4CB: F2 0F 59 CC - mulsd xmm1,xmm4 09B1F4CF: F2 0F 58 D9 - addsd xmm3,xmm1 09B1F4D3: 66 0F D6 5D E0 - movq [ebp-20],xmm3 09B1F4D8: F3 0F 7E 48 18 - movq xmm1,[eax+18] 09B1F4DD: 0F 28 D9 - movaps xmm3,xmm1 } Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения