temtriss Опубликовано 1 августа, 2017 Поделиться Опубликовано 1 августа, 2017 Доброго времени суток, есть такой вопрос: Можно ли использовать Инлайн Асм для генерации байт кода? Пример: unsigned char MEGAPATCH[] = {0x68, backStr[0], backStr[1], backStr[2], backStr[3], 0x9C, 0x60, 0x68, iDllStr[0], iDllStr[1], iDllStr[2], iDllStr[3], 0xB8, apiStr[0], apiStr[1], apiStr[2], apiStr[3], 0xFF, 0xD0, 0x61, 0x9D, 0xC3 }; А вместо этого, использовать что-то типо этого для генерации: Скрытый текст _asm { PUSH backStr PUSHF PUSHA PUSH iDllStr MOV EAX, apiStr CALL EAX POPA POPF RET } Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 1 августа, 2017 Поделиться Опубликовано 1 августа, 2017 Можно, но указатель ты на такой кусок кода не получишь. Тебе надо объявить отдельную функцию без пролога (__declspec(naked)). И так можно делать только для х86 программ, так как MSVC++ компилятор не умеет инлайн-ассемблер в х64 приложения. Или можно подключить компилятор от Intel, он умеет. Ссылка на комментарий Поделиться на другие сайты Поделиться
temtriss Опубликовано 1 августа, 2017 Автор Поделиться Опубликовано 1 августа, 2017 Спасибо!... пойду покурю MSDN по этому поводу, хотя из того, что я уже прочитал, проще продолжать использовать онлайн Асемблер/Дизасемблер. 1 час назад, Xipho сказал: Можно, но указатель ты на такой кусок кода не получишь. Ну а учитывая этот факт, то это совсем печально, в данном случае этот патч я генерирую для инъекции dll в процесс, через контекст потока. Ладно, в принципе все работает. Не буду усложнять, спасибо за ответ, думаю тему можно закрыть. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения