mumut Опубликовано 7 февраля, 2019 Поделиться Опубликовано 7 февраля, 2019 (изменено) Сначала я делал скрипт на "Новый уровень при убийстве" когда я его сделал оказалось что инструкция на которую я сделал скрипт была привязана и к скрипту "Бесконечное здоровье".Но я нашел выход, сделать скрипт на "Бесконечное здоровье" чуть выше чем он был до этого.В итоге оказалось что сканер сигнатур захватывает ту часть байтов которая изменяется.Вопрос теперь в том как сделать так что бы скрипт на "Новый уровень при убийстве" и "Бесконечное здоровье" работали. Скрипт на "Новый уровень при убийстве" Спойлер { Game : Borderlands2.exe Version: Date : 2019-02-07 Author : mumut This script does blah blah blah } [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat aobscanmodule(New_level_with_every_kill,Borderlands2.exe,F3 0F 11 46 6C 8B 0D) // should be unique aobscanmodule(Level,Borderlands2.exe,F3 0F 10 4F 6C 0F 5B) alloc(newmem,$1000) label(newmem2) label(code) label(code2) label(return) label(return2) label(Level_up) registersymbol(New_level_with_every_kill) registersymbol(Level) newmem: cmp [esi+B0],(float)45 jne code cmp [esi+6C],(float)0 jne code inc [Level_up] code: movss [esi+6C],xmm0 jmp return newmem2: cmp [Level_up],1 jne code2 mov [Level_up],0 cvtdq2ps xmm0,xmm0 movss [edi+6C],xmm0 code2: movss xmm1,[edi+6C] jmp return2 Level_up: dd 0 New_level_with_every_kill: jmp newmem return: Level: jmp newmem2 return2: [DISABLE] //code from here till the end of the code will be used to disable the cheat New_level_with_every_kill: db F3 0F 11 46 6C Level: db F3 0F 10 4F 6C unregistersymbol(New_level_with_every_kill) unregistersymbol(Level) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "Borderlands2.exe"+A189C2 "Borderlands2.exe"+A189A7: 76 07 - jna Borderlands2.exe+A189B0 "Borderlands2.exe"+A189A9: F3 0F 11 4E 6C - movss [esi+6C],xmm1 "Borderlands2.exe"+A189AE: EB 17 - jmp Borderlands2.exe+A189C7 "Borderlands2.exe"+A189B0: 0F 2F C8 - comiss xmm1,xmm0 "Borderlands2.exe"+A189B3: 76 05 - jna Borderlands2.exe+A189BA "Borderlands2.exe"+A189B5: 0F 28 C1 - movaps xmm0,xmm1 "Borderlands2.exe"+A189B8: EB 08 - jmp Borderlands2.exe+A189C2 "Borderlands2.exe"+A189BA: 0F 2F D0 - comiss xmm2,xmm0 "Borderlands2.exe"+A189BD: 77 03 - ja Borderlands2.exe+A189C2 "Borderlands2.exe"+A189BF: 0F 28 C2 - movaps xmm0,xmm2 // ---------- INJECTING HERE ---------- "Borderlands2.exe"+A189C2: F3 0F 11 46 6C - movss [esi+6C],xmm0 // ---------- DONE INJECTING ---------- "Borderlands2.exe"+A189C7: 8B 0D 44 FD F9 02 - mov ecx,[Borderlands2.exe+1EEFD44] "Borderlands2.exe"+A189CD: 85 C9 - test ecx,ecx "Borderlands2.exe"+A189CF: 74 0F - je Borderlands2.exe+A189E0 "Borderlands2.exe"+A189D1: E8 FA 99 1B 00 - call Borderlands2.exe+BD23D0 "Borderlands2.exe"+A189D6: D9 5D 08 - fstp dword ptr [ebp+08] "Borderlands2.exe"+A189D9: F3 0F 10 45 08 - movss xmm0,[ebp+08] "Borderlands2.exe"+A189DE: EB 03 - jmp Borderlands2.exe+A189E3 "Borderlands2.exe"+A189E0: 0F 57 C0 - xorps xmm0,xmm0 "Borderlands2.exe"+A189E3: 8B 16 - mov edx,[esi] "Borderlands2.exe"+A189E5: 8B 82 70 01 00 00 - mov eax,[edx+00000170] } { // ORIGINAL CODE - INJECTION POINT: "Borderlands2.exe"+9CEC87 "Borderlands2.exe"+9CEC5F: 0F 84 E9 00 00 00 - je Borderlands2.exe+9CED4E "Borderlands2.exe"+9CEC65: 8B 86 94 01 00 00 - mov eax,[esi+00000194] "Borderlands2.exe"+9CEC6B: 53 - push ebx "Borderlands2.exe"+9CEC6C: 50 - push eax "Borderlands2.exe"+9CEC6D: E8 BE 87 6A FF - call Borderlands2.exe+77430 "Borderlands2.exe"+9CEC72: 8B D8 - mov ebx,eax "Borderlands2.exe"+9CEC74: 83 C4 04 - add esp,04 "Borderlands2.exe"+9CEC77: 85 DB - test ebx,ebx "Borderlands2.exe"+9CEC79: 0F 84 CE 00 00 00 - je Borderlands2.exe+9CED4D "Borderlands2.exe"+9CEC7F: 66 0F 6E 83 5C 02 00 00 - movd xmm0,[ebx+0000025C] // ---------- INJECTING HERE ---------- "Borderlands2.exe"+9CEC87: F3 0F 10 4F 6C - movss xmm1,[edi+6C] // ---------- DONE INJECTING ---------- "Borderlands2.exe"+9CEC8C: 0F 5B C0 - cvtdq2ps xmm0,xmm0 "Borderlands2.exe"+9CEC8F: 0F 2F C8 - comiss xmm1,xmm0 "Borderlands2.exe"+9CEC92: C7 45 F8 00 00 00 00 - mov [ebp-08],00000000 "Borderlands2.exe"+9CEC99: 0F 82 9D 00 00 00 - jb Borderlands2.exe+9CED3C "Borderlands2.exe"+9CEC9F: 90 - nop "Borderlands2.exe"+9CECA0: 83 BB 5C 02 00 00 00 - cmp dword ptr [ebx+0000025C],00 "Borderlands2.exe"+9CECA7: 7E 70 - jle Borderlands2.exe+9CED19 "Borderlands2.exe"+9CECA9: 8B CE - mov ecx,esi "Borderlands2.exe"+9CECAB: E8 F0 19 49 00 - call Borderlands2.exe+E606A0 "Borderlands2.exe"+9CECB0: 39 83 58 02 00 00 - cmp [ebx+00000258],eax } Скрипт на "Бесконечное здоровье" Спойлер { Game : Borderlands2.exe Version: Date : 2019-02-07 Author : mumut This script does blah blah blah } [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat aobscanmodule(Infinite_health,Borderlands2.exe,0F 2F D0 77 03 0F 28 C2 F3 0F 11 46 6C 8B) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: cmp [esi+B0],(float)0.5 jne code jmp return code: comiss xmm2,xmm0 ja Borderlands2.exe+A189C2 jmp return Infinite_health: jmp newmem return: registersymbol(Infinite_health) [DISABLE] //code from here till the end of the code will be used to disable the cheat Infinite_health: db 0F 2F D0 77 03 unregistersymbol(Infinite_health) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "Borderlands2.exe"+A189BA "Borderlands2.exe"+A1899B: F3 0F 2A D1 - cvtsi2ss xmm2,ecx "Borderlands2.exe"+A1899F: F3 0F 10 4E 44 - movss xmm1,[esi+44] "Borderlands2.exe"+A189A4: 0F 2F CB - comiss xmm1,xmm3 "Borderlands2.exe"+A189A7: 76 07 - jna Borderlands2.exe+A189B0 "Borderlands2.exe"+A189A9: F3 0F 11 4E 6C - movss [esi+6C],xmm1 "Borderlands2.exe"+A189AE: EB 17 - jmp Borderlands2.exe+A189C7 "Borderlands2.exe"+A189B0: 0F 2F C8 - comiss xmm1,xmm0 "Borderlands2.exe"+A189B3: 76 05 - jna Borderlands2.exe+A189BA "Borderlands2.exe"+A189B5: 0F 28 C1 - movaps xmm0,xmm1 "Borderlands2.exe"+A189B8: EB 08 - jmp Borderlands2.exe+A189C2 // ---------- INJECTING HERE ---------- "Borderlands2.exe"+A189BA: 0F 2F D0 - comiss xmm2,xmm0 "Borderlands2.exe"+A189BD: 77 03 - ja Borderlands2.exe+A189C2 // ---------- DONE INJECTING ---------- "Borderlands2.exe"+A189BF: 0F 28 C2 - movaps xmm0,xmm2 "Borderlands2.exe"+A189C2: F3 0F 11 46 6C - movss [esi+6C],xmm0 "Borderlands2.exe"+A189C7: 8B 0D 44 FD D0 02 - mov ecx,[Borderlands2.exe+1EEFD44] "Borderlands2.exe"+A189CD: 85 C9 - test ecx,ecx "Borderlands2.exe"+A189CF: 74 0F - je Borderlands2.exe+A189E0 "Borderlands2.exe"+A189D1: E8 FA 99 1B 00 - call Borderlands2.exe+BD23D0 "Borderlands2.exe"+A189D6: D9 5D 08 - fstp dword ptr [ebp+08] "Borderlands2.exe"+A189D9: F3 0F 10 45 08 - movss xmm0,[ebp+08] "Borderlands2.exe"+A189DE: EB 03 - jmp Borderlands2.exe+A189E3 "Borderlands2.exe"+A189E0: 0F 57 C0 - xorps xmm0,xmm0 } Вот эти байты: Спойлер F3 0F 11 46 6C 8B Изменено 7 февраля, 2019 пользователем mumut Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 7 февраля, 2019 Поделиться Опубликовано 7 февраля, 2019 Найти сигнатуру для поиска вручную, байты которые изменяются можешь обозначить ? или *, тогда CE будет принимать любые байты там, но при этом ты должен сохранить уникальность сигнатуры. Ссылка на комментарий Поделиться на другие сайты Поделиться
mumut Опубликовано 7 февраля, 2019 Автор Поделиться Опубликовано 7 февраля, 2019 А можешь показать пример а то я никогда не делал сигнатуры.Это мой первый опыт. Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 7 февраля, 2019 Поделиться Опубликовано 7 февраля, 2019 (изменено) 8 минут назад, mumut сказал: А можешь показать пример Например у тебя в коде есть какая нибудь сигнатура допустим (случайные числа) 23 7B 26 22, CE ищет эту сигнатуру. У тебя есть ещё один скрипт, он при поиске использует её же. Первый скрипт изменяет сигнатуру своим jmp *название метки*. Например он меняет первые 2 байта. (23 7B). Тебе надо найти вторые 2 байта и туда поставить скрипт, но первые байты изменены. Вместо этих байтов ставишь ** ** 26 22. Но так сигнатура может потерять свою уникальность, потому смотришь что есть выше в отладчике - например A5. Добавляешь A5 ** ** 26 22. Проверяешь поиском - уникально - используешь. Но вообще не стоит делать 2 скрипта которые работают в одном месте, сделай всё в одном скрипте. И к тому же, у тебя один скрипт может перезаписывать кусок jmp от другого, скорее всего будет просто вылет программы. Изменено 7 февраля, 2019 пользователем inaginary Ссылка на комментарий Поделиться на другие сайты Поделиться
mumut Опубликовано 7 февраля, 2019 Автор Поделиться Опубликовано 7 февраля, 2019 13 минут назад, inaginary сказал: скорее всего будет просто вылет программы. Не я смотрел когда я включал сначала "Бесконечное здоровье" а потом "Новый уровень при убийстве" то ничего не вылетало.А когда наоборот то "Бесконечное здоровье" не включалась из за того что байты поменялись.То есть я могу попробовать сделать так "aobscanmodule(Infinite_health,Borderlands2.exe,0F 2F D0 77 03 0F 28 C2 ** ** ** ** ** 8B)" и есть шанс что все будет работать ? Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 7 февраля, 2019 Поделиться Опубликовано 7 февраля, 2019 Только что, mumut сказал: То есть я могу попробовать сделать так Да , вижу у тебя не пересекаются jmp. А так ты можешь сделать, только смотри что бы сигнатура осталась уникальной. Ссылка на комментарий Поделиться на другие сайты Поделиться
mumut Опубликовано 7 февраля, 2019 Автор Поделиться Опубликовано 7 февраля, 2019 7 минут назад, inaginary сказал: уникальной. А как понять что сигнатура уникальная ? Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 7 февраля, 2019 Поделиться Опубликовано 7 февраля, 2019 (изменено) 4 минуты назад, mumut сказал: А как понять что сигнатура уникальная ? Ставишь тип поиска Array of byte (Массив байт) ставишь "без разницы" в Writable и CopyOnWrite (синие квадратики вместо галочки), ставишь галочку hex у строки поиска, вставляешь массив и ищешь. Дам тебе ещё совет как там можно очень просто реализовать бесконечные патроны. Замени в своём скрипте ja Borderlands2.exe+A189C2 На jb Borderlands2.exe+A189C2 Только это еще сделает врагов бессмертными, и тебя ? Изменено 7 февраля, 2019 пользователем inaginary Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 7 февраля, 2019 Поделиться Опубликовано 7 февраля, 2019 5 минут назад, inaginary сказал: Ставишь тип поиска Array of byte (Массив байт) p.s в настройках сканирования выбрать модуль в котором надо искать сигнатуру. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 7 февраля, 2019 Поделиться Опубликовано 7 февраля, 2019 6 часов назад, inaginary сказал: Найти сигнатуру для поиска вручную Ребят ну причем здесь сигнатура. Зачем лепить костыли. Неужели нельзя просто сделать от одной инструкции и скрипт на здоровье и флаг для поднятия уровня? Проблем же нет. 6 часов назад, mumut сказал: inc [Level_up] @mumut, это не правильно. Это в данном случае прокатило благодаря моему второму скрипту на поднятие уровня, где флаг обнуляется. Правильно будет именно присвоить значение флагу 1, т.е. mov [Level_up],1 Короче, если до выходных не сделаешь и, если кто-нить не поможет, в воскресение сделаю с пояснениями. (пятница и суббота рабочие у меня). Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 7 февраля, 2019 Поделиться Опубликовано 7 февраля, 2019 11 часов назад, mumut сказал: что сканер сигнатур захватывает ту часть байтов Не совсем понял, что ты там задумал. Отвечаю лишь на вопрос... И так.. как вариант: 1) Делай полную иньекцию.. Он скопирует всего лишь 5 байт.. 2) Пропускай 5 меняющихся байт звездочками. 3) Бери сигнатуру в плюс.. а не по коду в низ.. То есть... Спойлер "Borderlands2.exe"+A189A9: F3 0F 11 4E 6C - movss [esi+6C],xmm1 "Borderlands2.exe"+A189AE: EB 17 - jmp Borderlands2.exe+A189C7 "Borderlands2.exe"+A189B0: 0F 2F C8 - comiss xmm1,xmm0 "Borderlands2.exe"+A189B3: 76 05 - jna Borderlands2.exe+A189BA "Borderlands2.exe"+A189B5: 0F 28 C1 - movaps xmm0,xmm1 "Borderlands2.exe"+A189B8: EB 08 - jmp Borderlands2.exe+A189C2 // ---------- INJECTING HERE ---------- "Borderlands2.exe"+A189BA: 0F 2F D0 - comiss xmm2,xmm0 "Borderlands2.exe"+A189BD: 77 03 - ja Borderlands2.exe+A189C2 F3 0F 11 4E 6C EB 17 0F 2F C8 76 05 0F 28 C1 EB 08 0F 2F D0 77 03 Сигнатура будет такая.. Читать будет с верху в низ.. Естественно укажешь +17 байт в 11h и всё. А то есть. Infinite_health+11: jmp newmem return: registersymbol(Infinite_health) [DISABLE] Infinite_health+11: db 0F 2F D0 77 03 Ps: Не обзяательно писать все байты.. Пусть сигнатура будет хоть в +400 байт.. Главное указать от куда и что бы была уникальность. Вот как пример ещо.. Я ведь не писал все байты в строку.. А взял всего 13 байтов с самого верха.. Они уникальны (в своём роде) а до места ещо сам видишь 30 байт до нужного.. Так что писать все байты не обязательно. Так же можешь брать байты и с низу в минус уже... Вот как пример тут в плюс... В минус думаю догадываешься как писать... Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения