- 57
- 127 821
First Steps
Germany
Приєднався 24 січ 2023
Канал о программировании : Просто о сложном.
Как сделать первый правильный шаг, начиная изучение нового языка или направления в программировании.
Ассемблер, Си, С++, Python и все, все, все ...
"Даже путь в тысячу ли начинается с первого шага"
Лао Дзы
"Сделай первый шаг и ты поймешь, что не все так страшно"
Сенека
"Секрет неуклонного движения вперед в том, чтобы сделать первый шаг. Секрет первого шага в том, чтобы разбить сложные, кажущиеся неодолимыми задачи на простые и осуществимые и начать с самой первой. Секрет успеха - в постоянстве цели"
Марк Твен
"Сделай шаг, и дорога появится сама собой"
Стив Джобс
Как сделать первый правильный шаг, начиная изучение нового языка или направления в программировании.
Ассемблер, Си, С++, Python и все, все, все ...
"Даже путь в тысячу ли начинается с первого шага"
Лао Дзы
"Сделай первый шаг и ты поймешь, что не все так страшно"
Сенека
"Секрет неуклонного движения вперед в том, чтобы сделать первый шаг. Секрет первого шага в том, чтобы разбить сложные, кажущиеся неодолимыми задачи на простые и осуществимые и начать с самой первой. Секрет успеха - в постоянстве цели"
Марк Твен
"Сделай шаг, и дорога появится сама собой"
Стив Джобс
Ассемблер и Си для Хакера #35. Функции работы с файлами
Все функции работы с файлами - стандартные и не стандартные. Плюс дополнительные возможности и программа тестирования скорости записи данных в файл на ассемблере !
Скачиваем необходимый софт по ссылке: assembler-code.com/programmnoe-obespechenie.
Telegram "Ассемблер и Си": t.me/assembler_and_c
Эксклюзивная инфа: boosty.to/firststeps
Поддержать канал: boosty.to/firststeps/donate
00:00 Функции работы с файлами в Windows
01:14 Стандартные файловые функции Win32 Api
02:58 Классификация файловых функций
05:08 Алгоритм работы программы тестировщика
07:28 Исходный код
12:39 Тесты скорости записи в файл
14:40 Что нас ждёт впереди ?
Скачиваем необходимый софт по ссылке: assembler-code.com/programmnoe-obespechenie.
Telegram "Ассемблер и Си": t.me/assembler_and_c
Эксклюзивная инфа: boosty.to/firststeps
Поддержать канал: boosty.to/firststeps/donate
00:00 Функции работы с файлами в Windows
01:14 Стандартные файловые функции Win32 Api
02:58 Классификация файловых функций
05:08 Алгоритм работы программы тестировщика
07:28 Исходный код
12:39 Тесты скорости записи в файл
14:40 Что нас ждёт впереди ?
Переглядів: 946
Відео
Ассемблер и Си для Хакера #34. Как защитить стек DEP ASLR Канарейка
Переглядів 489День тому
Без этого не построить систему компьютерной безопасности ! Эффективные методы защиты переполнения буфера. Что знают хакеры чтобы взламывать ваши операционки. Windows - под угрозой! Что делать, чтобы защититься и при чём тут Канарейка? DEP , ASLR , GS , Stack Canary - теория и практика. Ни одного шага без x64Dbg ! Защита переполнения буфера стека Канарейка на Ассемблере masm32. Надеюсь, что это ...
Ассемблер и Си для Хакера #33. Переполнение Буфера
Переглядів 1,7 тис.14 днів тому
Узнайте об опасностях атак на переполнение буфера и о том, как хакеры могут использовать их для взлома программ ! Мы рассмотрим все: от понимания того, как они работают, до изучения того, как пишутся эксплоиты и шелл-код для реализации Buffer Overflow на операционной системе Windows. Нам не потребуется устанавливать дополнительные библиотеки, Python, Perl, WSL, виртуальные машины и т.д. Всё реа...
Секреты отладки консольных программ x64dbg
Переглядів 1,7 тис.21 день тому
Изучите секреты отладки консольных программ с помощью x64dbg - мощного инструмента для обратного проектирования и программирования на ассемблере! В этом уроке мы погрузимся в мир низкоуровневого программирования и узнаем, как использовать x64dbg для анализа и понимания внутренней работы консольных приложений. От понимания ассемблерного кода до выявления уязвимостей - мы рассмотрим основные навы...
С новым 2025 годом
Переглядів 1,1 тис.Місяць тому
Всем хакерам, всем подписчикам, всем программистам , всем, всем, всем... Итоги 2025 года. Новогодние Поздравления, Пожелания и Обещания! Смотрим и плачем от счастья! Необходимый софт для практикующих по ссылке: assembler-code.com/programmnoe-obespechenie. Telegram "Ассемблер и Си": t.me/assembler_and_c Эксклюзивная инфа: boosty.to/firststeps Поддержать канал: boosty.to/firststeps/donate 00:00 П...
Ассемблер и Си для Хакера #32 Библиотека Си в Ассемблере
Переглядів 1,1 тис.Місяць тому
Функции стандартной библиотеки Си очень эффективны и популярны. Что нужно сделать, чтобы стандартная библиотека Си в Ассемблере работала как часы? Четыре способа решения вопроса. Подробные разъяснения и работающие исходники! 00:00 Чистый код 00:57 Библиотека Си в Ассемблере 01:34 Библиотеки Си в Windows 05:20 Терминальная программа 06:10 Функции Си в Ассемблере способ 1 11:44 Функции Си в Ассе...
x64Dbg UPX Reverse Engineering
Переглядів 1,5 тис.Місяць тому
Перед ревёрсингом упакованный файл распаковывают... Что такое пакер, как он работает, какой алгоритм реверсирования этой зверушки? Reverse Engineering UPX, x64Dbg - это три варианта ручной распаковки пакера UPX, используя x64Dbg и плюс ещё один - без него. Теория и практика - коротко и ясно! Скачиваем необходимый софт по ссылке: assembler-code.com/programmnoe-obespechenie. Telegram "Ассемблер и...
Ассемблер и Си для Хакера #31. Shellcode
Переглядів 1,5 тис.Місяць тому
Простое и понятное объяснение, что такое Shellcode ( Шелл-код ) и как его используют хакеры. Вся теория подкреплена работающим исходным кодом крошечной программы на masm32. Программа выдаёт себя за блокнот Windows и снимает в текстовый файл обобщённую информацию о системе. Рекомендуется программистам, хакерам и специалистам по компьютерной безопасности. 00:00 Программа с шелл-кодом на masm32 01...
Ассемблер и Си для Хакера #30 Обфускация кода и данных в программе
Переглядів 1,8 тис.Місяць тому
Обфускация кода и данных в программе необходимы для защиты от взлома, а также используется для противодействия авирям. В ролике "разжёван" один интересный приём обфускации кода и данных под кодовым названием IP Fuscation. Как всегда - рабочий код на masm32, и рабочая программа с исходниками. 00:00 Что такое обфускация 02:25 Запутывание кода - теория 03:46 Объяснение IP обфускации 07:10 Реализац...
Ассемблер и Python - Дао общих интересов
Переглядів 1,6 тис.2 місяці тому
Возможности и практическое применение Python совместно с другими языками программирования - это Дао Python . Ассемблер и Python - самые не совместимые на первый взгляд вещи. Но так ли это? Открываем новую рубрику для хакеров. Теперь к Ассемблеру, C и C добавляется Python. Решаем общие задачи, объединив усилия. Скачиваем необходимый софт по ссылке: assembler-code.com/programmnoe-obespechenie. Te...
Техника взлома и отладки программ: стек вызовов и точка останова на память
Переглядів 1,2 тис.2 місяці тому
Программа защищена парольной защитой. Все строки в коде зашифрованы! Вместо пароля в программе - хэш сумма! Никаких зацепок и вызовов MessageBox! А результат - нулевой... Как это возможно и что делать?!.. Как всегда - теория, практика, понятные объяснения без воды, исходный код! Видео полезно для пентестеров, специалистов по компьютерной безопасности, белых хакеров и всех, кто желает повысить с...
Ассемблер и Си для Хакера #29. Так прячутся трояны
Переглядів 4,2 тис.2 місяці тому
Так прячутся трояны и другие вирусы и зловреды от беспечных пользователей. Так реализуется скрытая установка программ. Так программы маскируются под другие программы. Разбор хакерской технологии " Программа в Программе ". После просмотра Вы никогда не будете запускать скаченные с торрентов фильмы и архивы с расширение *.exe. Просто необходимо посмотреть всем, кто интересуется компьютерной безоп...
Практика взлома : проект с защитой паролем на чистом c++
Переглядів 3,7 тис.2 місяці тому
Написан проект с защитой паролем на чистом c . Строки зашифрованы . Среда разработки - Microsoft Visual Studio , MFC . В рамках проекта скомпилированы две программы : с оптимизацией кода и без оптимизации кода. В видео с подробностями описан взлом защиты при помощи отладчика x64Dbg и навыков ассемблера. Скачиваем необходимый софт по ссылке: assembler-code.com/programmnoe-obespechenie. Telegram ...
Техника взлома и отладки программ : функции и перекрёстные ссылки xrefs
Переглядів 2,2 тис.3 місяці тому
Реверс-инжиниринг на практике. Хакерская техника взлома и отладки программ с использованием точек останова на функции Win32 Api. Что такое функция-обёртка. Как использовать перекрёстные ссылки xRefs при отладке . Как определять место вызова функции в основном коде по данным в стеке. Как работать с графом , другими фишками отладчика x64Dbg. Полный хакерский разбор с подробными разъяснениями смыс...
x64Dbg Точка останова
Переглядів 9103 місяці тому
x64Dbg Точка останова - полный обзор всех возможных бряков в лучшем на сегодняшний день отладчике. Где и что найти, куда нажать, на что обратить внимание чтобы уверенно себя чувствовать. Можно использовать видео как мануал к отладчику x64Dbg . Telegram "Ассемблер и Си": t.me/assembler_and_c Эксклюзивная инфа: boosty.to/firststeps Поддержать канал: boosty.to/firststeps/donate 00:00 Точка останов...
Ассемблер и Си для Хакера #28. Анти отладка программ - шифрование строк
Переглядів 2 тис.3 місяці тому
Ассемблер и Си для Хакера #28. Анти отладка программ - шифрование строк
Ассемблер и Си для Хакера #27. Хэш
Переглядів 1,3 тис.4 місяці тому
Ассемблер и Си для Хакера #27. Хэш
Ассемблер и Си для Хакера #26. Шифр Вернама
Переглядів 6714 місяці тому
Ассемблер и Си для Хакера #26. Шифр Вернама
Ассемблер и Си для Хакера #25. Литература по Ассемблеру
Переглядів 1,1 тис.4 місяці тому
Ассемблер и Си для Хакера #25. Литература по Ассемблеру
Ассемблер и Си для Хакера #24. Кейлоггер
Переглядів 5554 місяці тому
Ассемблер и Си для Хакера #24. Кейлоггер
Ассемблер и Си для Хакера #23 Перехват клавиш WH_KEYBOARD_LL WH_KEYBOARD
Переглядів 5275 місяців тому
Ассемблер и Си для Хакера #23 Перехват клавиш WH_KEYBOARD_LL WH_KEYBOARD
Ассемблер и Си для Хакера #22 Ассемблерный код в проекте Microsoft Visual Studio C++
Переглядів 4615 місяців тому
Ассемблер и Си для Хакера #22 Ассемблерный код в проекте Microsoft Visual Studio C
Ассемблер и Си для Хакера #21 Ассемблерный код в проекте Pelles C
Переглядів 2,8 тис.5 місяців тому
Ассемблер и Си для Хакера #21 Ассемблерный код в проекте Pelles C
Ассемблер и Си для Хакера #20 Библиотеки *.dll и *.lib
Переглядів 1,5 тис.5 місяців тому
Ассемблер и Си для Хакера #20 Библиотеки *.dll и *.lib
Ассемблер и Си для Хакера #19. Соглашения о вызове функций
Переглядів 9076 місяців тому
Ассемблер и Си для Хакера #19. Соглашения о вызове функций
Ассемблер и Си для Хакера #18. Регистр ebp и кадр стека
Переглядів 7686 місяців тому
Ассемблер и Си для Хакера #18. Регистр ebp и кадр стека
Ассемблер и Си для Хакера #17. Стек без push и pop
Переглядів 7967 місяців тому
Ассемблер и Си для Хакера #17. Стек без push и pop
Ассемблер и Си для Хакера #16. Дизассемблированный код : вызов функций
Переглядів 8947 місяців тому
Ассемблер и Си для Хакера #16. Дизассемблированный код : вызов функций
Честно говоря, я понял на 5% из того, что тут произошло)) Но как положено, лайк поставлю в поддержку. Очень нравится, как вы все объясняете
А я думал, что понятно объяснил :). Переполнение буфера даёт возможным взломать программу либо зайти в систему под администратором, просто введя определённую строку в программе (или даже в броузере). Эта строка называется эксплоитом или шелкодом - понятия очень расплывчаты... Я показываю как это работает, взламывая уязвимую программу (свою собственную - что хочу, то и делаю), просто введя ей в качестве аргумента определённую строку. Демонстрируется на низком уровне, как буфер переполняется и как вместо простого отображения данных или отображения ошибки начинает выполняться хакерский код... Я показываю как это делается на практике... Фишка в том, что такой инфы в инете нет. Обычно такой взлом связан с Линуксом, установкой Пайтона и использованием Линукс программы генерации шелкода, чаще всего - программа Метасплойт. Это всё усложняет суть вопроса для начинающих. Я показываю, как на Винде это сделать без всяких установок всяких там программ и всяких там Пайтонов-Метасплоитов. Нужен только ассемблер и голова... Понимая суть и алгоритм взлома, Метасплоиты и Пайтоны не нужны. Лучше постоянно иметь одну хорошую удочку и один крючёчек чем 10 килограмм форели один раз... Я думаю, всем понятно почему. Естественно - всё это для защиты программ и для того, чтобы безопасники повышали свою квалификацию и их премий не лишали:). Спасибо за интерес!
@@firststepsforward Спасибо большое за столь развернутый комментарий!) Вы меня немного не так поняли, когда я сказал, что понял только 5%) Поймите меня правильно, не смотря на то, что вы очень хорошо и внятно все рассказываете, но сама информация, которую вы пытаетесь донести, не для каждого мозга. Это для вас кажется что все легко и понятно, а для других это совершенно по другому. Я пересмотрел очень много ваших видео и честно говоря, информация в голове не задержалась, но я смотрю их не для того, чтоб чего то знать в Ассемблере (такое знать мне уже не получится), а для того, что вы очень подробно объясняете, пытаетесь рассказать про малейшие детали, да и голос у вас спокойный, вас приятно слушать)) ЗАПИШИТЕ ПОЖАЛУЙСТА ПЛЕЙЛИСТ КУРСОВ ПО PYTHON, от начала и до конца.
@@ChoiceWS Спасибо! Всё своим чередом :).
Добрый день! На этот раз пришлось потратить намного больше времени на написание кода и понимания всего процесса (около часа) Также попробовал поставить видео на паузу и переписать код на C не подглядывая (кроме функций получения пути и получения размера файла). Даже что-то получилось. Единственная проблема, это типы данных для переменных. Работать с BOOL (а не bool) и с DWORD очень непривычно до сих пор.
Подключитесь к Бусти каналу телеграм. Задайте вопрос. Я поясню на что нужно обратить внимание. На практике - всё проще чем кажется. Если кратко, то реально BOOL - это тот-же dword в 32 битной системе. True =1, False=0 Так удобнее машине работать, хотя человеку кажется. что BOOL реализовать экономичнее можно выразить вообще в байте или даже в бите. Но работает всё не так. Процессору проще работать с 32 или 64 битами. В ассемблере (в 32 битной системе) все эти HINSTANCE, wParam , lParam, HANDLE и так далее - это просто DWORD. BOOL , если вы специально его не переопределите - тоже DWORD. Просто нужно осмыслить, что все эти данные: строки, структуры, инты, и т.д. - это либо непосредственные данное в 32 битной форме, либо указатель на них (указатель - тоже 32 битное значение). Ключевой вопрос - разобраться в указателях . Существует вообще такое суеверие среди профи, что если человек понял, что такое указатели, то считай, что программист. Если не понял - то Фронтенд Пайтон разработчик (ну не будешь же совсем человека списывать:). Спасибо! ЗЫ Да, да, да... Дорогие Пайтон и не только фронтенд, разработчики :).
@@firststepsforward Большое спасибо за развёрнутый ответ! На бусти уже подписан. Сейчас попробую подключиться в телеграм
Годнота! Спасибо🙏
Пожалуйста!
Приветствую, видео интересное получилось! Спасибо !
Рад Стараться!
А на чем современные и самые опасные вирусы пишут?
На ассемблере или Си.
Трудно смотреть когда ты начинаешь коверкать на английском языке
Бросайте в личку в телегу - буду исправлять.
Добрый день! Очередной отличный урок! На самом деле хотелось бы получать какие-то "домашние задания" после каждого урока. Алгоритм действий очень понятный, но имена и аргументы функций очень быстро забываются и приходится смотреть старый код. Думаю стоит больше практиковаться с каждым новым методом, функцией или действием, тогда информация не будет так быстро забываться
Это получится уже полноценное обучение. Такая мысль есть, нужно решиться и попробовать всё-таки. Что-то буду пытаться сделать, соизмеримое со свободным временем. Нужно решиться :). Спасибо за советы и интерес!
Standart?
?
Лайк и комментарий в поддержку канала!) Я знаю что Ассемблер - это очень и очень сложный язык. Поддерживаю ваши знания и спасибо за видео
Благодарю!
@@firststepsforward Спасибо большое за ответ! Можно вас попросить снимать видео почаще с Python? Очень интересно знать, какие меры защиты возможны + возможность его упаковки в .exe (я понимаю что он интерпретируемый), чтоб никто не смог видеть исходники. В общем хочется увидеть много видео на подобную тему. Вы очень хорошо и подробно объясняете. Спасибо большое! P.S. Вас реально приятно слушать
@ Спасибо. Что-то буду думать...
Всем здрасти)
Здравствуйте! :)
а что не так с с++
Всё так. Просто, как говаривал Бьёрн Страуструп: "Си - это ассемблер для ленивых!" А вот про С++ он такого не говорил :). Благодарю за интерес!
@@firststepsforward В С++ много разного мусора, который перетащили в стандарт из высокоуровневых языков, и продолжают тащить, все эти вещи на С вполне можно реализовать, без всяких стандартов, если человек владеет Computer Science, отсюда вытекает, так как язык разросся и продолжает расти, знать его весь не представляется возможным, плюс как я понял он генерирует не предсказуемый из-за компиляторов, асемблерный код, в отличии от C. Насчет высказывания Бьёрна Страуструпа он говорил и такие вещи:"С++ был создан главным образом потому, что мои друзья, да и я сам, не имели никакого желания писать программы на ассемблере, С или каком-нибудь языке программирования высокого уровня, существовашем в то время. Задача заключалась в том, чтобы сделать процесс написания хороших программ простым и более приятным для каждого программиста". Выдержка из книги Стивен Прата: "Язык программирования C++. Лекции и упражнения" P.S. Хотели как лучше, а получилось undefined behavior, еще больше чем в С.
Да. Всё правильно...
Добрый день! Спасибо за очередной отличный материал! Spy++ действительно невероятный инструмент для получения информации об окнах в window. Я провёл несколько экспериментов с отключением и включением разных окон, но столкнулся с проблемой. Практически всё работает, кроме скрытия chrome или discord. У них имя класса "Intermediate D3D Window". Это какое-то другое api для работы с окнами или почему тогда у них одинаковые классы и + на них не работают команды закрытия/открытия?
Доброе время суток! Для Хром Имя класса окна будет Chrome_WidgetWin_1. Наверное более удобно искать нужные окна с помощью Windows Scaner. Программа также входит в число утилит RadAsm пакета fasm64. Фишка в том, что это базовое окно - основное родительское. Оно не видимо. Остальные - включая "Intermediate D3D Window" - дочерние. Вы сверните все окна (окна всех запущенных приложений), за исключением Хрома, окно Хрома сделайте поменьше и аккуратно перемещайте прицел Windows Scaner за область окна Хрома. Невидимое окно проявит себя. Кстати, в Windows Scaner, если инициировать "Управление" (кнопочка в нижней части), то с помощью кнопочки "Окно видимо\невидимо" в виде глаза можно протестировать верно ли найден класс. С Дискордом - по той же схеме... Благодарю за интерес к каналу!
Это не только лучшая программа для отладки, но также и отличная обучалка по работе с машинным кодом для новичков, где все показано наглядно и интерактивно. Жаль что я не знал о её существовании когда только начинал изучать работу стека.
Несомненно!
Гидра, мне нравится
Хорошая вещь!
Первые шаги в С++ были сплошные переполнения и заходы в чужие пространства. Всего то на простом небезопасном массиве )))
:).
Хех, неожиданно и, на самом деле, очень интересно. Вообще в Python есть поддержка для расширений на С, плюс также можно использовать код из скомпилированных на других языках библиотек (dll в случае с windows).
Посмотрим, что будет. Пайтон напоминает мне Делфи в период расцвета. Такой хайп был! Может покруче, чем сейчас с Пайтоном... В Python есть конечно поддержка для Си и Длл-ки прикрутить можно, впрочем как и в других языках... Но это - так называемые "костыли" - не красиво, не правильно и даже смешно! Зачем мне через Пайтон писать код на Си? По-моему - глупасть на уровне дебилизма :). Я понимаю, что больше любишь то, что лучше знаешь, но ведь из-за этой "любви" ничего не становится лучше или хуже... Эти Два языка (скриптовый и низкоуровневый), эффективно реализуют абсолютно различные сферы прикладного программирования. Почему бы не попробовать найти в этом пользу?
@@firststepsforward Delphi (именно связка IDE + Object Pascal) был явлением относительно новым все-таки (быстро пришел, быстро ушел), а питон появился +/- в начале 90-х. То есть он как-то жил годов до 200x наверное не особо известным, а потом бум на скорость разработки и все такое - и популярность резко пошла вверх. Сфера питона активно подъедается "новыми" языками сейчас, но в области data science он пока в топе. И вещи типа Pandas и numpy (по-сути, те самые расширения на С) весьма востребованы. В общем, очень любопытно продолжение серии. Потому что любопытно в чем может польза от подобной связки.
@@andreyp5764 Да, да - всё именно так и есть... Спасибо за интерес к каналу!
Будет время, выпусти видео, где будет твое мнение об ИИ, как это повлияет на рынок труда.
Спасибо за интерес к каналу!
break this license I DOUBT >_<:drive.google.com/file/d/1fYd-NAxBcS9LxJ0HcXQqk3eZoLt1Udij/view
Прошу на телеграмм...:) Please, on telegram chat...:)
Это очень важная тема, с которой хотелось наконец разобраться, спасибо большое!
Да, важная. Этот ролик не последний про переполнение буфера стека. Заходите на канал! Благодарю за интерес.
Это что за чудо, а не канал Мне в вузе на направлении информационной безопасности так ясно и интересно не было! Теперь я знаю, чем на каникулах после сессии займусь:) Автору спасибо Если спустя время контент будет держать планку, то обязательно подпишусь на бусти - такие каналы необходимо поддерживать
Спасибо! Заходите на Телеграм чат и просматривайте ролики "Ассемблер и Си для Хакера " по-порядку - по номерам. Общая картинка раскроется более быстро и полно. Ревёрсинг без Ассемблера невозможен. Удачи!
Как же красиво и четко всё описано. Большое спасибо автору!
Пожалуйста!
Автору видео реально большой респект. Помню, как на курсе АКС (архитектура компьютерных систем) в ВУЗе проходили данный простенький эксплойт, на специально еще заготовленной редхет линухе с полностью консольным интерфейсом, где и нужные программы стояли, штук 20 (на каждый вариант) вот таких вот небезопасных с точки зрения буфера программ, и gdb. Что лектор, что практик, хоть я этих мужчин уважаю очень сильно, не смогли так ясно и по простому объяснить переполнение буфера студентоте, что многие, чтоб просто как-то защитить лабу, чтоб закрыть ИУП, как роботы повторяли за теми, кто вроде как понял, а по итогу не могли толком ничего на защите ответить, соответственно и баллы получали такие, какие и заслужили. Я хоть этот материал и понял, и типа вроде и помню, но это освежило память, да и само объяснение очень наглядное, намного лучше, чем было в моем вузе. Я думаю - такое моим однопоточникам бы тогда показать, то все бы лабораторную на максимальный балл сдали)
Благодарю! Очень приятно слышать! Заходите к нам на чат а Телеге :).
Автор красавчик, и видео интересное сделал, и в комментариях зо зрителям активно общается, респект!
Благодарю!
Приветствую! Я не программист, но лет 20 назад изучал ассемблер, и, в принципе, ассемблерный код немного понимаю. И в своё время меня удивляло, откуда берётся переполнение буфера, если на ассемблере всегда контролируешь размер передаваемых переменных. Мне непонятно, почему буфер расположен в стеке, а не в отдельной области памяти?
Стек - это и есть область памяти, просто работа с ней производится своеобразно. При желании можно работать со стековой памятью как с обыкновенной. Организация такой работы связана с экономией ресурсов памяти и процессорных мощностей для организации функционирования локальных переменных. Используемый размер памяти то растёт (входим в функцию), то уменьшается (выходим из функции). Если бы не было стековой организации работы с локальными переменными, то используемый размер памяти постоянно бы рос и она быстро бы заканчивалась. Можно было бы обойтись без стека, выделяя и освобождая память для локальных переменных - именно так иногда и делается, когда её размер можно определить только динамически - в процессе выполнения программы. В таком случае нужно было бы использовать системные функции malloc и free для выделения и освобождения памяти. Но это функции - значит будет отниматься процессорная мощность. На ассемблере не всегда контролируется размер передаваемых переменных. В коде используются функции библиотеки Си. Они уже написаны. Мы их просто вызываем с помощью ассемблерных команд, точно так, как могли бы вызвать с помощью кода на Си. Некоторые из этих функций (gets) не предусматривают ограничения количества символов строки-аргумента адрес которой передаётся функции. Поэтому и существует уязвимость. Спасибо за интерес к каналу.
@@firststepsforward Плюс ко всему производители компов сильно любят экономить денежки, поэтому ставить лишние виртуальные машинки и песочницы им было в лом и железо тогда этого не позволяло, так что имеем то что имеем!
Да. Первый процессор x86 был представлен в 1978 году. Экономия памяти тогда была очень актуальна. Внедрили стековое решение... До сих пор оно эксплуатируется. Мы живём на наработках 1978 года :).
ты сам все путаешь. и в си, и в плюсах, и даже в ассемблере, переполнение буфера происходит по одной причине: ты пишешь данные за пределы выделенной памяти. не важно, стек это, куча или статическая область. автоматическое выделение в стеке не снимает с тебя ответственности за контроль границ. "эффективность" стека тут вообще ни при чем. переполнение буфера - это всегда ошибка программиста, который не проконтролировал размер данных. и да, я прекрасно знаю, как работает стек, и как раз поэтому понимаю, что переполнение буфера - это не проблема "абстракций", а банальная ошибка доступа к памяти. и еще, выделение памяти под буфер в куче не сильно увеличивает накладные расходы, если делать это грамотно.
@@firststepsforward буфер - это просто область памяти, а стек - это структура данных, которая организует работу с памятью по принципу LIFO. стек используется для хранения локальных переменных и адресов возврата, но это не значит, что все локальные переменные являются буферами. рост и уменьшение стека связаны с вызовами функций, а не с работой с буферами. malloc и free используются для динамического выделения памяти в куче, а не в стеке. и да, они "отнимают процессорную мощность", как и любая другая операция. на ассемблере ты можешь контролировать все, что угодно, включая размер передаваемых переменных. gets - это плохой пример, потому что это заведомо небезопасная функция. использование gets - это ошибка программиста, а не проблема ассемблера или си. уязвимость возникает не из-за отсутствия "ограничения количества символов", а из-за того, что программист не проверяет размер данных перед записью в буфер. "экономия ресурсов" тут вообще не при чем.
К сожалению этот метод не работает с тех пор как посадили кукушку на стек.
Нет. Во-первых, Канарейку на стек посадили в Линуксе и очень давно. Настолько давно, что там это научились перепрыгивать уже лет 15 назад. Во-вторых - в Windows пошли сразу путём ASLR и DEP . Но это обходится - ролики на эту тему планирую выложить. В третьих - как же не работает, когда работает :).
@firststepsforward тестил недавно DEP включён, пример собран msvc 2022 с включённым GS параметром. Ведёт себя по-разному то на ret выкидывает В общем трюк не проходит...
Я ещё раз повторюсь. То, что изложено в видео - работает. На бусти выложен шелкод и эксплоит. В данном случае не нужно выполнять код в стеке. В данном случае в стек записываются данные - другой адрес возврата. Канарейка бы спасала в этом случае, но MS VS (у меня 2019) и gcc (Pelles C) по умолчанию не включают её в проекте для Windows. Не будет работать по этому шелкоду при ASLR (включено по умолчанию в MS VS 2019) - потому что шелкод упрощён (канал вообще-то, для начинающих) и динамически не отслеживает реальный адрес, который естественно меняется при каждом новом запуске. Возможно, конечно, что в каких-то других средах разработки ( MS VS 2022) дефолтные настройки другие. Но Вы же понимаете, что стопроцентно действующих уязвимостей не бывает. Я делал всё как на видео. Среда разработки - RadAsm, ассемблер - masm32. Настройки по шаблону Console App->WinCon.tpl по умолчанию. Шелкод запускается коммандной строкой. Всё работает. И ещё раз повторюсь: Обойти запрет на исполнение в буфере (DEP) также можно достаточно просто. Спасибо за интерес к каналу!
@@firststepsforward я порой просто поражаюсь вашими знаниями) спасибо что делитесь
Спасибо! Не преувеличивайте! Я не умею принципиальные схемы без пояснений читать... А сегодня не без помощи Ютуба с трудом прозвонил сломавшуюся кофемолку... Завтра поеду за термопредохранителем :). Так что, Вам аналогичный респект :)!
Доброе утро
Лайк поставил 👍
Спасибо!
Не потеме конечно. Но как ты относишься к linux и nasm и почему в начале говорил про fasm и masm а сейчас пишем только по masm?
По теме. Хорошо я к Линуксу отношусь. Я канал начинал с Kali Linux. Даже на английском языке :). 8 Видосиков выложил... Прекратил, потому что не было посещаемости - пропал интерес. Может с языком перемудрил, может с Индусами соревноваться бестолку, а может ещё что :). Если хотите - посмотрите. Я планировал 32 битное программирование пройти на masm32, а затем перейти на 64 битное и уже с fasm. С 32 битным ещё не закончил. Думал, что закончу быстрее, но зритель считает, что реверсинг, и хакерские штучки всякие интереснее, чем просто основы программирования на ассемблере для Windows :). Если интерес не пропадёт, то дойду и до 64 битного фасма. Пока это всё на голом интузиазме. Кое-что по бусти подбрасывают, но усилий гораздо больше чем отдачи. Как-то так... Спасибо за интерес!
Спасибо за отличный видеоурок! На этот раз даже пришлось второй раз пересмотреть. Было над чем подумать На самом деле очень непривычно давать всю обработку операционной системе. Я несколько лет пишу на C++ и для меня привычно писать всё в стиле ООП. Так получается хорошо изолировать код и в будущем переиспользовать компоненты и развивать проект. А тут просто внешняя функция и + в C/ASM даже нет классов Теперь нужно будет разобраться как писать в C и в ASM, чтобы код понятный был Я раньше занимался ревёрсингом одной игры. Остановился на патчах (простые замены jnz на jmp чтобы открывать некоторые закрытые функции в игре) и на написании простых хеддеров для некоторых классов (чтобы из C++ их вызывать), ну и + minhook для перехвата функций. Сейчас хочу углубить свои знания и в особенности научится работать с дебаггером и возможно в будущем попробовать переписать тот же minhook. я столкнулся с проблемой перехвата функций с __usercall. там как то очень странно передаются некоторые аргументы. Для этого надо понять как всё работает "под капотом". Так что начал смотреть ваш курс и даже за первые уроки успел открыть для себя много нового. Очень надеюсь, что в следующих уроках смогу ответить для себя на ещё большее количество вопросов :3
Большое спасибо за интерес!
10: Потому что это язык программирования для натуралов!
:) С Новым Годом!
Хоррор для программистов 😱
В смысле? С Новым Годом!
Надо произножение подкчить, если нужна помощь, отпиши, у самого уровень B2-C1
Спасибо за предложение. Я перешёл на тематику Ассемблера и Си для хакера. Платформа - Windows. Англоязычный контент не прошёл. Низкие просмотры - там Индусы засели. В ближайшей перспективе восстанавливать не собираюсь. С Рождеством и Новым Годом!
год только начался а контент уже пошел) автор трудолюбив.
Удачи на канале! С Новым годом и Рождеством!
с Новым годом! вдохновения, мотивации, любознательности!
Благодарю,Вам также всего хорошего!
🎉❤
С наступившим новым годом! Хочу попросить Roadmap по реверс инжинирингу Я ток начал интересоваться и буду благодарен за совет с чего начать и что учить, спасибо
Учить реверсинг без ассемблера нельзя. Очень много важных моментов пересекается. Проходите ролики плейлиста "Ассемблер и Си для Хакера " по порядку до урока 20 - как минимум. Параллельно - выберите одну (не больше) книг по вкусу и почитывайте. О книгах ролик : ua-cam.com/video/oGARPKA0L5o/v-deo.html После этого переходите на плейлист " x64Dbg ", затем - "Reverse engineering " Всё понятно, просто и практично. Что непонятно - в Телеграм чате спрашивайте. С Новым Годом!
Посоветуйте софт для ускорения работы youtube, а то goodbyedpi уже не справляется
Я после Новогодних праздников продолжу заливать ролики на t.me/firststepsforward раз уж такое дело... Спасибо за интерес!
@firststepsforward Хотел ещё спросить, а какие то навыки в низкоуровневом программировании нужны для старта просмотров данных видео или же вполне можно начинать с базой знаний только из высокоуровневого программирования?
Можно вообще с полного нуля. Если проходить ролики по порядку. Параллельно - выберите одну (не больше) книг по вкусу и почитывайте. О книгах ролик : ua-cam.com/video/oGARPKA0L5o/v-deo.html В начале лучше Ассемблер и Си. Потом - Ревёрсинг. Всё понятно, просто и практично. Что непонятно - в телеграм чате спрашивайте. С Наступающим!
@@firststepsforward Большое спасибо и вас тоже)
12:17 не Ctrl + Alt + Del, а Ctrl + Shift + Esc
не "не Ctrl + Alt + Del, а Ctrl + Shift +Esc", а "Ctrl + Alt + Del, или Ctrl + Shift +Esc"
qemu вроде по бодрее работает
Вкусовщина, но ролик не о том. Тема - Error: VT-x is disabled in the BIOS Спасибо за интерес!
В первом видео сказано - минимум информации для лучшего усвоения, значит в этом достаточно показать только руфус))
Я думаю, Вам достаточно взглянуть было на название ролика или даже канала... Для Вас в канале - минимум информации. Настоятельно рекомендую не смотреть роликов, чтобы не тратить своё драгоценное время. Канал - для начинающих, а не для профи... С наступающим!
Впервые набрел на этот канал... Выглядит очень интересно. Автора с наступающим
Благодарю! С Новым Годом!
Наконец нормалтное программирование без всяких корявых библиотек. Спасибо!
Пожалуйста! С Наступающим!
можно письменную версию этой речи это легендарно
"Кто пишет кровью и притчами, тот хочет, чтобы его не читали, а заучивали наизусть" :). Благодарю за интерес!
Добрый вечер, возможно странный вопрос, архитектора х-86, на старыми и более новые процессоры ассемблер один или на каждый разный ???@@firststepsforward
@@СаидАбдуев-д2в Определённые команды - основные не меняются. В новом процессоре добавляются новые команды. Поддержка старых остаётся. Например к Pentium MMX были добавлены команды MMX расширений для работы с мультимедиа. Все старые команды остались. На основных командах можно написать любой код для любого поколения процессоров. Новые команды расширений используют для более быстрых специфических расчётов.
@@firststepsforward я читал статью, где говорилось про кроссплатформенный язык Ассемблера, такой есть ???
@@СаидАбдуев-д2в Нет. Ассемблерные коды, написанные для одной архитектуры (например, x86), не будут работать на другой (например, ARM) без изменений. Разные операционные системы могут иметь различные системные вызовы и соглашения о вызовах, что также ограничивает возможность использования одного и того же ассемблерного кода на разных платформах. Ассемблер не является кроссплатформенным языком в полном смысле этого слова. Однако с помощью различных подходов и инструментов можно добиться некоторой степени совместимости (например условная компиляция).
RadAsm +/- нормально работает. С Pelles C какая-то непонятная проблема, на любую попытку компиляции получаю: Building hello.OBJ. *** Error code: -1073741819 *** Done. Ставил Pelles как с сайта так и из архива, система Win 11, админ. права пробовал. Пробовал в том числе hello world - project (который есть сразу после установки). В чем может быть причина?
Проверьте не слишком ли длинный путь к Pelles C и не содержится ли в названии пути кирилица.
установи 10-тку
@@firststepsforward поставил в ProgramFiles 86 потом в ProgramFIles, путь не длинный, путь к проекту диск Д, потом путь проекта в самой папки Пеле.
Это Вы на Телеграм чате спокойной жизни не давали :)
@@firststepsforward Конкретно я не писал в чате) Заходил, но не писал. Что касается проблемы выше, то она не ушла, но как оказалось если не компилится первый раз, то скорее скомпилится во второй, а если снова нет - то уж наверняка в третий. Никогда с тамим не сталкивался но факт что компилится в целом норм, но не с первого раза) Путь у меня, кстати, максимально короткий, только латиница в пути.
Так ты не программист ты хакер ёпта¯\_(ツ)_/¯
Даже не знаю, для Вас эта новость как плюс или как минус? В принципе, можете рассматривать так: "Программисты - это подмножество хакеров" или так: "Хакеры - это подмножество программистов..." Как по мне - разницы нет :)... С Новым Годом!
С наступающим Новым Годом! Спасибо, что продолжаете заряжать знаниями и оптимизмом
Удачи в Новом Году!
и вас с наступающим) надеюсь канал будет только расти
И Вам всего наилучшего!
С наступающим новым годом! Спасибо за бесценную информацию. Здоровья и сил Вам на развитие канала.
Ура!!! Как же без Вас! Всего самого наилучшего!!!
С наступающим праздником 🎉
Удачи, счастья и интереса к жизни!
Спасибо Новому Году за то, что твой канал попался мне в реках!
Благодарю, всего самого наилучшего!