• Как реализуется унарный минус и логическое отрицание?

    @none7
    Евгений Обыкновенный: Оптимизацию не забыл включить?
    Ибо x ^= 0xff можно реализовать одной операцией
    xor byte ptr[x], 0FFh.
    Логическое отрицание x = !x;
    not byte ptr[x].
    Проверка на 0 и НЕ 0, пройдёт успешно. Если нужен именно 0 или 1, то
    cmp byte ptr [x], 0
    setz [x]
    Обычное отрицание x = -x;
    neg byte ptr [x].
    if ( x == 0 ) y = 1; else y = 0
    cmp byte ptr [x], 0
    setz byte ptr [y]
    Инструкции 2, но про одинаковость я говорил только про x=-x, x ^= 255.
  • Как работает этот assembler code?

    @none7
    Vi: Ассемблер(компилятор Ассемблера) рассчитает адрес temp и заменит на соответствующее число. Например mov [401000h + eax], edx. Естественно это работает только для статических переменных. Для переменных в стеке обычно используют конструкцию вроде mov [ebp + eax + 16], edx. Точный адрес вычисляется процессором в момент исполнения инструкции.
  • Как реализуется унарный минус и логическое отрицание?

    @none7
    Евгений Обыкновенный: Нет. Современное железо пытается вытянуть максимальную производительность из всех возможных вариантов. Массивы всех целочисленных типов встречаются в программах очень часто, поэтому тут им точно нельзя схалтурить. Когда только появились первые x64 процессоры, производительность работы с 64-битными числами была ниже в 2 раза, но и для них теперь операции выполняются за минимально возможное время, то есть 1 такт.
    Чем длиннее число, тем больше места оно занимает в кеше-процессора, а он весьма невелик. Если данных нет в кеше, то можете забыть о гигагерцах процессора и разнице с скорости операций. Всё упрётся во время доступа к оперативной памяти. Оптимизация доступа к данным с учётом особенностей работы кеша это настоящая головная боль.
  • Как создать нуль-терминированную строку на php?

    @none7
    PavelFokeev: var_dump("\x00\x00\x00\x00\x63\x03\x67" === hex2bin("00000000630367"));
    // bool(true)
    Кстати нуль-терминированная строка, это строка содержащая на конце символ '\0', только на конце. У Вас же бинарные строки.
  • Изначальная память процесса и 4-х миллионный байт?

    @none7
    Ruins: Сразу после старта в WinXP были только ntdll и kernel32 и этого достаточно. Ведь есть kernel32:LoadLibrary и ntdll:LdrLoadDll. В Win7 у kernel32 появились зависимости, но только от системных библиотек. Но другие процессы вполне могут свободно выделять память, читать и писать в память любого процесса того же пользователя. Запускать новые потоки где им захочется. Так же есть оконные хуки, которые могут загрузить dll для перехвата оконных сообщений. Ещё есть COM который грузит, что попало читая реестр. Так, что чужие библиотеки тоже могут оказаться в процессе. Но к физической памяти доступ есть только у ядра.
  • Изначальная память процесса и 4-х миллионный байт?

    @none7
    Ruins: > "Можно через стандартные адреса выяснить где расположены системные .dll" - это как?
    На x86 в fs:[0x18] лежит указатель указатель на TEB(Thread Environment Block). Я уже отвечал на нечто подобное Как правильно написать SEH-обработчик на ассемблере под win32? . Так же требуется реализовать собственную функцию GetProcAddress. Способ бессмысленный и нужен только шелл-коду.
    >насколько я помню первые 64кб служат для перехвата null указателей, так что пример скриншота некорректен.
    Верно, но окошко будет тоже самое, только адреса изменяться.
    >а какой адрес у ntdll.dll
    Не фиксирован. Где то выше 0x70000000. Стандартные адреса точно с ней не конфликтуют.
  • Как легко осуществить ввод/вывод string Visual C++?

    @none7
    a-lexus91_yandex: Действительно есть не как часть istream, а как часть string. Даже пример Ivan Sokolov работает, если добавить #include . Это часть C++98 и работает даже в VS10.
  • Что используете для защиты от утечек информации?

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

    @none7
    Альберт: В старых протоколах часто применяется нечто подобное, а не табличные чексуммы вроде CRC-32/16. Они не так надёжны, но реализовать аппаратно такую проверку проще. Ещё там иногда в случае переполнения ushort прибавляют к нему единицу, рекомендую проверить на длинных сообщениях где сумма всех байт больше 65535, так как протокол вполне допускает сообщения такой длины.
  • Литература по демонам?

    @none7
    Славка: Ну да, в принципе этот код не POSIX совместим и появился на 2 года позже POSIX в BSD в 93 году, но сегодняшние Linux и BSD его примут. По POSIX это будет выглядеть как то так:

    int mydaemon(int nochdir, int noclose) {
    int v = fork(), f;
    if(v == -1) return v;

    /* parent must die */
    if(v) exit(2);

    if(!nochdir) {
    chdir("/");
    }
    if(!noclose) {
    f = open("/dev/null", O_RDWR);
    close(0);
    close(1);
    close(2);
    dup(f);
    dup(f);
    dup(f);
    close(f);
    }
    return 0;
    }
  • Литература по демонам?

    @none7
    #include <unistd.h>
    int main() {
        if(daemon(0, 0) != -1) {
            /*
            Я демон, я убил своего предка заставив его вернуть число 2
            и уничтожил всё, что нас связывало.  Если я кому нужен
            шлите signal, так же как и прочим процессам
            <a href="https://www.opennet.ru/man.shtml?topic=daemon&category=3&russian=2"/>man page</a>
             */
        }
    }
  • Как прописать NS и MX записи в freenom?

    @none7
    Дмитрий Крымцев: Ну вообще то это нарушение стандарта. NS и любые другие записи не могут сосуществовать. Вы кстати уверены, что при этом всё нормально работает? Ведь после того как рекурсивные сервера закешируют редирект по NS, к серверам нетхауса они уже не будут обращаться. Можете указать домен для примера?
  • Как прописать NS и MX записи в freenom?

    @none7
    qqignatqq: Вы перебросили домен на сервера хостера, вот у хостера и должна быть возможность редактирования записей вашей DNS-зоны, в том числе MX.
  • Как прописать NS и MX записи в freenom?

    @none7
    qqignatqq: А MX вводить на том сервере куда Вы перебрасываете домен.
  • Как правильно написать SEH-обработчик на ассемблере под win32?

    @none7
    KrD: Всё даже проще чем я думал
    mov rax, gs:[30h] ; Teb
    mov rax, [rax+60h] ; Peb
    mov rax, [rax+18h]
    mov rax, [rax+10h]

    +30h HANDLE
    +48h UNICODE_STRING FullName
    +58h UNICODE_STRING ShortName
  • Как правильно написать SEH-обработчик на ассемблере под win32?

    @none7
    KrD: Ну смещения на x64 естественно не совпадут, да и к fs:[18] доступ запрещён. Можете попробовать дизасемблироать kernel32:K32EnumProcessModules код там вроде не сложный. Способ перечисления библиотек в процессах как раз основан на PEB читаемом через ReadProcessMemory. Расположение самого PEB придётся выяснять создав копию NtQueryInformationProcess.
  • Можно ли открывать только часть кода при использовании библиотеки с лицензией GNU GPL?

    @none7
    Z-r: >Вызывающе ложная информация.
    С чего бы? Это всё считается производным продуктом, Вы видимо просто никогда не выясняли юридически точное понятие "производный продукт". И в вашем FAQ никаких оправданий по этому поводу не написано. Любой прямое или косвенное использование кода делает продукт производным. А производный продукт обязан быть GPL совместимым. Просто лежать на диске не взаимодействуя друг с другом они могут, да. Отдельно запускаться пользователем по очереди скармливая данные тоже можно. А как пред- пост-обработчики пользовательских данных, нет.
    >Тоже ложная.
    Ну да ссылки на исходники самих библиотек всё равно нужно предоставить, но свои исходники в GPL отправлять необязательно.
  • Как использовать веб-сервер в virtualbox для локальной разработки?

    @none7
    NoName_0: Вариант 1: создать символьную ссылку /var/www на /media/sf_mysite.
    Вариант 2: прописать в /etc/fstab строку sharename /var/www vboxsf defaults 0 0
    вариант 3: настроить Apache на директорию /media/sf_mysite вместо /var/www
  • C# вызов контекстного меню из трея левым кликом?

    @none7
    Зачем тащить рефлексию туда где без неё можно обойтись?
    notifyIcon1.ContextMenuStrip.Show(Cursor.Position);
  • Как подключить на VPS /56 подсеть ipv6?

    @none7
    loxnemamont: Хостер в любом случае хостер отправляет весь трафик этой сети на Вашу виртуалку, думаю будет достаточно повесить все выбранные адреса на интерфейс указав маску /128. То есть IPV6ADDR_SECONDARIES="2a07:1840:4:1::1/128 2a07:1840:4:2::1/128 2a07:1840:4:3::1/128". IPV6ADDR и IPV6_DEFAULTGW должны быть настроены для основной /64 сети, не для дополнительной.