Ответы пользователя по тегу Assembler
  • Как вывести значение из функции?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Комментировать
  • Существует ли OpenSource антивирус на ассембере?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    использовать на домашней машине и изучать готовый код. Не доверяю корпоративным антивирусам, везде трекеры


    А зачм вам на ассемблере, тогда?
    Изучать сложный продукт на ассемблере крайне проблематично, это километры непонятного текста.

    Возьмите любой опенсорс антивирус на С/C++, например www.clamav.net/downloads
    Ответ написан
    Комментировать
  • Может ли процессор изменять порядок инструкций в программе?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Может, если это заложено на уровне архитектуры.
    В современных процессорах есть даже возможность парралельно выполнять условие и цепочки при да/нет, а потом когда условие выполнилось, взять готовый результат нужной цепочки.

    В общем, современные процессоры имеют довольно сложную внутреннюю логику. И это одна из причин, почему компилятор может сгенерировать код лучше человека - те, кто пишут современные компиляторы, не только вычитывают последние спецификации процессоров, но зачастую общаются с инженерами в двухстороннем порядке.
    Ответ написан
    Комментировать
  • Как низкоуровневый код использующий стек узнает откуда он начинается?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Обычно для работы со стеком процессор использует регистр стека (Stack Pointer register).

    Следовательно операционная система устанавливает этот регистр для процесса при его запуске и инициализации.
    В современных процессорах регистров стека может быть несколько (я могу ошибаться, но возможно даже несколько на каждое ядро).
    Ответ написан
    Комментировать
  • Как хранятся данные при сегментной адресации в реальном режиме?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    потому что минимальная адресуемая размерная единица ячейки памяти - 1 байт (8 бит).
    Весь компьютер так устроен.
    В 8 бит помещается число от 0 до 255, или в шестнадцатиричной системе (которая чаще используется для работы с байтами) от 00 до FF

    сегмент это обычно 64 килобайта, что адресуется двумя байтами (от 0000 до FFFF)
    Ответ написан
    Комментировать
  • Может кто то подробно объяснить как работает данный NASM код?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Вызов системной функции 80р - *nix syscall
    https://syscalls.kernelgrok.com/

    Передать нужно дескриптор открытого на запись файла, строку для записи, размер строки в символах.

    В регистр eax устанавливаете номер функции (4 = sys_write)
    В ebx дескриптор файла (в данном случае 1 - STDOUT, то есть вывод в консоль)
    В ecx ссылка на строку
    В edx - длина строки.

    Строка выводится на экран.
    Ответ написан
    Комментировать
  • Где ошибка в коде,сопроцессор?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    result_C = (2 * c) - (d/23) / log(1 - a / 4);

    У вас сперва происходит деление, а затем вычитание. Возьмите 2(*c) - d(/23) в дополнительные скобки.
    Ответ написан
    Комментировать
  • Почему вместо слова удаляется 60 символов?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    cmp al, 39h ;пробел?

    А почему у вас пробел это 39h, если всегда был 20h?
    Ответ написан
    9 комментариев
  • В чём отличие tiny model от small model?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    модель tiny это было очень давно, и нужно понимать, что .com и .exe это не просто бинарные файлы, но еще и определенная структура файлов, чтобы операционная система понимала как эти файлы грузить в память и передавать им управление.

    .com был простейший - один сегмент памяти, то есть максимум 64 кбайта, просто грузим и отдаем управление на 100h адрес.

    .exe гораздо сложнее, где можно подгружать файл походу, храня в нем все что угодно.
    Ответ написан
    Комментировать
  • Стоит ли учить Assembler?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Ассемблер транслируется в машинный код, который выполняет процессор.

    Даже базовое знание ассемблера поможет вам понять, как работает архитектура компьютера.

    Да, будет полезно изучить его на уровне хотя бы "hello world"
    Ответ написан
    Комментировать
  • Кто может объяснить как создаётся софт для игр?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Чтобы создавать ПО, нужно уметь программировать.

    Чтобы создавать ПО для игр - для начала тоже нужно уметь программировать, ведь игры - это тоже ПО.

    Ассемблер не обязательно, но полезно знать принципы и основы.
    С++ не обязательно, но полезно знать основы.

    Было бы неплохо знать основы того языка программирования, на котором написана игра, которую вы хотите взломать.
    Ответ написан
  • Что не так с поиском эллементов на assembler?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Ну у вас в принципе логика программы нерабочая.

    Например, внутренний loopForJ, после которого в обоих случаях - если элементы не равны, вы обнуляете ebp, таким образом по второму массиву у вас вообще прохода нет.
    Тут даже подсказать сложно нужно все переделать.
    Ответ написан
    Комментировать
  • Возможно ли конвертировать код ассемблера в с++ или другой язык высокого уровня?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    В принципе - можно, но результат дизассемблирования не читабельный, и редко когда может быть обратно скомпилирован в исходный бинарник без обработки.

    Обычно дизассемблируют, чтобы разобраться как работает алгоритм и написать его уже самостоятельно.
    Ответ написан
    Комментировать
  • Как установить Assembler на windows 10?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Пользуйтесь fasm или виртуалкой с XP
    Ответ написан
    Комментировать
  • Как расшифровать прошивку эбу?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Достать дизассемблер для конкретно этого микроконтроллера.
    Ответ написан
    2 комментария
  • Как запустить одну программу при запуске другой?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Нет таких методов в ассемблере. Ваша постановка задачи вообще с ассемблером не связана.
    Изучите для начала программирование вообще, а потом ставьте задачи, поскольку сейчас ваш вопрос звучит некорректно.
    Ответ написан
    Комментировать
  • Почему .if не работает?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    .IF не сравнивает строки. Вам нужно написать свою функцию для сравнения строк побайтно.
    Ответ написан
    Комментировать
  • Где выучить ассемблер более профессионально?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В том-то и прикол, что сам по себе Ассемблер - весьма простой язык, самого низкого уровня.

    Есть вещи сложные - тяжелые для понимания, есть вещи трудные - тяжелые для выполнения. Ассемблер - это второе. Нужно читать много документации по платформе, разбираться как работает чип на низком уровне, знать нюансы работы с портами, с регистрами чтобы оптимизировать код.

    Большинство драйверов уже давно уехали в C, скоро на питонах и nodejs их писать начнут (шутка. или нет.). Поэтому учить ассемблер профессионально - при написании компиляторов, embedded код - контроллеры, низкоуровневые функции. Отдельные ассемблерные вставки сейчас редко могут выиграть от тех же вставок на C++.
    Ответ написан
    6 комментариев
  • Как написать криптор на ассемблере?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Я в крипторах не силен. Если можете, скиньте примеры криптора программы на ассемблере и какую нибудь литературу.


    А зачем вам тогда ассемблер в данном случае?

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

    Но пытаться написать программу, которую выполняет непонятную вам задачу, писать ее на языке, который вы не знаете, вдобавок сразу выбрав не hello world а криптор и ассемблер? Совершенно бессмысленная затея.

    Хакерами становятся не так. Хакерами становятся методом изучения многих технологий, а не "мне бы только самое важное"
    Ответ написан
    4 комментария
  • С чего начать изучение системного программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Если вы считаете, что знаете С++ и ассемблер достаточно, скачайте драйвера виртуальных устройств, попробуйте их дополнить новым функционалом.
    Например драйвер виртуальных fdd/cd. Вообще файловая система - весьма интересное направление. Попробуйте написать свою, или разобраться в устройстве уже существующих.
    Ответ написан
    Комментировать