Dejavu Опубликовано 18 октября, 2016 Поделиться Опубликовано 18 октября, 2016 Всем доброго времени суток. Решил поиграть в Bionic Commando, ну и соответственно попробовать поковыряться в ней для своей же выгоды. Начал с самого первого уровня, кроме пистолета ничего нет. В кармане 48 патронов. Думаю, ну сделаю бесконечные патроны. Узнал, что они хранятся в типе Float, нашел правильный адрес, изменил значение, заморозил — работает. Затем узнал какая все таки инструкция отвечает за отнятие патронов, занопил ее и получил краш. Пытался писать скрипт — краш. Я так понимаю, это дело рук разработчиков. Ну или у меня руки кривые Никто не сталкивался с подобным? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 октября, 2016 Поделиться Опубликовано 18 октября, 2016 10 минуту назад, Dejavu сказал: Я так понимаю, это дело рук разработчиков. Ну или у меня руки кривые А что гадать, выложите свой скрипт (желательно с Логами), посмотрим Вы ошибаетесь. Ну а если скрипт правильный, то направим дальше - на путь истинный. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 18 октября, 2016 Автор Поделиться Опубликовано 18 октября, 2016 19 минуту назад, Garik66 сказал: А что гадать, выложите свой скрипт (желательно с Логами), посмотрим Вы ошибаетесь. Ну а если скрипт правильный, то направим дальше - на путь истинный. А тут даже дело не в скрипте, от обычного нопа( ставлю с помощью СЕ, а не вручную) крашится. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 октября, 2016 Поделиться Опубликовано 18 октября, 2016 Сделай стандартный СЕ-ный скрипт с аобом и слогами из своей инструкции, нужно посмотреть на код. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 18 октября, 2016 Автор Поделиться Опубликовано 18 октября, 2016 Скрытый текст [ENABLE] aobscanmodule(INJECT,bionic_commando.exe,89 0E 8B 50 04 89 56 04 83 78) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: code: mov [esi],ecx mov edx,[eax+04] jmp return INJECT: jmp code return: registersymbol(INJECT) [DISABLE] //code from here till the end of the code will be used to disable the cheat INJECT: db 89 0E 8B 50 04 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "bionic_commando.exe"+47762F "bionic_commando.exe"+477611: 83 78 04 00 - cmp dword ptr [eax+04],00 "bionic_commando.exe"+477615: 75 08 - jne bionic_commando.exe+47761F "bionic_commando.exe"+477617: 80 4F 06 02 - or byte ptr [edi+06],02 "bionic_commando.exe"+47761B: 33 FF - xor edi,edi "bionic_commando.exe"+47761D: EB 02 - jmp bionic_commando.exe+477621 "bionic_commando.exe"+47761F: 8B F8 - mov edi,eax "bionic_commando.exe"+477621: 85 FF - test edi,edi "bionic_commando.exe"+477623: 0F 85 A3 00 00 00 - jne bionic_commando.exe+4776CC "bionic_commando.exe"+477629: 8B 44 24 24 - mov eax,[esp+24] "bionic_commando.exe"+47762D: 8B 08 - mov ecx,[eax] // ---------- INJECTING HERE ---------- "bionic_commando.exe"+47762F: 89 0E - mov [esi],ecx "bionic_commando.exe"+477631: 8B 50 04 - mov edx,[eax+04] // ---------- DONE INJECTING ---------- "bionic_commando.exe"+477634: 89 56 04 - mov [esi+04],edx "bionic_commando.exe"+477637: 83 78 04 04 - cmp dword ptr [eax+04],04 "bionic_commando.exe"+47763B: 0F 8C B7 00 00 00 - jl bionic_commando.exe+4776F8 "bionic_commando.exe"+477641: 8B 00 - mov eax,[eax] "bionic_commando.exe"+477643: F6 40 05 03 - test byte ptr [eax+05],03 "bionic_commando.exe"+477647: 0F 84 AB 00 00 00 - je bionic_commando.exe+4776F8 "bionic_commando.exe"+47764D: 8A 45 05 - mov al,[ebp+05] "bionic_commando.exe"+477650: A8 04 - test al,04 "bionic_commando.exe"+477652: 0F 84 A0 00 00 00 - je bionic_commando.exe+4776F8 "bionic_commando.exe"+477658: 8B 4B 10 - mov ecx,[ebx+10] } Заменяю mov [esi],ecx На, допустим mov [esi],#42340000 Нажимаю Execute и краш Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 18 октября, 2016 Автор Поделиться Опубликовано 18 октября, 2016 @Garik66 А в чем разница между AOB и простой инъекцией кода? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 октября, 2016 Поделиться Опубликовано 18 октября, 2016 А теперь для интересу, в отладчике ПКМ по этой инструкции: mov [esi],ecx "Найти адреса, к которым обращается инструкция". И отпишитесь о результатах. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 октября, 2016 Поделиться Опубликовано 18 октября, 2016 Только что, Dejavu сказал: @Garik66 А в чем разница между AOB и простой инъекцией кода? В аобскане. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 18 октября, 2016 Автор Поделиться Опубликовано 18 октября, 2016 1 минуту назад, Garik66 сказал: В аобскане. Что это за скан? В чем его преимущество? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 октября, 2016 Поделиться Опубликовано 18 октября, 2016 Только что, Dejavu сказал: Что это за скан? aobscanmodule(INJECT,bionic_commando.exe,89 0E 8B 50 04 89 56 04 83 78) Только что, Dejavu сказал: В чем его преимущество? Допустим вышел патч на Вашу игру, аобскан найдёт адрес Вашей инструкции по сигнатуре. А в простой инъекции, скрипт придётся переписывать, так как скорее всего адрес инструкции сместится. Вы это моё сообщение прочитали? Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 18 октября, 2016 Автор Поделиться Опубликовано 18 октября, 2016 1 минуту назад, Garik66 сказал: Вы это моё сообщение прочитали? Да, сейчас. У меня английская версия программы просто Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 18 октября, 2016 Автор Поделиться Опубликовано 18 октября, 2016 16 минуту назад, Garik66 сказал: И отпишитесь о результатах. Вылезло много адресов, значений и количество их выоплнения Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 октября, 2016 Поделиться Опубликовано 18 октября, 2016 Только что, Dejavu сказал: Вылезло много адресов, значений и количество их выоплнения Так вот - Ваши ошибки: 1. Только что, Dejavu сказал: Вылезло много адресов, значений и количество их выоплнения НУЖЕН ФИЛЬТР. 2. 1 час назад, Dejavu сказал: Узнал, что они хранятся в типе Float, а пишете в адрес: 20 минуты назад, Dejavu сказал: mov [esi],#42340000 хотя нужно писать: mov [esi],(float)45 и удивляетесь после этого - почему у меня вылет? Эхе-хе. Начните заново - посмотрите видео-уроки от Xipho, kenga и мои, тоже посмотрите. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 18 октября, 2016 Автор Поделиться Опубликовано 18 октября, 2016 Хорошо, со скриптом я может и ошибся, но почему обычные нопы на спасают? Почему из-за них краш? Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 18 октября, 2016 Поделиться Опубликовано 18 октября, 2016 Только что, Dejavu сказал: Хорошо, со скриптом я может и ошибся, но почему обычные нопы на спасают? Почему из-за них краш? потому что инструкция работает не только с вашим адресом патронов 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 октября, 2016 Поделиться Опубликовано 18 октября, 2016 Только что, Dejavu сказал: Хорошо, со скриптом я может и ошибся, но почему обычные нопы на спасают? Почему из-за них краш? Вы нопаете, вместе со своим адресом, также и работу инструкции с другими адресами, а скорее всего на ней висит и графика и звук ит.д., и т.п. Вы же сами убедились: 6 минут назад, Dejavu сказал: Вылезло много адресов, значений и количество их выоплнения Отключите (занопайте) в машине двигатель внутреннего сгорания, вместе с допустим с радио и попробуйте проехать. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 18 октября, 2016 Автор Поделиться Опубликовано 18 октября, 2016 2 минуты назад, Garik66 сказал: а пишете в адрес: 26 минуты назад, Dejavu сказал: mov [esi],#42340000 В стеке значение находится в 4 байтах, поэтому я и писал так. Разве разница есть между mov [esi],(float)45 и mov [esi],#42340000 этим? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 октября, 2016 Поделиться Опубликовано 18 октября, 2016 Да есть. Если хотели бы в HEX написать нужно было бы написать прямо так: mov [esi],42340000 без этого значка - # 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 18 октября, 2016 Автор Поделиться Опубликовано 18 октября, 2016 Все, понял. Всем спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 октября, 2016 Поделиться Опубликовано 18 октября, 2016 Только что, Dejavu сказал: Все, понял. Всем спасибо! И Совет - игрушка, которую Вы выбрали, судя по коду, для теперешнего Вашего уровня тяжеловата - сомневаюсь, что Вы сумеете подобрать фильтры. Лучше возьмите для взлома более простые игры. В Вашей игрушке в игровом коде используются LUA-скрипты и соответственно на каждую инструкцию навешено куча адресов (как я писал ранее там и графика и звук и т.д. и т.п.) Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 18 октября, 2016 Автор Поделиться Опубликовано 18 октября, 2016 2 минуты назад, Garik66 сказал: И Совет - игрушка, которую Вы выбрали, судя по коду, для теперешнего Вашего уровня тяжеловата - сомневаюсь, что Вы сумеете подобрать фильтры. Лучше возьмите для взлома более простые игры. В Вашей игрушке в игровом коде используются LUA-скрипты и соответственно на каждую инструкцию навешено куча адресов (как я писал ранее там и графика и звук и т.д. и т.п.) Все нормально, попытка — не пытка Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 18 октября, 2016 Автор Поделиться Опубликовано 18 октября, 2016 4 минуты назад, Garik66 сказал: И Совет - игрушка, которую Вы выбрали, судя по коду, для теперешнего Вашего уровня тяжеловата - сомневаюсь, что Вы сумеете подобрать фильтры Я предполагаю, что нужно положить в стек значение esi, если он будет совпадать с адресом моих патрон, то не буду убавлять их Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 октября, 2016 Поделиться Опубликовано 18 октября, 2016 4 минуты назад, Dejavu сказал: Все нормально, попытка — не пытка Тогда удачи, но видео наши посмотрите. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 октября, 2016 Поделиться Опубликовано 18 октября, 2016 3 минуты назад, Dejavu сказал: Я предполагаю, что нужно положить в стек значение esi, если он будет совпадать с адресом моих патрон, то не буду убавлять их Дерзайте, только откуда вы возьмёте адрес патронов для сравнения? Или адреса в игре статические? Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 18 октября, 2016 Автор Поделиться Опубликовано 18 октября, 2016 3 минуты назад, Garik66 сказал: Дерзайте, только откуда вы возьмёте адрес патронов для сравнения? Или адреса в игре статические? Да, я это понимаю. Но одноразовый рабочий скрипт, написанный мной — уже радость. Сейчас же мне известен адрес моих патронов, после перезапуска уже неизвестен будет. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения