home.social

#x8664 — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #x8664, aggregated by home.social.

fetched live
  1. Как я написал PID 1 для контейнеров на чистом ассемблере: x86-64 и ARM64

    Не потому, что контейнерному миру срочно нужен ещё один init. Есть Tini, есть docker run --init , и для большинства production-сценариев я бы по-прежнему начал именно с них. Мне скорее хотелось разобрать задачу до самого нижнего уровня: без libc, без runtime, напрямую через Linux syscalls. Заодно проверить, насколько сильно будет отличаться одна и та же реализация на x86-64 и ARM64. В итоге из небольшого эксперимента получился mini-init-asm : PID 1, который запускает приложение в отдельной process group, передаёт сигналы всей группе, собирает zombie-процессы и умеет корректно завершать контейнер с exit code приложения. Позже туда добавились subreaper mode и простой restart-on-crash. А сам проект в итоге доехал сначала до Debian unstable, а затем и до testing. Но началось всё с вопроса: что вообще должен уметь нормальный PID 1 внутри контейнера?

    habr.com/ru/articles/1069824/

    #linux #pid_1 #containers #assembly #x8664 #arm64 #epoll #docker #debian

  2. Как я написал PID 1 для контейнеров на чистом ассемблере: x86-64 и ARM64

    Не потому, что контейнерному миру срочно нужен ещё один init. Есть Tini, есть docker run --init , и для большинства production-сценариев я бы по-прежнему начал именно с них. Мне скорее хотелось разобрать задачу до самого нижнего уровня: без libc, без runtime, напрямую через Linux syscalls. Заодно проверить, насколько сильно будет отличаться одна и та же реализация на x86-64 и ARM64. В итоге из небольшого эксперимента получился mini-init-asm : PID 1, который запускает приложение в отдельной process group, передаёт сигналы всей группе, собирает zombie-процессы и умеет корректно завершать контейнер с exit code приложения. Позже туда добавились subreaper mode и простой restart-on-crash. А сам проект в итоге доехал сначала до Debian unstable, а затем и до testing. Но началось всё с вопроса: что вообще должен уметь нормальный PID 1 внутри контейнера?

    habr.com/ru/articles/1069824/

    #linux #pid_1 #containers #assembly #x8664 #arm64 #epoll #docker #debian

  3. Как я написал PID 1 для контейнеров на чистом ассемблере: x86-64 и ARM64

    Не потому, что контейнерному миру срочно нужен ещё один init. Есть Tini, есть docker run --init , и для большинства production-сценариев я бы по-прежнему начал именно с них. Мне скорее хотелось разобрать задачу до самого нижнего уровня: без libc, без runtime, напрямую через Linux syscalls. Заодно проверить, насколько сильно будет отличаться одна и та же реализация на x86-64 и ARM64. В итоге из небольшого эксперимента получился mini-init-asm : PID 1, который запускает приложение в отдельной process group, передаёт сигналы всей группе, собирает zombie-процессы и умеет корректно завершать контейнер с exit code приложения. Позже туда добавились subreaper mode и простой restart-on-crash. А сам проект в итоге доехал сначала до Debian unstable, а затем и до testing. Но началось всё с вопроса: что вообще должен уметь нормальный PID 1 внутри контейнера?

    habr.com/ru/articles/1069824/

    #linux #pid_1 #containers #assembly #x8664 #arm64 #epoll #docker #debian

  4. «Bro, what…?» #1. Первый контакт с crackme на Linux x86-64

    Вы запускаете программу, о которой ничего не знаете. Она вежливо просит строку, а в ответ на ваш ввод насмешливо отвечает: «Bro, what are you trying to do?» И правда, что мы пытаемся сделать? Пытаемся понять ее. Перед нами crackme – программа-головоломка, написанная для тренировки навыков обратной разработки: бинарник под Linux x86-64 без исходников и документации, который издевается над каждым, кто не смог его разгадать. Это первая статья цикла из трех о гибридном анализе крякми Getting Started Keygen (Mazzottis). Мы осмотрим файл штатными утилитами, найдем main в Ghidra, расшифруем «бессмысленные» имена переменных в реальную раскладку стека и подтвердим гипотезы в GDB. По пути встретим оптимизированный пролог без RBP, «хитрое» беззнаковое условие и std::string , спрятавшийся в трех переменных, которые на первый взгляд никак не связаны. Во второй части цикла – мутационное тестирование и реконструкция скрытой структуры, в третьей – полный разбор хеш-функции и восстановление алгоритма на Python. Читать первую часть

    habr.com/ru/articles/1068160/

    #реверсинжиниринг #Ghidra #GDB #ассемблер #x8664 #crackme #CTF #отладка #Linux #C++

  5. «Bro, what…?» #1. Первый контакт с crackme на Linux x86-64

    Вы запускаете программу, о которой ничего не знаете. Она вежливо просит строку, а в ответ на ваш ввод насмешливо отвечает: «Bro, what are you trying to do?» И правда, что мы пытаемся сделать? Пытаемся понять ее. Перед нами crackme – программа-головоломка, написанная для тренировки навыков обратной разработки: бинарник под Linux x86-64 без исходников и документации, который издевается над каждым, кто не смог его разгадать. Это первая статья цикла из трех о гибридном анализе крякми Getting Started Keygen (Mazzottis). Мы осмотрим файл штатными утилитами, найдем main в Ghidra, расшифруем «бессмысленные» имена переменных в реальную раскладку стека и подтвердим гипотезы в GDB. По пути встретим оптимизированный пролог без RBP, «хитрое» беззнаковое условие и std::string , спрятавшийся в трех переменных, которые на первый взгляд никак не связаны. Во второй части цикла – мутационное тестирование и реконструкция скрытой структуры, в третьей – полный разбор хеш-функции и восстановление алгоритма на Python. Читать первую часть

    habr.com/ru/articles/1068160/

    #реверсинжиниринг #Ghidra #GDB #ассемблер #x8664 #crackme #CTF #отладка #Linux #C++

  6. «Bro, what…?» #1. Первый контакт с crackme на Linux x86-64

    Вы запускаете программу, о которой ничего не знаете. Она вежливо просит строку, а в ответ на ваш ввод насмешливо отвечает: «Bro, what are you trying to do?» И правда, что мы пытаемся сделать? Пытаемся понять ее. Перед нами crackme – программа-головоломка, написанная для тренировки навыков обратной разработки: бинарник под Linux x86-64 без исходников и документации, который издевается над каждым, кто не смог его разгадать. Это первая статья цикла из трех о гибридном анализе крякми Getting Started Keygen (Mazzottis). Мы осмотрим файл штатными утилитами, найдем main в Ghidra, расшифруем «бессмысленные» имена переменных в реальную раскладку стека и подтвердим гипотезы в GDB. По пути встретим оптимизированный пролог без RBP, «хитрое» беззнаковое условие и std::string , спрятавшийся в трех переменных, которые на первый взгляд никак не связаны. Во второй части цикла – мутационное тестирование и реконструкция скрытой структуры, в третьей – полный разбор хеш-функции и восстановление алгоритма на Python. Читать первую часть

    habr.com/ru/articles/1068160/

    #реверсинжиниринг #Ghidra #GDB #ассемблер #x8664 #crackme #CTF #отладка #Linux #C++

  7. 64 байта и одна константа: разбор переключения контекста в ядре на Rust

    В прошлый раз я писал про потерянное пробуждение и получил в комментариях справедливое замечание, что примитив там классический. Так и есть. Сегодня про место, где классики меньше: как в моём ядре устроено переключение контекста, и почему ассемблер там знает смещение поля в структуре Rust. Это неприятная связь. Ассемблеру нужен байтовый доступ к сохранённым регистрам, а раскладку структуры определяет компилятор. Если эти двое разойдутся во мнениях, вы не получите ошибку компиляции. Вы получите ядро, которое пишет регистры мимо и падает где-то далеко от места ошибки.

    habr.com/ru/articles/1068066/

    #rust #ассемблер #переключение_контекста #ядро #операционные_системы #системное_программирование #x8664 #no_std #fpu #xsave

  8. 64 байта и одна константа: разбор переключения контекста в ядре на Rust

    В прошлый раз я писал про потерянное пробуждение и получил в комментариях справедливое замечание, что примитив там классический. Так и есть. Сегодня про место, где классики меньше: как в моём ядре устроено переключение контекста, и почему ассемблер там знает смещение поля в структуре Rust. Это неприятная связь. Ассемблеру нужен байтовый доступ к сохранённым регистрам, а раскладку структуры определяет компилятор. Если эти двое разойдутся во мнениях, вы не получите ошибку компиляции. Вы получите ядро, которое пишет регистры мимо и падает где-то далеко от места ошибки.

    habr.com/ru/articles/1068066/

    #rust #ассемблер #переключение_контекста #ядро #операционные_системы #системное_программирование #x8664 #no_std #fpu #xsave

  9. 64 байта и одна константа: разбор переключения контекста в ядре на Rust

    В прошлый раз я писал про потерянное пробуждение и получил в комментариях справедливое замечание, что примитив там классический. Так и есть. Сегодня про место, где классики меньше: как в моём ядре устроено переключение контекста, и почему ассемблер там знает смещение поля в структуре Rust. Это неприятная связь. Ассемблеру нужен байтовый доступ к сохранённым регистрам, а раскладку структуры определяет компилятор. Если эти двое разойдутся во мнениях, вы не получите ошибку компиляции. Вы получите ядро, которое пишет регистры мимо и падает где-то далеко от места ошибки.

    habr.com/ru/articles/1068066/

    #rust #ассемблер #переключение_контекста #ядро #операционные_системы #системное_программирование #x8664 #no_std #fpu #xsave

  10. Возврат значений из функций в x86-64: регистры, память и скрытые аргументы

    Наверняка многие и не задумываются: а как на самом деле происходит возврат структур и других типов значений из функций? Что происходит под капотом, какие приемы задействует компилятор? В данной статье я постараюсь дать ответы на эти вопросы и сделать это просто и понятно.

    habr.com/ru/articles/1016440/

    #x8664 #assembly #возврат_значений_из_функции #lowlevel_programming #компилятор_C++

  11. Возврат значений из функций в x86-64: регистры, память и скрытые аргументы

    Наверняка многие и не задумываются: а как на самом деле происходит возврат структур и других типов значений из функций? Что происходит под капотом, какие приемы задействует компилятор? В данной статье я постараюсь дать ответы на эти вопросы и сделать это просто и понятно.

    habr.com/ru/articles/1016440/

    #x8664 #assembly #возврат_значений_из_функции #lowlevel_programming #компилятор_C++

  12. Возврат значений из функций в x86-64: регистры, память и скрытые аргументы

    Наверняка многие и не задумываются: а как на самом деле происходит возврат структур и других типов значений из функций? Что происходит под капотом, какие приемы задействует компилятор? В данной статье я постараюсь дать ответы на эти вопросы и сделать это просто и понятно.

    habr.com/ru/articles/1016440/

    #x8664 #assembly #возврат_значений_из_функции #lowlevel_programming #компилятор_C++

  13. Hype for the Future 139L → GNU Cross Compiler (GCC) System Architecture Matrix

    Introduction The following table represents a matrix of x86-architecture system central processing units (CPUs) with respects to functionality, including both 32-bit and 64-bit system processors: Legacy Intel ProcessorArchitectureExtensionsi386i386--i486i486--i586 = pentiumi586--lakemont (Intel Lakemont MCU)i586--pentium-mmxi586MMXpentiumproi686--i686i686--pentium2i686MMXpentium3, pentium3mi686MMX, SSEpentium-mi686MMX, SSE, SSE2pentium4, pentium4mi686MMX, SSE, SSE2prescotti686MMX, SSE, […]

    novatopflex.wordpress.com/2026

  14. Hype for the Future 139L → GNU Cross Compiler (GCC) System Architecture Matrix

    Introduction The following table represents a matrix of x86-architecture system central processing units (CPUs) with respects to functionality, including both 32-bit and 64-bit system processors: Legacy Intel ProcessorArchitectureExtensionsi386i386--i486i486--i586 = pentiumi586--lakemont (Intel Lakemont MCU)i586--pentium-mmxi586MMXpentiumproi686--i686i686--pentium2i686MMXpentium3, pentium3mi686MMX, SSEpentium-mi686MMX, SSE, SSE2pentium4, pentium4mi686MMX, SSE, SSE2prescotti686MMX, SSE, […]

    novatopflex.wordpress.com/2026

  15. Hype for the Future 139L → GNU Cross Compiler (GCC) System Architecture Matrix

    Introduction The following table represents a matrix of x86-architecture system central processing units (CPUs) with respects to functionality, including both 32-bit and 64-bit system processors: Legacy Intel ProcessorArchitectureExtensionsi386i386--i486i486--i586 = pentiumi586--lakemont (Intel Lakemont MCU)i586--pentium-mmxi586MMXpentiumproi686--i686i686--pentium2i686MMXpentium3, pentium3mi686MMX, SSEpentium-mi686MMX, SSE, SSE2pentium4, pentium4mi686MMX, SSE, SSE2prescotti686MMX, SSE, […]

    novatopflex.wordpress.com/2026

  16. Hype for the Future 139L → GNU Cross Compiler (GCC) System Architecture Matrix

    Introduction The following table represents a matrix of x86-architecture system central processing units (CPUs) with respects to functionality, including both 32-bit and 64-bit system processors: Legacy Intel ProcessorArchitectureExtensionsi386i386--i486i486--i586 = pentiumi586--lakemont (Intel Lakemont MCU)i586--pentium-mmxi586MMXpentiumproi686--i686i686--pentium2i686MMXpentium3, pentium3mi686MMX, SSEpentium-mi686MMX, SSE, SSE2pentium4, pentium4mi686MMX, SSE, SSE2prescotti686MMX, SSE, […]

    novatopflex.wordpress.com/2026

  17. Hype for the Future 140E → GNU Cross Compiler (GCC) System Architecture Matrix

    Introduction The following table represents a matrix of x86-architecture system central processing units (CPUs) with respects to functionality, including both 32-bit and 64-bit system processors: Legacy Intel ProcessorArchitectureExtensionsi386i386--i486i486--i586 = pentiumi586--lakemont (Intel Lakemont MCU)i586--pentium-mmxi586MMXpentiumproi686--i686i686--pentium2i686MMXpentium3, pentium3mi686MMX, SSEpentium-mi686MMX, SSE, SSE2pentium4, pentium4mi686MMX, SSE, SSE2prescotti686MMX, SSE, […]

    novatopflex.wordpress.com/2026

  18. For me, Intel going down into a spiral is the best thing ever since their antitrust shenanigans.

    I wait patiently for the day they will have to open their x86 license so NVIDIA, Qualcomm, Google, Microsoft, Broadcom, SK Hynix, Micron and Samsung create their own CPU.

    Who knows if by Intel going down we get an x86 resurgence.

    macrumors.com/2025/09/24/intel

    #Technology #Apple #Intel #x86 #x8664 #CPU #SoC #Hardware #PCHardware

  19. For me, Intel going down into a spiral is the best thing ever since their antitrust shenanigans.

    I wait patiently for the day they will have to open their x86 license so NVIDIA, Qualcomm, Google, Microsoft, Broadcom, SK Hynix, Micron and Samsung create their own CPU.

    Who knows if by Intel going down we get an x86 resurgence.

    macrumors.com/2025/09/24/intel

    #Technology #Apple #Intel #x86 #x8664 #CPU #SoC #Hardware #PCHardware

  20. For me, Intel going down into a spiral is the best thing ever since their antitrust shenanigans.

    I wait patiently for the day they will have to open their x86 license so NVIDIA, Qualcomm, Google, Microsoft, Broadcom, SK Hynix, Micron and Samsung create their own CPU.

    Who knows if by Intel going down we get an x86 resurgence.

    macrumors.com/2025/09/24/intel

    #Technology #Apple #Intel #x86 #x8664 #CPU #SoC #Hardware #PCHardware

  21. For me, Intel going down into a spiral is the best thing ever since their antitrust shenanigans.

    I wait patiently for the day they will have to open their x86 license so NVIDIA, Qualcomm, Google, Microsoft, Broadcom, SK Hynix, Micron and Samsung create their own CPU.

    Who knows if by Intel going down we get an x86 resurgence.

    macrumors.com/2025/09/24/intel

    #Technology #Apple #Intel #x86 #x8664 #CPU #SoC #Hardware #PCHardware

  22. For me, Intel going down into a spiral is the best thing ever since their antitrust shenanigans.

    I wait patiently for the day they will have to open their x86 license so NVIDIA, Qualcomm, Google, Microsoft, Broadcom, SK Hynix, Micron and Samsung create their own CPU.

    Who knows if by Intel going down we get an x86 resurgence.

    macrumors.com/2025/09/24/intel

    #Technology #Apple #Intel #x86 #x8664 #CPU #SoC #Hardware #PCHardware

  23. AsmX G3: Архитектура кодировщика ZGEN. Как hwm генерирует машинный код amd64

    Большинство компиляторов — это монолитные черные ящики, унаследованные из прошлого. Мы отвергли этот путь. Мы разбираем архитектуру x86_64 до "первых принципов", чтобы понять, как на самом деле работает кремний. В этой статье мы вскрываем капот нашего компилятора ZGEN и его "фабрики машинного кода" — hwm . Никакой магии. Только чистая, детерминированная инженерия, которая превращает ассемблер в исполняемые биты. К инженерным чертежам

    habr.com/ru/articles/932248/

    #asmx #compiler #asmx_compiler #asmxzgen_compiler #opensource #open_source #x86_64 #x8664 #x86_x64 #amd64

  24. AsmX G3: Архитектура кодировщика ZGEN. Как hwm генерирует машинный код amd64

    Большинство компиляторов — это монолитные черные ящики, унаследованные из прошлого. Мы отвергли этот путь. Мы разбираем архитектуру x86_64 до "первых принципов", чтобы понять, как на самом деле работает кремний. В этой статье мы вскрываем капот нашего компилятора ZGEN и его "фабрики машинного кода" — hwm . Никакой магии. Только чистая, детерминированная инженерия, которая превращает ассемблер в исполняемые биты. К инженерным чертежам

    habr.com/ru/articles/932248/

    #asmx #compiler #asmx_compiler #asmxzgen_compiler #opensource #open_source #x86_64 #x8664 #x86_x64 #amd64

  25. AsmX G3: Архитектура кодировщика ZGEN. Как hwm генерирует машинный код amd64

    Большинство компиляторов — это монолитные черные ящики, унаследованные из прошлого. Мы отвергли этот путь. Мы разбираем архитектуру x86_64 до "первых принципов", чтобы понять, как на самом деле работает кремний. В этой статье мы вскрываем капот нашего компилятора ZGEN и его "фабрики машинного кода" — hwm . Никакой магии. Только чистая, детерминированная инженерия, которая превращает ассемблер в исполняемые биты. К инженерным чертежам

    habr.com/ru/articles/932248/

    #asmx #compiler #asmx_compiler #asmxzgen_compiler #opensource #open_source #x86_64 #x8664 #x86_x64 #amd64

  26. Путь от Кода до Бинарного Файла

    Как же исходный код превращается в бинарный файл, который потом исполняется на компьютере? Не нашёл ни одной статьи, которая описывала бы полный процесс от начала до конца, поэтому я написал данный материал.

    habr.com/ru/articles/888254/

    #компиляторы #компиляция #ассемблер #x8664 #assembly

  27. Путь от Кода до Бинарного Файла

    Как же исходный код превращается в бинарный файл, который потом исполняется на компьютере? Не нашёл ни одной статьи, которая описывала бы полный процесс от начала до конца, поэтому я написал данный материал.

    habr.com/ru/articles/888254/

    #компиляторы #компиляция #ассемблер #x8664 #assembly

  28. Путь от Кода до Бинарного Файла

    Как же исходный код превращается в бинарный файл, который потом исполняется на компьютере? Не нашёл ни одной статьи, которая описывала бы полный процесс от начала до конца, поэтому я написал данный материал.

    habr.com/ru/articles/888254/

    #компиляторы #компиляция #ассемблер #x8664 #assembly