Physics.Math.Code
148K subscribers
5.21K photos
2.15K videos
5.81K files
4.51K links
VK: vk.com/physics_math
Чат инженеров: @math_code
Учебные фильмы: @maths_lib
Репетитор IT mentor: @mentor_it
YouTube: youtube.com/c/PhysicsMathCode

№ 6045941532

Обратная связь: @physicist_i
Download Telegram
Learning Kali Linux RU+EN.zip
30.1 MB
📗 Изучаем Kali Linux. Проверка защиты, тестирование на проникновение, этичный хакинг [2025] Рик Мессье
📘 Learning Kali Linux: security testing, penetration testing and ethical hacking [2024] Ric Messier

Дистрибутив Kali Linux, включающий сотни встроенных утилит, позволяет быстро приступить к тестированию безопасности. Однако наличие такого количества инструментов в арсенале Kali Linux может ошеломить. Во втором издании описываются обновленные возможности утилит и подробно рассматриваются цифровая криминалистика и реверс-инжиниринг.
Автор не ограничивается рамками тестирования безопасности и дополнительно рассказывает о криминалистическом анализе, в том числе анализе дисков и памяти, а также базовом анализе вредоносных программ.

▪️Во втором издании описываются обновленные возможности утилит и подробно рассматриваются цифровая криминалистика и реверс-инжиниринг.
▪️Познакомитесь с широким спектром инструментов, доступных в Kali Linux.
▪️Изучите основы тестирования на проникновение на протяжении всего жизненного цикла атаки.
▪️Познакомитесь с расширенными инструментами Kali для применения передовых методов атак.
▪️Автор не ограничивается рамками тестирования безопасности и дополнительно рассказывает о криминалистическом анализе, в том числе анализе дисков и памяти, а также базовом анализе вредоносных программ.
#python #cpp #kali #kalilinux #linux #хакинг #безопасность #программирование #разработка #IT

💡 Physics.Math.Code // @physics_lib
🔥40👍1913👨‍💻3🤩1😍1🙈1
🖥 Почему Ассемблер — это круто, но сложно

Есть высокоуровневые языки — это те, где вы говорите if — else, print, echo, function и так далее. «Высокий уровень» означает, что вы говорите с компьютером более-менее человеческим языком. Другой человек может не понять, что именно у вас написано в коде, но он хотя бы сможет прочитать слова.

Но сам компьютер не понимает человеческий язык. Компьютер — это регистры памяти, простые логические операции, единицы и нули. Поэтому прежде чем ваша программа будет исполнена процессором, ей нужен переводчик — программа, которая превратит высокоуровневый язык программирования в низкоуровневый машинный код.

Ассемблер — это собирательное название языков низкого уровня: код всё ещё пишет человек, но он уже гораздо ближе к принципам работы компьютера, чем к принципам мышления человека.

Вариантов Ассемблера довольно много. Но так как все они работают по одинаковому принципу и используют (в основном) одинаковый синтаксис, мы будем все подобные языки называть общим словом «Ассемблер».

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

Кроме того, что процессор умеет выполнять математические операции, ему нужно где-то хранить промежуточные данные и служебную информацию. Для этого в самом процессоре есть специальные ячейки памяти — их называют регистрами.

Регистры бывают разного вида и назначения: одни служат, чтобы хранить информацию; другие сообщают о состоянии процессора; третьи используются как навигаторы, чтобы процессор знал, куда идти дальше, и так далее.

Какими бывают регистры?

▪️Общего назначения. Это 8 регистров, каждый из которых может хранить всего 4 байта информации. Такой регистр можно разделить на 2 или 4 части и работать с ними как с отдельными ячейками.
▪️Указатель команд. В этом регистре хранится только адрес следующей команды, которую должен выполнить процессор. Вручную его изменить нельзя, но можно на него повлиять различными командами переходов и процедур.
▪️Регистр флагов. Флаг — какое-то свойство процессора. Например, если установлен флаг переполнения, значит процессор получил в итоге такое число, которое не помещается в нужную ячейку памяти. Он туда кладёт то, что помещается, и ставит в этот флаг цифру 1. Она — сигнал программисту, что что-то пошло не так. Флагов в процессоре много, какие-то можно менять вручную, и они будут влиять на вычисления, а какие-то можно просто смотреть и делать выводы. Флаги — как сигнальные лампы на панели приборов в самолёте. Они что-то означают, но только самолёт и пилот знают, что именно.
▪️Сегментные регистры. Нужны были для того, чтобы работать с оперативной памятью и получать доступ к любой ячейке. Сейчас такие регистры имеют по 32 бита, и этого достаточно, чтобы получить 4 гигабайта оперативки. Для программы на Ассемблере этого обычно хватает.

Так вот: всё, с чем работает Ассемблер, — это команды процессора, переменные и регистры.

Здесь нет привычных типов данных — у нас есть только байты памяти, в которых можно хранить что угодно. Даже если вы поместите в ячейку какой-то символ, а потом захотите работать с ним как с числом — у вас получится. А вместо привычных циклов можно просто прыгнуть в нужное место кода.
Подробнее в нашей статье в vk группе Physics.Math.Code

📕 Практический анализ двоичных файлов [2021] Эндриесс Дэннис

📙 Тайная жизнь программ. Как создать код, который понравится вашему компьютеру [2023] Джонатан Стейнхарт

📚 Подборка статей по Assembler от Ravesli

📙 LLVM: инфраструктура для разработки компиляторов [2015] Бруно Кардос Лопес, Рафаэль Аулер

📚 Подбор книг по электронике и микроконтроллерам: ОТ ЛАМЕРОВ ДО АЦЦКИХ РАДИОЛЮБИТЕЛЕЙ 👨🏻‍💻📡

📕 Modern Assembly Language Programming with the ARM Processor [2016] Larry D. Pyeatt

📕 Изучаем Ассемблер [2005] Крупник

📘 Assembly Programming and Computer Architecture for Software Engineers [2017] Brian R. Hall, Kevin J. Slonka

#программирование #низкоуровневое_программирование #Linux #assembler #cpp #C

💡 Physics.Math.Code // @physics_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
92🔥53👍27🤔3👨‍💻1🙈1🤝1
📘 The Elements of Computing Systems: Building a Modern Computer from First Principles [2005 + 2021] Noam Nisan and Shimon Schocken

💾 Скачать книги

📱 May 2024 CACM: Nand to Tetris: Building a Modern Computer System from First Principles

📱 Shimon Schocken

📱 Nand2Tetris - Building a modern computer

Источник: From Nand to Tetris

На coursera:
▪️ Построение современного компьютера на основе первых принципов: От Nand до Tetris (проектно-ориентированный курс)
▪️ Построение современного компьютера на основе первых принципов: От Nand до Tetris Part II (курс, ориентированный на проект)

Описание: На этом курсе, ориентированном на проекты*, Вы построите современную компьютерную систему с нуля. Мы разделим это увлекательное путешествие на шесть практических проектов, которые проведут Вас от конструирования элементарных логических вентилей до создания полностью функционирующего компьютера общего назначения. В процессе обучения Вы узнаете - самым прямым и конструктивным образом - как работают компьютеры и как они создаются. Что Вам потребуется: Это самостоятельный курс: все знания, необходимые для успешного прохождения курса и создания компьютерной системы, будут даны в процессе обучения. Поэтому мы не предполагаем никаких предыдущих знаний в области информатики или инженерии, и все учащиеся приветствуются на борту. Вам не понадобится никаких физических материалов, поскольку Вы будете собирать компьютер на своем собственном ПК, используя программный аппаратный симулятор, точно так же, как настоящие компьютеры проектируются компьютерными инженерами в полевых условиях. Аппаратный симулятор, а также другие программные инструменты будут предоставлены Вам бесплатно после регистрации на курс. Формат курса: Курс состоит из шести модулей, каждый из которых включает серию видеолекций и проект. Вам потребуется около 2-3 часов для просмотра лекций каждого модуля и около 5-10 часов для выполнения каждого из шести проектов. Курс можно пройти за шесть недель, но Вы можете делать это в своем собственном темпе. Вы можете посмотреть выступление на TED об этом курсе, набрав в Гугле "nand2tetris TED talk". *О проектно-ориентированных курсах: Курсы, ориентированные на проект, предназначены для того, чтобы помочь Вам завершить личностно значимый проект в реальном мире, а Ваш преподаватель и сообщество учеников с аналогичными целями будут давать Вам советы и рекомендации на этом пути. Активно применяя новые концепции в процессе обучения, Вы овладеете содержанием курса более эффективно; кроме того, у Вас появится возможность использовать полученные навыки для внесения позитивных изменений в свою жизнь и карьеру. По окончании курса у Вас будет готовый проект, которым Вы сможете с гордостью пользоваться и делиться. #программирование #низкоуровневое_программирование #Linux #assembler #cpp #C

💡 Physics.Math.Code // @physics_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
139🔥22👍9😍2🗿2🙏1
📘 The Elements of Computing Systems.zip
26.1 MB
📘 The Elements of Computing Systems: Building a Modern Computer from First Principles [2005 + 2021] Noam Nisan and Shimon Schocken

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

Достоинства:
Хорошая структурированность;
Оригинальный авторский подход.

☕️ Для тех, кто захочет задонать на кофе:
ВТБ: +79616572047 (СБП) ЮMoney: 410012169999048

#программирование #низкоуровневое_программирование #архитектура #computer_science #assembler #cpp #C

💡 Physics.Math.Code // @physics_lib
138👍27🔥9👨‍💻2🤩1🗿1
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Сборка мусора (англ. garbage collection) в программировании — одна из форм автоматического управления памятью. Специальный процесс, называемый сборщиком мусора (англ. garbage collector - GC), периодически освобождает память, удаляя из неё ставшие ненужными объекты. Автоматическая сборка мусора позволяет повысить безопасность доступа к памяти. Сборка мусора была впервые применена Джоном Маккарти в 1959 году в среде программирования на разработанном им функциональном языке программирования Лисп. Впоследствии она применялась в других системах программирования и языках, преимущественно — в функциональных и логических. Необходимость сборки мусора в языках этих типов обусловлена тем, что структура таких языков делает крайне неудобным отслеживание времени жизни объектов в памяти и ручное управление ею. Широко используемые в этих языках списки и основанные на них сложные структуры данных во время работы программ постоянно создаются, надстраиваются, расширяются, копируются, и правильно определить момент удаления того или иного объекта затруднительно.

В промышленных процедурных и объектных языках сборка мусора долго не использовалась. Предпочтение отдавалось ручному управлению памятью, как более эффективному и предсказуемому. Но со второй половины 1980-х годов технология сборки мусора стала использоваться и в директивных (императивных), и в объектных языках программирования, а со второй половины 1990-х годов всё большее число создаваемых языков и сред, ориентированных на прикладное программирование, включают механизм сборки мусора либо как единственный, либо как один из доступных механизмов управления динамической памятью. В настоящее время она используется в Оберон, Java, Python, Ruby, C#, D, F#, Go и других языках.

▪️Висячая ссылка (англ. dangling pointer) — это ссылка на объект, который уже удалён из памяти. После удаления объекта все сохранившиеся в программе ссылки на него становятся «висячими». Память, занимаемая ранее объектом, может быть передана операционной системе и стать недоступной, или быть использована для размещения нового объекта в той же программе. В первом случае попытка обратиться по «повисшей» ссылке приведёт к срабатыванию механизма защиты памяти и аварийной остановке программы, а во втором — к непредсказуемым последствиям. Появление висячих ссылок обычно становится следствием неправильной оценки времени жизни объекта: программист вызывает команду удаления объекта до того, как его использование прекратится.

▪️Утечки памяти — Создав объект в динамической памяти, программист может не удалить его после завершения использования. Если ссылающейся на объект переменной будет присвоено новое значение и на объект нет других ссылок, он становится программно недоступным, но продолжает занимать память, поскольку команда его удаления не вызывалась. Такая ситуация и называется утечкой памяти (англ. memory leak). Если объекты, ссылки на которые теряются, создаются в программе постоянно, то утечка памяти проявляется в постепенном увеличении объёма используемой памяти; если программа работает долго, объём используемой ею памяти постоянно растёт, и через какое-то время ощутимо замедляется работа системы (из-за необходимости при любом выделении памяти использовать свопинг), либо программа исчерпывает доступный объём адресного пространства и завершается с ошибкой. 📱 Подробности

📱 Автор видео: Владимир Балун

#программирование #архитектура #многопоточность #сборщикмусора #cpp #java #coding #programming

💡 Physics.Math.Code
// @physics_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
44👍37🔥124🤯1👨‍💻1