ReWanet Опубликовано 15 декабря, 2017 Поделиться Опубликовано 15 декабря, 2017 Ребят не много тупости с моей стороны -> Решил вызывать функцию создания объектов в игре но для начала пошел тренироваться на туторе CE x32. Передаю все вроде-то коротко вот код: Скрытый текст [ENABLE] aobscanmodule(Health,Tutorial-i386.exe+23CC3,81xxxxxxxxxxxxxxxxxx75xx8bxxxxxxxxxxb2xx8bxxxxxxxxxx8bxxffxxxxxxxxxx8bxxxxxxxxxxb2xx8bxxxxxxxxxx8bxxffxxxxxxxxxxxxxx00xx00xxxx89) alloc(newmem,$1000,Tutorial-i386.exe+23CC3) label(code) label(return) label(pHealth) globalalloc(pHealth,4) newmem: mov [pHealth],ebx cmp [ebx+00000480],000003E8 mov eax,#9999 code: jmp return pHealth: dd 0 Health: jmp newmem db 90 90 90 90 90 return: registersymbol(Health) registersymbol(pHealth) [DISABLE] Health: db 81 BB 80 04 00 00 E8 03 00 00 unregistersymbol(Health) unregistersymbol(pHealth) dealloc(newmem) dealloc(pHealth) { // ---------- INJECTING HERE ----------- Tutorial-i386.exe+23CC3: 81 BB 80040000 E8030000 - cmp [ebx+00000480],000003E8 // ---------- DONE INJECTING ---------- } Сам код: Скрытый текст [ENABLE] alloc(MyCode,1024) registersymbol(MyCode) CreateThread(MyCode) MyCode: mov eax,#123456 mov ebx,[pHealth] push ebx push eax call 00423B00 ret [DISABLE] unregistersymbol(MyCode) dealloc(mycode) Передаю точно все нужное скрипт активируется число пишется лавеха мутится но тутор дропается через 30-60 секунд. Возможно я что-то не так делаю ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 декабря, 2017 Поделиться Опубликовано 15 декабря, 2017 @ReWanet Выпиши себе пред Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 15 декабря, 2017 Автор Поделиться Опубликовано 15 декабря, 2017 1 минуту назад, Garik66 сказал: Выпиши себе пред Если бы мог то выписал ) Так ведь ты можешь! Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 декабря, 2017 Поделиться Опубликовано 15 декабря, 2017 Только что, ReWanet сказал: можешь не - не умею. Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 15 декабря, 2017 Автор Поделиться Опубликовано 15 декабря, 2017 Только что, Garik66 сказал: не - не умею. Это хорошо а то потом бы не отделался! Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 декабря, 2017 Поделиться Опубликовано 15 декабря, 2017 13 минуты назад, ReWanet сказал: что-то Это для какого шага туториала? что у тебя в [pHealth]? (если в другом скрипте объявляешь . то кинь сюда тоже dealloc(mycode) почему my а не My? call 00423B00 Мне кажется ты опкод разорвал: Tutorial-i386.exe+23B02 - 89 C6 - mov esi,eax Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 15 декабря, 2017 Автор Поделиться Опубликовано 15 декабря, 2017 13 минуты назад, Garik66 сказал: Это для какого шага туториала? Первый ( когда пост переделал забыл дописать ). Там где 100 hp в 4byte и надо 1000 заморозить. x32 тутор. 13 минуты назад, Garik66 сказал: что у тебя в [pHealth]? (если в другом скрипте объявляешь . то кинь сюда тоже Скрытый текст [ENABLE] aobscanmodule(Health,Tutorial-i386.exe+23CC3,81xxxxxxxxxxxxxxxxxx75xx8bxxxxxxxxxxb2xx8bxxxxxxxxxx8bxxffxxxxxxxxxx8bxxxxxxxxxxb2xx8bxxxxxxxxxx8bxxffxxxxxxxxxxxxxx00xx00xxxx89) alloc(newmem,$1000,Tutorial-i386.exe+23CC3) label(code) label(return) label(pHealth) globalalloc(pHealth,4) newmem: mov [pHealth],ebx cmp [ebx+00000480],000003E8 mov eax,#9999 code: jmp return pHealth: dd 0 Health: jmp newmem db 90 90 90 90 90 return: registersymbol(Health) registersymbol(pHealth) [DISABLE] Health: db 81 BB 80 04 00 00 E8 03 00 00 unregistersymbol(Health) unregistersymbol(pHealth) dealloc(newmem) dealloc(pHealth) { // ---------- INJECTING HERE ----------- Tutorial-i386.exe+23CC3: 81 BB 80040000 E8030000 - cmp [ebx+00000480],000003E8 // ---------- DONE INJECTING ---------- } Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 декабря, 2017 Поделиться Опубликовано 15 декабря, 2017 @ReWanetа что ты хотел своим скриптом сделать для туториала? чтобы кнопочка активировалась? Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 15 декабря, 2017 Автор Поделиться Опубликовано 15 декабря, 2017 8 минут назад, Garik66 сказал: @ReWanetа что ты хотел своим скриптом сделать для туториала? чтобы кнопочка активировалась? Не.. Это же запись числа ( Health ). Я просто передаю другое число в функцию и все. Без разницы что делаю мне важен сам факт вызова функции. Видео: Скрытый текст Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 декабря, 2017 Поделиться Опубликовано 15 декабря, 2017 4 минуты назад, ReWanet сказал: Не.. У меня версия СЕ 6.5. У тебя другая и там смещены инструкции. Ты не можешь кинуть какие у тебя окоды начиная с этого адреса call 00423B00 наверное это начало функции. Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 15 декабря, 2017 Автор Поделиться Опубликовано 15 декабря, 2017 1 минуту назад, Garik66 сказал: У меня версия СЕ 6.5. У тебя другая и там смещены инструкции. Смотри первый код ( где я делаю [pHealth] ) это инструкция проверки задания ( cmp [eax+xx],3E8 что-то такое ) А вызываю я функцию которая записывает число в [eax+xx] после вычитания когда жмем Hit Me. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 декабря, 2017 Поделиться Опубликовано 15 декабря, 2017 4 минуты назад, ReWanet сказал: А вызываю я Т ы меня не понял, мне нужно у себя увидеть куда ты прыгаешь..Я попробовал пересчитать твои адреса на адреса инструкций для моей версии, но там какая то лабуда. Можешь показать, что у тебя находиться на адресе 00423B00 в отладчике.В ТАКОМ ВИДЕ: Скрытый текст Tutorial-i386.exe+238FC - E8 0F9BFEFF - call Tutorial-i386.exe+D410 Tutorial-i386.exe+23901 - E8 1AB6FEFF - call Tutorial-i386.exe+EF20 Tutorial-i386.exe+23906 - 50 - push eax Tutorial-i386.exe+23907 - 85 C0 - test eax,eax Tutorial-i386.exe+23909 - 75 65 - jne Tutorial-i386.exe+23970 Tutorial-i386.exe+2390B - B8 05000000 - mov eax,00000005 { 5 } Tutorial-i386.exe+23910 - E8 5BADFEFF - call Tutorial-i386.exe+E670 Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 15 декабря, 2017 Поделиться Опубликовано 15 декабря, 2017 (изменено) 1 час назад, ReWanet сказал: 30-60 секунд. Раз уверен, что все передается правильно, то проблема скорее всего в уничтожении потока. Возможно, функция которую ты вызываешь не завершается, а зацикливается и после уничтожения потока крашит программу. И в скрипте разве не ret 8 нужно использовать для возврата? Иначе стек не очищается от твоих переданных значений. зы хотя не, там вызов сам должен очищать его. Изменено 15 декабря, 2017 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 15 декабря, 2017 Автор Поделиться Опубликовано 15 декабря, 2017 7 минут назад, Garik66 сказал: Т ы меня не понял, мне нужно у себя увидеть куда ты прыгаешь. Скрытый текст Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 декабря, 2017 Поделиться Опубликовано 15 декабря, 2017 @ReWanet, СЕНК щас попробую у себя замутить. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 декабря, 2017 Поделиться Опубликовано 15 декабря, 2017 2 часа назад, ReWanet сказал: Возможно я что-то не так делаю ? Почитай пока это и ссылки - ТЫК может поможет. Лично у меня пока до сих пор ни разу не получилось вызвать поток без вылета, в голове пока не укладывается какие аргументы нужно передавать. Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 15 декабря, 2017 Автор Поделиться Опубликовано 15 декабря, 2017 2 часа назад, Garik66 сказал: Почитай пока это и ссылки - ТЫК может поможет. Да там вроде ничего такого нет. Я вот по быстрому накидал консольный калькулятор и вызываю и все на ура и без вылетов. Скорее всего либо что-то не передал либо что-то с стеком. Ну как обычно ручки из попки Ссылка на комментарий Поделиться на другие сайты Поделиться
vagingameh Опубликовано 16 декабря, 2017 Поделиться Опубликовано 16 декабря, 2017 Подписался на вашу тему, ибо такое мне сейчас жизненно необходимо: В 30.11.2017 в 21:31, partoftheworlD сказал: Проверяешь, находишь нужную функцию. И вызываешь её удаленным потоком. Если кто научиться идеально делать так, чтоб не вылетало при вызове функций - дайте знать! Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 17 декабря, 2017 Поделиться Опубликовано 17 декабря, 2017 2 часа назад, vagingameh сказал: Если кто научиться идеально делать так, чтоб не вылетало при вызове функций - дайте знать! определи из-за чего вылет, неверно переданные аргументы или же проблема со стеком. Вроде как в вызове функций ничего сложного нет. Ссылка на комментарий Поделиться на другие сайты Поделиться
srg91 Опубликовано 17 декабря, 2017 Поделиться Опубликовано 17 декабря, 2017 12 hours ago, vagingameh said: Если кто научиться идеально делать так, чтоб не вылетало при вызове функций - дайте знать! Возможно тебе нужно: 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения