Перейти к содержанию

Изменение Содержания Вставки Asm-Кода На C++


Рекомендуемые сообщения

Итак, у меня есть такая функция с вставкой асмы:


int Funk(void)
{
_asm
{
push ebp
***
***
***
***
mov esp, ebp
pop ebp
retn
}
}

Мне надо написать так, чтобы код, который должен быть место звёздочек менялся во время работы(его задавал юзер!)

Кто может подсказать, как кода юзера преобразовать в нормальный код? Ну ведь нельзя же просто char всунуть, в котором будет его текст :-D

Ссылка на комментарий
Поделиться на другие сайты

>> Кто может подсказать, как кода юзера преобразовать в нормальный код?

Может быть ты ожидаешь какую-то оригинальную подсказку или супер идею. Думаю, я тебя разочарую. Если Юзер дожен вводить Асм-код в текстовом представлении, то тебе нужно написать программу, которая Асм-код преобразует в байт код и записывает по известному адресу последовательность байт-кода. Возможно тебе придётся использовать какой-то компилятор или писать свой для наиболее важных машинных инструкций. Чтобы найти "Адреса", то их можно маркировать какой-нибудь последовательностью байт.

Если ты не смог додуматься до решения таким образом, может быть тебе и не стоит пытаться реализовать эту идею. Её реализация может занять у тебя много времени. Альтернатива - использовать Cheat Engine АА- и Lua - скрипты.

Ссылка на комментарий
Поделиться на другие сайты

Для начала я посоветую посмотреть, как это в СЕ реализовано. У меня идей особо нет, если навскидку - вряд ли можно таким макаром представить массив строчек, да ещё и выполнить.

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: Но вообще это больше на бред похоже, если заниматься таким в рантайме - инструкции должны ассемблироваться как минимум.

Ссылка на комментарий
Поделиться на другие сайты

>> Кто может подсказать, как кода юзера преобразовать в нормальный код?

Может быть ты ожидаешь какую-то оригинальную подсказку или супер идею. Думаю, я тебя разочарую. Если Юзер дожен вводить Асм-код в текстовом представлении, то тебе нужно написать программу, которая Асм-код преобразует в байт код и записывает по известному адресу последовательность байт-кода. Возможно тебе придётся использовать какой-то компилятор или писать свой для наиболее важных машинных инструкций. Чтобы найти "Адреса", то их можно маркировать какой-нибудь последовательностью байт.

Если ты не смог додуматься до решения таким образом, может быть тебе и не стоит пытаться реализовать эту идею. Её реализация может занять у тебя много времени. Альтернатива - использовать Cheat Engine АА- и Lua - скрипты.

Вдруг есть более короткие пути =) Вдруг есть библиотеки какие-нибудь для C++

PS

Есть просто игра, к которой не могу приаттачить отладчик. Стоит защита хорошая. Кернел режим не могу включить в се 6.2, т.к. процессор AMD. На самом деле мне всего-то надо узнать что храниться в регистрах определённого участке кода...

Ссылка на комментарий
Поделиться на другие сайты

>> Есть просто игра, к которой не могу приаттачить отладчик. Стоит защита хорошая. Кернел режим не могу включить в се 6.2, т.к. процессор AMD. На самом деле мне всего-то надо узнать что храниться в регистрах определённого участке кода...

Могу посоветовать поискать отладчики работающие в режиме ядра. Старый добрый SoftIce или какой-нибудь новый. Я не знаю поддерживают ли эти отладчики AMD.

Ссылка на комментарий
Поделиться на другие сайты

Не вижу связи между типом процессора и режимом ядра отладчика. У меня дома что на интеловском, что на амдшном компе kernel режим включается без проблем в СЕ.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.