• Быстрый старт в никуда?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Посоветуйте человеку научиться пользоваться поиском.
    Если не осилит работу с поиском и не прокачает навык поиска уже готовых ответов - пусть смело забивает на IT.
    Ответ написан
    Комментировать
  • Какие наилучшие материалы по реверс-инжинирингу (игр)?

    TrueBers
    @TrueBers
    Гуглю за еду
    Хоть и некропостинг, но уж наткнулся случайно. Раз уж помеченного ответа нет, отвечу, если ещё не забросили эту тему и не поломали пару онлайн игр =).

    Введение в крекинг с нуля Рикардо Нарвахи -- прекрасный курс. Написано очень подробно, куча полезных маст-хев трюков. Однозначно, курить! (если ещё не прошли)
    Все команды ассемблера знать, конечно, не нужно. Достаточно основных пары десятков, знать какие флаги меняют, какие операнды используются, и т. д. Остальные легко найти в Intel Software Developer Manuals.

    Из тулзов маст-хев OllyDbg в качестве отладчика, в нём удобно смотреть в реалтайме что там происходит, что-то изменять, колдовать, исследовать, находить ключевые точки для последующего реверса.

    Далее, когда уже найден какой-то ключевой поинт, в котором, кажется, кроется нужная фича, берём IDA Pro и в качестве дизассемблера/декомпилятора потихоньку реверсим алгоритм. Дальше нужно будет курить IDA Script или IdaPython для автоматизации рутинных действий.

    Также ещё довольно полезной фичей будет инструментация кода с помощью фреймворков типа Intel Pin Tool или DynamoRio. Но тут уже надо иметь скилл повыше, чем 2+2 в ассемблере, но результат стоит того.
    Ответ написан
    Комментировать
  • Существуют какие либо аппаратные ограничения на чтение CD-RW?

    Moskus
    @Moskus
    Никто пока не дал исчерпывающего верного ответа о причинах, попробую и я...
    1. Если при записи диск не финализирован, он и не будет читаться плеером. Решение - финализировать, а не оставлять открытым.
    2. Как сказали в другом ответе, отражение от CD-RW - слабее, это аппаратное ограничение, которое прошивкой не победить, но можно попробовать писать диски на однократной скорости, это долго, но в очень редких случаях - помогает. Иногда, также, помогает писать просто на другом приводе - результат бывает непредсказуемо разный.

    3. Для DVD-дисков (не CD) существует аналогичная проблема, которая может решаться изменением book type для носителя, чтобы привод считал, что носитель - не перезаписываемый.
    Ответ написан
    Комментировать
  • Linux NASM чтение и вывод содержимого файла?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    какая-то беда нету вывода никакого

    запусти свою программу под strace: strace -i -v test и увидишь, какие системные вызовы и с какими аргументами она делает с каких адресов.
    Ответ написан
    1 комментарий
  • Linux NASM чтение и вывод содержимого файла?

    mindtester
    @mindtester
    http://iczin.su/hexagram_48
    1 - меня смущает "int 0x80" это вызов прерывания с шеснадстиричным номером 80 (для доса была типичная команда int 21... или int 0x21??) но разве это работает в x64 системах? (сам не в курсе, давно не "брал в руки шашек")

    2 - не пробовали гуглить? Linux ASM чтение и вывод содержимого файла .. да и выполнять задачи более атомарно... для начала просто хоть что то вывести на экран?
    Ответ написан
    2 комментария
  • Существуют какие либо аппаратные ограничения на чтение CD-RW?

    hempy80
    @hempy80
    Внесистемный администратор
    У CD-RW более низкий уровень отражения. То есть, это аппаратное ограничение. На всякий случай – на дворе 2019 год )
    Ответ написан
    2 комментария
  • Для чего нужны замыкания (js)?

    AlexMaxTM
    @AlexMaxTM
    Ну если доступным, языком, то тогда на примере.
    Например, надо выводить в лог сообщение, а также номер строки и время прошедшее с момента зарузки страницы.

    Если не использовать замыкание, то надо определить следующую функцию
    function log(timespan, lineNumber, msg) { 
       console.log(linNumber + " " + timespan + " " + msg;
    }

    и две переменные
    var start = Date.now();
    var lineNumber = 1;

    Вызываем log так
    log(Date.now()-start, lineNumber++, "один");
    log(Date.now()-start, lineNumber++, "два");

    Очевидно, что это неудобно.

    Если использовать замыкание, то пишем так
    var log = (function () {    // функция 1
       var start = Date.now();  // текущее значение сохранятся в start 
       var num = 1;             // также используется в замыкании в функции 2. 
       return function (msg) {  // функция 2 - сохраняется в var log
          console.log(num++ + " " + (Date.now()-start) + " " + msg);
       }
    })();    // () -- вызываем функцию 1

    Вызываем так
    log("один");
    log("два");

    Результат
    lineNumber   timespan     msg
    ------------------------------
    1            0            один
    2            1            два

    Т.е. замыкание — это способ передачи данных в функцию.

    Подробнее о замыканиях см Mozilla Developer Network
    Примет взят отсюда
    Ответ написан
    Комментировать