pia3333 Опубликовано 22 июня, 2012 Поделиться Опубликовано 22 июня, 2012 Итак, у меня есть такая функция с вставкой асмы:int Funk(void){_asm{push ebp************mov esp, ebppop ebpretn}}Мне надо написать так, чтобы код, который должен быть место звёздочек менялся во время работы(его задавал юзер!)Кто может подсказать, как кода юзера преобразовать в нормальный код? Ну ведь нельзя же просто char всунуть, в котором будет его текст Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 23 июня, 2012 Поделиться Опубликовано 23 июня, 2012 >> Кто может подсказать, как кода юзера преобразовать в нормальный код?Может быть ты ожидаешь какую-то оригинальную подсказку или супер идею. Думаю, я тебя разочарую. Если Юзер дожен вводить Асм-код в текстовом представлении, то тебе нужно написать программу, которая Асм-код преобразует в байт код и записывает по известному адресу последовательность байт-кода. Возможно тебе придётся использовать какой-то компилятор или писать свой для наиболее важных машинных инструкций. Чтобы найти "Адреса", то их можно маркировать какой-нибудь последовательностью байт.Если ты не смог додуматься до решения таким образом, может быть тебе и не стоит пытаться реализовать эту идею. Её реализация может занять у тебя много времени. Альтернатива - использовать Cheat Engine АА- и Lua - скрипты. Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 23 июня, 2012 Поделиться Опубликовано 23 июня, 2012 Для начала я посоветую посмотреть, как это в СЕ реализовано. У меня идей особо нет, если навскидку - вряд ли можно таким макаром представить массив строчек, да ещё и выполнить.UPD: Нагуглил вот такой вид записи:asm("assembly code");Т.е. как-то вот так, возможно, сработает:string myAsm [5] = { "mov %eax, $10", "mov %ebx, %eax" };for(int i = 0; i <= strlen(myAsm); i++) {asm(myAsm[i]);} PS: Но вообще это больше на бред похоже, если заниматься таким в рантайме - инструкции должны ассемблироваться как минимум. Ссылка на комментарий Поделиться на другие сайты Поделиться
pia3333 Опубликовано 24 июня, 2012 Автор Поделиться Опубликовано 24 июня, 2012 >> Кто может подсказать, как кода юзера преобразовать в нормальный код?Может быть ты ожидаешь какую-то оригинальную подсказку или супер идею. Думаю, я тебя разочарую. Если Юзер дожен вводить Асм-код в текстовом представлении, то тебе нужно написать программу, которая Асм-код преобразует в байт код и записывает по известному адресу последовательность байт-кода. Возможно тебе придётся использовать какой-то компилятор или писать свой для наиболее важных машинных инструкций. Чтобы найти "Адреса", то их можно маркировать какой-нибудь последовательностью байт.Если ты не смог додуматься до решения таким образом, может быть тебе и не стоит пытаться реализовать эту идею. Её реализация может занять у тебя много времени. Альтернатива - использовать Cheat Engine АА- и Lua - скрипты.Вдруг есть более короткие пути =) Вдруг есть библиотеки какие-нибудь для C++PSЕсть просто игра, к которой не могу приаттачить отладчик. Стоит защита хорошая. Кернел режим не могу включить в се 6.2, т.к. процессор AMD. На самом деле мне всего-то надо узнать что храниться в регистрах определённого участке кода... Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 24 июня, 2012 Поделиться Опубликовано 24 июня, 2012 >> Есть просто игра, к которой не могу приаттачить отладчик. Стоит защита хорошая. Кернел режим не могу включить в се 6.2, т.к. процессор AMD. На самом деле мне всего-то надо узнать что храниться в регистрах определённого участке кода...Могу посоветовать поискать отладчики работающие в режиме ядра. Старый добрый SoftIce или какой-нибудь новый. Я не знаю поддерживают ли эти отладчики AMD. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 24 июня, 2012 Поделиться Опубликовано 24 июня, 2012 Не вижу связи между типом процессора и режимом ядра отладчика. У меня дома что на интеловском, что на амдшном компе kernel режим включается без проблем в СЕ. Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 24 июня, 2012 Поделиться Опубликовано 24 июня, 2012 SoftIce выше WinXP SP1 не заведётся - факт. Юзайте WinDBG \ Syser. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения