bes Опубликовано 4 сентября, 2018 Поделиться Опубликовано 4 сентября, 2018 Вопрос таков. Многие игры в которые играл, которые написанные на движке UE4, просто вылетают при активации скрипта, похоже что стоит защита какая та. В данный момент пытаюсь взломать игру Scum. Нашел выносливость, при этом значения не меняются, при отладке нахожу инструкцию - Пример: movss [rax+какое то смещение],xmm0, заменяю на movss [rax+какое то смещение],xmm7, xmm7 содержит число 100. Добавляю скрипт, все нормально ошибок нет, но стоит заморозить скрипт, игра проста закрывается. Поиск в интернете не дал мне ответа, может есть ссылка у кого где можно посмотреть что и как или просто тут написать причину. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 4 сентября, 2018 Поделиться Опубликовано 4 сентября, 2018 2 минуты назад, bes сказал: просто тут написать причину. Причину тебе никто не напишет - Ты не написал что за игра. Ты не привел свой скрипт (может он написан не правильно, ну например банально не выровнял НОПами). Вполне возможно, что значение в регистре xmm7, до того как ты заюзал регистр, используется в игре. Как проверить Добавь после оригинальной инструкции игры movss [rax+какое то смещение],xmm0 mov [rax+какое то смещение],(float)100 // или другой вариант //наоборот перед оригинальной инструкцией movss xmm0,[rax+какое то смещение] movss [rax+какое то смещение],xmm0 Ссылка на комментарий Поделиться на другие сайты Поделиться
bes Опубликовано 4 сентября, 2018 Автор Поделиться Опубликовано 4 сентября, 2018 В 04.09.2018 в 21:30, Garik66 сказал: Причину тебе никто не напишет Я написал как игра называется, называется Scum Вот скрипт Спойлер [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat aobscanmodule(INJECT,SCUM.exe,F3 0F 11 87 04 1C 00 00 4C) // should be unique alloc(newmem,$1000,"SCUM.exe"+36948A) label(code) label(return) newmem: code: movss [rdi+00001C04],xmm7 jmp return INJECT: jmp newmem nop nop nop return: registersymbol(INJECT) [DISABLE] //code from here till the end of the code will be used to disable the cheat INJECT: db F3 0F 11 87 04 1C 00 00 unregistersymbol(INJECT) dealloc(newmem) Почему скрипт так написал, просто смотрел видео, как работать с movss и xmm0 Ссылка на комментарий Поделиться на другие сайты Поделиться
krocki Опубликовано 5 сентября, 2018 Поделиться Опубликовано 5 сентября, 2018 А ты точно уверен что xmm7 регистре значение = 100, может оно потом меняется на другое!? Ссылка на комментарий Поделиться на другие сайты Поделиться
bes Опубликовано 5 сентября, 2018 Автор Поделиться Опубликовано 5 сентября, 2018 18 минут назад, krocki сказал: А ты точно уверен что xmm7 регистре значение = 100, может оно потом меняется на другое!? Да xmm7 после перезапуска игры содержит число 100 . Игра много раз закрывалась, и я пытался по новый все делать, вчера пробовал совет Garik66, тоже самое, активирую скрипт и игра закрывается. Вот скрин - Image. Как я писал на скрине видать два адреса найдено, когда я меня значение что у одного адреса, что у другого, в игре значения не меняются. Пробовал писать скрипт для обоих адресов, и все равно вылетает игра. Вот еще скрин Image2 тут сама инструкция. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 5 сентября, 2018 Поделиться Опубликовано 5 сентября, 2018 Скрипт свой покажи. Ссылка на комментарий Поделиться на другие сайты Поделиться
bes Опубликовано 5 сентября, 2018 Автор Поделиться Опубликовано 5 сентября, 2018 42 минуты назад, Xipho сказал: Скрипт свой покажи. Спойлер [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat aobscanmodule(INJECT,SCUM.exe,F3 0F 11 87 04 1C 00 00 4C) // should be unique alloc(newmem,$1000,"SCUM.exe"+36948A) label(code) label(return) newmem: code: //Пробовал вот так movss [rdi+00001C04],xmm7 //Потом так пробовал movss xmm0,[rdi+00001C04] movss [rdi+00001C04],xmm0 //Так тоже не работает mov [rdi+00001C04],(float)100 jmp return INJECT: jmp newmem nop nop nop return: registersymbol(INJECT) [DISABLE] //code from here till the end of the code will be used to disable the cheat INJECT: db F3 0F 11 87 04 1C 00 00 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "SCUM.exe"+36948A "SCUM.exe"+36945F: 48 8B 8F 30 08 00 00 - mov rcx,[rdi+00000830] "SCUM.exe"+369466: 48 85 C9 - test rcx,rcx "SCUM.exe"+369469: 74 07 - je SCUM.exe+369472 "SCUM.exe"+36946B: E8 A0 B2 02 00 - call SCUM.exe+394710 "SCUM.exe"+369470: EB 03 - jmp SCUM.exe+369475 "SCUM.exe"+369472: 0F 28 C6 - movaps xmm0,xmm6 "SCUM.exe"+369475: F3 0F 10 3D AB C4 F1 01 - movss xmm7,[SCUM.exe+2285928] "SCUM.exe"+36947D: F3 0F 59 C7 - mulss xmm0,xmm7 "SCUM.exe"+369481: 0F 2E 87 04 1C 00 00 - ucomiss xmm0,[rdi+00001C04] "SCUM.exe"+369488: 74 1D - je SCUM.exe+3694A7 // ---------- INJECTING HERE ---------- "SCUM.exe"+36948A: F3 0F 11 87 04 1C 00 00 - movss [rdi+00001C04],xmm0 // ---------- DONE INJECTING ---------- "SCUM.exe"+369492: 4C 8B CF - mov r9,rdi "SCUM.exe"+369495: 48 8B 0D 64 2C ED 02 - mov rcx,[SCUM.exe+323C100] "SCUM.exe"+36949C: 45 33 C0 - xor r8d,r8d "SCUM.exe"+36949F: 0F 28 C8 - movaps xmm1,xmm0 "SCUM.exe"+3694A2: E8 99 06 C0 01 - call SCUM.exe+1F69B40 "SCUM.exe"+3694A7: 48 8B 8F 38 08 00 00 - mov rcx,[rdi+00000838] "SCUM.exe"+3694AE: 48 85 C9 - test rcx,rcx "SCUM.exe"+3694B1: 74 0A - je SCUM.exe+3694BD "SCUM.exe"+3694B3: B2 01 - mov dl,01 "SCUM.exe"+3694B5: E8 D6 BB 05 00 - call SCUM.exe+3C5090 } Это второй скрипт на второй адрес Спойлер [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat aobscanmodule(script2,SCUM.exe,F3 0F 11 38 0F B6 84 24 90 00 00 00) // should be unique alloc(newmem,$1000,"SCUM.exe"+209F911) label(code) label(return) newmem: code: movss [rax],xmm6 movzx eax,byte ptr [rsp+00000090] //movss xmm7,[rax] //movss [rax],xmm7 //movzx eax,byte ptr [rsp+00000090] //mov [rax],(float)100 //movzx eax,byte ptr [rsp+00000090] jmp return script2: jmp newmem nop nop nop nop nop nop nop return: registersymbol(script2) [DISABLE] //code from here till the end of the code will be used to disable the cheat script2: db F3 0F 11 38 0F B6 84 24 90 00 00 00 unregistersymbol(script2) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "SCUM.exe"+209F911 "SCUM.exe"+209F8F1: 8B 09 - mov ecx,[rcx] "SCUM.exe"+209F8F3: 48 8B D7 - mov rdx,rdi "SCUM.exe"+209F8F6: E8 A5 A3 04 00 - call SCUM.exe+20E9CA0 "SCUM.exe"+209F8FB: 83 F8 01 - cmp eax,01 "SCUM.exe"+209F8FE: 75 32 - jne SCUM.exe+209F932 "SCUM.exe"+209F900: 48 8D 4B 20 - lea rcx,[rbx+20] "SCUM.exe"+209F904: 48 8B D7 - mov rdx,rdi "SCUM.exe"+209F907: E8 A4 47 00 00 - call SCUM.exe+20A40B0 "SCUM.exe"+209F90C: 48 85 C0 - test rax,rax "SCUM.exe"+209F90F: 74 21 - je SCUM.exe+209F932 // ---------- INJECTING HERE ---------- "SCUM.exe"+209F911: F3 0F 11 38 - movss [rax],xmm7 "SCUM.exe"+209F915: 0F B6 84 24 90 00 00 00 - movzx eax,byte ptr [rsp+00000090] // ---------- DONE INJECTING ---------- "SCUM.exe"+209F91D: 4C 8B CF - mov r9,rdi "SCUM.exe"+209F920: 0F 28 D7 - movaps xmm2,xmm7 "SCUM.exe"+209F923: 88 44 24 20 - mov [rsp+20],al "SCUM.exe"+209F927: 0F 28 CE - movaps xmm1,xmm6 "SCUM.exe"+209F92A: 48 8B CB - mov rcx,rbx "SCUM.exe"+209F92D: E8 EE 28 00 00 - call SCUM.exe+20A2220 "SCUM.exe"+209F932: 48 8B 5C 24 60 - mov rbx,[rsp+60] "SCUM.exe"+209F937: B8 01 00 00 00 - mov eax,00000001 "SCUM.exe"+209F93C: 0F 28 74 24 40 - movaps xmm6,[rsp+40] "SCUM.exe"+209F941: 0F 28 7C 24 30 - movaps xmm7,[rsp+30] } Ссылка на комментарий Поделиться на другие сайты Поделиться
roma912 Опубликовано 5 сентября, 2018 Поделиться Опубликовано 5 сентября, 2018 (изменено) Тебе по сути надо сделать так Взять какой-нибудь пустой регистр pop eax Потом записать туда значение mov eax, (float) 100 Перезаписать значение в указатель movss [rdi+offset], eax Освободить регистр pop eax Изменено 5 сентября, 2018 пользователем roma91212 Ссылка на комментарий Поделиться на другие сайты Поделиться
bes Опубликовано 5 сентября, 2018 Автор Поделиться Опубликовано 5 сентября, 2018 31 минуту назад, roma91212 сказал: Тебе по сути надо сделать так Взять какой-нибудь пустой регистр pop eax Потом записать туда значение mov eax, (float) 100 Перезаписать значение в указатель movss [rdi+offset], eax Освободить регистр pop eax Пишет код не пригоден для инъекции Спойлер [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat aobscanmodule(INJECT,SCUM.exe,F3 0F 11 87 04 1C 00 00 4C) // should be unique alloc(newmem,$1000,"SCUM.exe"+36948A) label(code) label(return) newmem: code: push ebx mov ebx,(float)100 movss [rdi+00001C04],ebx pop ebx jmp return INJECT: jmp newmem nop nop nop return: registersymbol(INJECT) [DISABLE] //code from here till the end of the code will be used to disable the cheat INJECT: db F3 0F 11 87 04 1C 00 00 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "SCUM.exe"+36948A "SCUM.exe"+36945F: 48 8B 8F 30 08 00 00 - mov rcx,[rdi+00000830] "SCUM.exe"+369466: 48 85 C9 - test rcx,rcx "SCUM.exe"+369469: 74 07 - je SCUM.exe+369472 "SCUM.exe"+36946B: E8 A0 B2 02 00 - call SCUM.exe+394710 "SCUM.exe"+369470: EB 03 - jmp SCUM.exe+369475 "SCUM.exe"+369472: 0F 28 C6 - movaps xmm0,xmm6 "SCUM.exe"+369475: F3 0F 10 3D AB C4 F1 01 - movss xmm7,[SCUM.exe+2285928] "SCUM.exe"+36947D: F3 0F 59 C7 - mulss xmm0,xmm7 "SCUM.exe"+369481: 0F 2E 87 04 1C 00 00 - ucomiss xmm0,[rdi+00001C04] "SCUM.exe"+369488: 74 1D - je SCUM.exe+3694A7 // ---------- INJECTING HERE ---------- "SCUM.exe"+36948A: F3 0F 11 87 04 1C 00 00 - movss [rdi+00001C04],xmm0 // ---------- DONE INJECTING ---------- "SCUM.exe"+369492: 4C 8B CF - mov r9,rdi "SCUM.exe"+369495: 48 8B 0D 64 2C ED 02 - mov rcx,[SCUM.exe+323C100] "SCUM.exe"+36949C: 45 33 C0 - xor r8d,r8d "SCUM.exe"+36949F: 0F 28 C8 - movaps xmm1,xmm0 "SCUM.exe"+3694A2: E8 99 06 C0 01 - call SCUM.exe+1F69B40 "SCUM.exe"+3694A7: 48 8B 8F 38 08 00 00 - mov rcx,[rdi+00000838] "SCUM.exe"+3694AE: 48 85 C9 - test rcx,rcx "SCUM.exe"+3694B1: 74 0A - je SCUM.exe+3694BD "SCUM.exe"+3694B3: B2 01 - mov dl,01 "SCUM.exe"+3694B5: E8 D6 BB 05 00 - call SCUM.exe+3C5090 } Ссылка на комментарий Поделиться на другие сайты Поделиться
roma912 Опубликовано 5 сентября, 2018 Поделиться Опубликовано 5 сентября, 2018 1 час назад, bes сказал: Пишет код не пригоден для инъекции Это был лишь элементарный пример как писать скрипт, дальше ты сам должен разобраться и почитать материал Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 5 сентября, 2018 Поделиться Опубликовано 5 сентября, 2018 1 час назад, bes сказал: movss [rdi+00001C04],ebx mov* Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 6 сентября, 2018 Поделиться Опубликовано 6 сентября, 2018 В скрипте явных ошибок не увидел. Посему предполагаю, что, возможно, в игре используется проверка целостности кода. Что можно сделать: 1. Попробовать использовать StealthEdit плагин к СЕ (есть видео на нашем канале) 2. Попробовать поставить брейкпоинт на чтение адреса самой инструкции. Если что-то будет обращаться к адресу инструкции, значит, проверка целостности кода тоже есть (также есть видео на нашем канале). Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 6 сентября, 2018 Поделиться Опубликовано 6 сентября, 2018 18 часов назад, bes сказал: movss [rdi+00001C04],ebx Так низзяяя. По крайней мере одним из операндов должен быть регистр SSE, вторым может быть либо тоже регистр SSE, либо 32-битное расположение в памяти. Поэтому и 18 часов назад, bes сказал: Пишет код не пригоден для инъекции Вот так можно mov [rdi+00001C04],ebx Появилась мысль - сделай мне стандартный СЕ-ный скрипт из вот этой инструкции: "SCUM.exe"+369472: 0F 28 C6 - movaps xmm0,xmm6 Проверим мою мысль. Ссылка на комментарий Поделиться на другие сайты Поделиться
Stigmaer Опубликовано 14 сентября, 2018 Поделиться Опубликовано 14 сентября, 2018 В 06.09.2018 в 07:25, Xipho сказал: 2. Попробовать поставить брейкпоинт на чтение адреса самой инструкции. Если что-то будет обращаться к адресу инструкции, значит, проверка целостности кода тоже есть (также есть видео на нашем канале). Если не затруднит не подскажешь тему видео, или ссылочку, у меня такая же проблема есть, но я хочу сам разобраться. Ссылка на комментарий Поделиться на другие сайты Поделиться
bes Опубликовано 14 сентября, 2018 Автор Поделиться Опубликовано 14 сентября, 2018 В 06.09.2018 в 08:25, Xipho сказал: В скрипте явных ошибок не увидел. Посему предполагаю, что, возможно, в игре используется проверка целостности кода. Что можно сделать: 1. Попробовать использовать StealthEdit плагин к СЕ (есть видео на нашем канале) 2. Попробовать поставить брейкпоинт на чтение адреса самой инструкции. Если что-то будет обращаться к адресу инструкции, значит, проверка целостности кода тоже есть (также есть видео на нашем канале). Я смотрел все видео, также про этот плагин. Тормозит по страшному CE. Может с новой версией CE он не идет. Но я попробую сейчас все варианты что предложили. И отпишусь сразу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 14 сентября, 2018 Поделиться Опубликовано 14 сентября, 2018 1 час назад, Stigmaer сказал: Если не затруднит не подскажешь тему видео, или ссылочку, у меня такая же проблема есть, но я хочу сам разобраться. Затруднит. На нашем канале не так много видео, чтобы среди них потеряться. Подскажу лишь плейлист: "Взлом игр от А до Я". Ссылка на комментарий Поделиться на другие сайты Поделиться
bes Опубликовано 14 сентября, 2018 Автор Поделиться Опубликовано 14 сентября, 2018 Вообщем ребята я сдался и удалил игру. При установки плагина все начало глючить и комп перезагружался, даже удалив плагин все равно начало все тормозить. Если кто взломает, запишите видос если не сложно. Ссылка на комментарий Поделиться на другие сайты Поделиться
Yuzia Опубликовано 14 сентября, 2018 Поделиться Опубликовано 14 сентября, 2018 Топово. А я только недавно SCUM стер :C Что ли, опять перекачивать. :c Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения