SergBrNord Опубликовано 14 октября, 2017 Поделиться Опубликовано 14 октября, 2017 Салют всем. Я тут внезапно понял, что упустил один аспект. Вот есть заготовка под скрипт: Скрытый текст { Game : game.exe Version: 1.2 Date : 2017-10-14 Author : SergBrNord } [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat aobscanmodule(INJECT,ailogic.dll,00 D9 96 A8 00 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: code: fst dword ptr [esi+000000A8] jmp return INJECT+01: jmp newmem nop return: registersymbol(INJECT) [DISABLE] //code from here till the end of the code will be used to disable the cheat INJECT+01: db D9 96 A8 00 00 00 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "ailogic.dll"+924B1 "ailogic.dll"+92487: BA 01 00 00 00 - mov edx,00000001 "ailogic.dll"+9248C: 8A 04 01 - mov al,[ecx+eax] "ailogic.dll"+9248F: 88 44 24 68 - mov [esp+68],al "ailogic.dll"+92493: 8B 4C 24 68 - mov ecx,[esp+68] "ailogic.dll"+92497: 81 E1 FF 00 00 00 - and ecx,000000FF "ailogic.dll"+9249D: 2B D1 - sub edx,ecx "ailogic.dll"+9249F: 89 54 24 68 - mov [esp+68],edx "ailogic.dll"+924A3: DB 44 24 68 - fild dword ptr [esp+68] "ailogic.dll"+924A7: D8 4C 24 60 - fmul dword ptr [esp+60] "ailogic.dll"+924AB: D8 AE A8 00 00 00 - fsubr dword ptr [esi+000000A8] // ---------- INJECTING HERE ---------- "ailogic.dll"+924B1: D9 96 A8 00 00 00 - fst dword ptr [esi+000000A8] // ---------- DONE INJECTING ---------- "ailogic.dll"+924B7: D8 1D 3C DD AB 03 - fcomp dword ptr [ailogic.dll+1CDD3C] "ailogic.dll"+924BD: DF E0 - fnstsw ax "ailogic.dll"+924BF: F6 C4 41 - test ah,41 "ailogic.dll"+924C2: 0F 85 C6 00 00 00 - jne ailogic.dll+9258E "ailogic.dll"+924C8: A1 44 64 C2 03 - mov eax,[ailogic.dll+336444] "ailogic.dll"+924CD: 80 3C 38 01 - cmp byte ptr [eax+edi],01 "ailogic.dll"+924D1: 0F 84 B7 00 00 00 - je ailogic.dll+9258E "ailogic.dll"+924D7: 8B 06 - mov eax,[esi] "ailogic.dll"+924D9: 8B CE - mov ecx,esi "ailogic.dll"+924DB: FF 90 A4 01 00 00 - call dword ptr [eax+000001A4] } Пошатавшись по форуму CE, я выяснил, что итоговый код должен выглядеть как-то так: Скрытый текст { Game : game.exe Version: 1.2 Date : 2017-10-14 Author : SergBrNord } [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat aobscanmodule(INJECT,ailogic.dll,00 D9 96 A8 00 00 00) // should be unique registersymbol(INJECT) INJECT+01: db 90 90 90 90 90 90 [DISABLE] //code from here till the end of the code will be used to disable the cheat INJECT+01: db D9 96 A8 00 00 00 unregistersymbol(INJECT) { // ORIGINAL CODE - INJECTION POINT: "ailogic.dll"+924B1 "ailogic.dll"+92487: BA 01 00 00 00 - mov edx,00000001 "ailogic.dll"+9248C: 8A 04 01 - mov al,[ecx+eax] "ailogic.dll"+9248F: 88 44 24 68 - mov [esp+68],al "ailogic.dll"+92493: 8B 4C 24 68 - mov ecx,[esp+68] "ailogic.dll"+92497: 81 E1 FF 00 00 00 - and ecx,000000FF "ailogic.dll"+9249D: 2B D1 - sub edx,ecx "ailogic.dll"+9249F: 89 54 24 68 - mov [esp+68],edx "ailogic.dll"+924A3: DB 44 24 68 - fild dword ptr [esp+68] "ailogic.dll"+924A7: D8 4C 24 60 - fmul dword ptr [esp+60] "ailogic.dll"+924AB: D8 AE A8 00 00 00 - fsubr dword ptr [esi+000000A8] // ---------- INJECTING HERE ---------- "ailogic.dll"+924B1: D9 96 A8 00 00 00 - fst dword ptr [esi+000000A8] // ---------- DONE INJECTING ---------- "ailogic.dll"+924B7: D8 1D 3C DD AB 03 - fcomp dword ptr [ailogic.dll+1CDD3C] "ailogic.dll"+924BD: DF E0 - fnstsw ax "ailogic.dll"+924BF: F6 C4 41 - test ah,41 "ailogic.dll"+924C2: 0F 85 C6 00 00 00 - jne ailogic.dll+9258E "ailogic.dll"+924C8: A1 44 64 C2 03 - mov eax,[ailogic.dll+336444] "ailogic.dll"+924CD: 80 3C 38 01 - cmp byte ptr [eax+edi],01 "ailogic.dll"+924D1: 0F 84 B7 00 00 00 - je ailogic.dll+9258E "ailogic.dll"+924D7: 8B 06 - mov eax,[esi] "ailogic.dll"+924D9: 8B CE - mov ecx,esi "ailogic.dll"+924DB: FF 90 A4 01 00 00 - call dword ptr [eax+000001A4] } У меня несколько вопросов: Адекватно ли я заменил? =) Будет ли "INJECT+01" нормально работать, т.к. в примерах на CE такого не рассматривалось? Можно ли в данном случае убрать из секции [ENABLE] всё под меткой "code" и в секцию "newmem" вставить инструкции "nop"? Если способ сделать эти действия (правка секций ручками) немного более автоматизированными? Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 14 октября, 2017 Поделиться Опубликовано 14 октября, 2017 nop = 90 ( byte ) Чтобы вписать nop нужно вписать nop xD Либо в виде строки -> nop Либо в виде байт -> db 90 Примечание: кол-во нопов должно быть равно кол-во байт инструкции. 1. Да. 2. Почему нет? Это же обычная сигнатура. Просто при активации ищется сигнатура и делается прыжок на 1 байт и после уже происходит инъекция. 3. Ты можешь убрать все но оставить лишь эти вещи -> Скрытый текст [ENABLE] aobscanmodule(INJECT,ailogic.dll,00 D9 96 A8 00 00 00) INJECT+01: db 90 90 90 90 90 90 registersymbol(INJECT) [DISABLE] INJECT+01: db D9 96 A8 00 00 00 unregistersymbol(INJECT) 4. Да. Пиши скрипт для CE. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 октября, 2017 Поделиться Опубликовано 15 октября, 2017 11 час назад, SergBrNord сказал: Если способ сделать эти действия (правка секций ручками) немного более автоматизированными? В плагине, я добавлял этот скрипт. (см. п.6 - там как раз примеры скриптов с nop) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения