Пишу программу в машинных кодах
Вставка
- Опубліковано 30 вер 2024
- #soer #itubeteam
Основной канал для общения и публикации новых видео - Телегарм - t.me/softwaree...
Спонсорство - donate.s0er.ru
Сайт платным контентом - soer.pro
Зеркало для видео Дзен Видео - zen.yandex.ru/...
GitHub - github.com/soe...
Чат для программистов - / discord
Группа ВК - codeart...
Не, ну это изи)) Давай теперь следующий челлендж : написать программу водя намагниченной иголкой по блину жесткого диска
Vlad Bubliu Лучше перфокарты нет ничего для мануального кодирования
А почему иголкой - сразу ломом :)
Надо было сделать видео, в котором он разговаривает в двоичном коде :)
@@Uni-Coder зачот :)
по обычному блину
побежал программировать микроволновку )
а вообще очень интересно, но ни...я не понятно )
То, что 50 лет назад было суровой правдой жизни, теперь выглядит как хитрый трюк ))
не такой уж суровой, если вспомнить какой средний размер программы был в те времена
даже меньше чем 50, в начале 90х игру питон вводил с журнала )
А еще тогда люди не называли код на ассемблере машинным кодом :)
@@KirillBerezin он писал же в машинных кода просто смотрел коды команды соответствующие ассемблер командам или я не прав
@@KirillBerezin потому что код на языке ассемблера != машинным кодам
Как говорится: Ждем курс написания сайта на транзисторах...
жди
@@AntiBandera господин Соер шуток не понимает)
@@ИванНиколаенко-м2р, по-этому - ждём.
ахахахах
Схематически это не слишком сложно. Тут проблема в количестве транзисторов и помехозащищённости.
Очень хотелось бы увидеть видео о написании фронтенда сайта на ассемблере, а то HTML сильно тормозит.
тогда и браузер надо свой писать, на веб ассемблере еще может как-то реально.
ну можно сделать фронтенд без html css и js на canvas/webgl + webassembly но зачем, в конечном счете получится своя реализация аналога html и css)
@Сергей Каракулов сказать программисту что уже существует библиотека для решения его задачи. Это все равно что сказать поэту что уже написана песня о любви.
Есть webassembly, но пишешь как бы в движке браузера. Очень крутая и интересная штука
@@СергейКаракулов-в7з в figma кстати так и сделали
Теперь следующий этап - написать собственную ос и захватить 99% рынка
Всего-то и надо 38 лет интенсивного развития.
ru.wikipedia.org/wiki/MS-DOS
38 лет = 324 672 человеко часов
@@KnyPovir просто часов. Человеко-часы это сумма рабочих часов всех людей, которые работали над проектом.
@@Евгений-п1л1ъ/videos
Тогда весь юмор теряется...
@@Евгений-п1л1ъ совершенно верно. когда 40 человек сидят на совещании всего два часа, они убивают две недели рабочего времени.
В наше время это немного похоже на то, как если бы человек вышел из экскаватора и начал копать руками
Когда у тебя есть экскаватор, а надо аккуратно посадить одно семечко в маленький горшочек то почему бы и не вылезти из экскаватора?
@@Veter1992 для этого есть лопата, но уж явно не руками
@@5классвиленкин-ъ4п нет я хочу что бы ты копал руками хочу ! 😂😂😂
@eugene martein так черенок давно уже существует
Отличный комментарий! В точку! Они говорят о возможности работы с процессором напрямую, но на деле - предлагают отложить фотошоп и 5 часов подряд рисовать пиксели в пайнте.
Настоящие мужики делают свой проц в spice-симуляторе со своим блекджеком и опкодами.
Я не настоящий, я всего лишь с Microblaze работаю :-P
пфф.. на 155 логике они его делают))
@@andrsam3682 пффф.... даже на релюхах;)
На андроид маркете есть эмулятор советского калькулятора электроника мк54. Когда чуваки писали исходный код, вся документация уже была утеряна, а завод лежал в руинах. Так вот оригинальное содержание ПЗУ восстанавливали с помощью микроскопа
@@Pan-ux3bq по руке от терминатора)
До сих пор помню многие машинные коды PDP-11 (Электроника-60). Это как первая любовь, помнишь всю жизнь. Создавали программы сразу в машинных кодах в 1985 году, потом записывали на перфоленту. Помню, что код 177 (восьмеричный) - были пробиты все отверстия, в этих местах лента часто рвалась :).
Можешь в машинных кодах ? Можешь ) Собственно моя первая программа была в машинных кодах и была взята из журнала Радио (конец 80-ых), в момент когда родители купили компьютер с забавным названием Микроша (процессор КР580) )) Это был кайф от программирования ! Хочешь изучить тему, разбери ее на молекулы. В последующем на чистом машинном написал две игры с псевдографикой и компилятор Форта, начал было трассировщик писать, но школа закончилась поехал дальше учиться. Вспоминаю с ностальгией. Хочу сказать, что если потратить на это определенное время, то даже в коде не сложно программировать. Главное заложить базис в голове.
На тот момент, кстати, переходить на ассемблер и не было никакого желания. Казалось, что это лишняя трата времени на писанину. Да и архитектура процессоров КР580 и памяти способствовала, не такая сложная как у современных ПК. С другой стороны при наличии соответствующих инструментов можно и сейчас программировать в коде.
написал компилятор пока был школьником в машинных кодах?
мужик не делай из нас дураков, это невозможно
не хватит ни мозгов школьника, ни времени
@@marat-nagayev послушайте интервью Стива Возняка, где он говорит что написал компилятор Бейсика для первых Apple на ассемблере. Написал он его за достаточно короткое время. Ну и в качестве кокетства добавлял, что в первой версии не смог или не успел добавить операции с плавающей точкой в бейсике. Вы же не сравнивайте компиляторы сегодняшнего уровня с кучей библиотек и компиляторы 80-ых ! И еще раз - архитектура памяти была упрощенная. При достаточном погружении (практике) писать на машинном языке на тех машинах получалось даже быстрее чем на ассемблере. Вы видимо не представляете объема работы. И уж тем более не представляете внутреннюю красоту языка Форта, ядро которого (без библиотек) может уместиться в кэш современного процессора. И потому, к слову сказать, очень быстрого в исполнении.
А на просторах интернета можете найти людей которые совершили подобный "подвиг" и тоже написали свой компилятор Форта пусть даже и не в машинном коде...
Напиши нейросеть в двоичной коде
Го в троичном
Го в квантовом
Сделаю вид, что понял твоё высказывание)
Можно умереть наверное прежде чем ее написать до конца. Нужна что то выше этого примитива.
А ты знаешь толк в извращениях.
На zx spectrum в середине 90-ых только так и программировал. Тысячи строк на ассемблере, оптимизация кода расчитывая количество тактов. Сегодня же 90% кода тормознутый порожняк.
Не говори, ELITE занимала 40 килобайт, а щас я извиняюсь сpaнbIй мессенджер, в котором ни байта графики, только буквы и смайлы - 50 мегабайт ! ) дрова на видяху анадысь качал - 550 мегабайт ! Это ж как надо разучиться программировать так за 30 лет, не понимаю...
@@parametrico нету смысла что-то экономить в ущерб времени разработки когда ресурсы довольно дешёвые
Это где такое сегодня ? 👀90 % порожняк ? 🥴та ты фуфло какое-то гонишь . Кто залайкал тя непойму .такие же фуфела как и ты походу 🤾
Раньше чистый код писали, а сейчас, если что-то надо - фигакс, линкуем целую библиотеку. Нужна поддержка h264 - прилинкуем целый libavcodec в несколько десятков мегабайт и сотней ненужных кодеков и пофиг, что 95% кода оттуда никогда не будет вызываться. Или exe-шник Doom 3 весил 5 мегабайт, а в Doom 2016 два exe-шника, каждый по 100Мб - один для vulkan, другой для opengl - это даже смешно, учитывая, что движок не стал в 20 раз круче. И текстуры раньше сжимали в jpg, а сейчас фигачат без сжатия. Поэтому такие слоновые игры стали.
@@Bublerkin Глупости пишете. То что не будет вызываться в код не попадет. Кто хочет оптимальный код, нет проблем, пишите на С и даже асме можно если сильно нужно. А если операционка мешает есть DOS.
Очень интересно, но не чего непонятно
Сначала он в какой-то программе набирает код на языке ассемблера, иструкции, что делать, получает их машинный код в 16-ти ричном формате, потом их загоняет в файл и запускает.
Ещё бы показали как писать на джава шикарно было бы и понимать в том хоть что то
@@MisaNia25, это все есть здесь же, на ютубе. Просто нужно писать соответствующий запрос на поиск, а не комментарий к видео.
Начни с грамматики русского языка, а потом все легче пойдет
@@КонстантинПетров-у5ц всЁ пойдЁт, действительно. Нужно знать русский
Растёте :) отличная подача и свежий вид )) приятное видео
Alexander Savchenko прикалываешься писюн? Нихуя же непонятно!!!!!
Очень странно, вроде спрашивали написать на машинных кодах, а не на ассемблере.
Помню в детстве изучал ассемблер, и при написании программок компилировал их в com файлы, потом через дебагер смотрел что происходит с машкодом, ну и со временем начал писать прямо машкодом com файлы, так как это проще, быстрей, и не нужно компилировать. К примеру вот программа смены текстового видеорежима в досе B8 00 00 CD 10 CD 20 чтобы получить другой видеорежим нужно 00 00 заменить на 03 00.
Блин, уже больше чем 25 лет прошло, а до сих пор помню, а что вчера было забыл.
Воу-воу-воу полехче это называется binary injection, Хаккер Соер вернулся :)
А я вот не сомневаюсь что однажды вот так вот невзначай в развлекательно-обучающем ролике Соер покажет как написать вредоносную программу ;D
PS: в сети и на гите можно най ти статьи как написать загрузчик под биос, если понравился этот ролик то лайк Соеру и вам понравиться написать загрузчик т к он не ELF не PE а именно RAW ни каких библиотек и единственная программа которая запустится на вашем ПК после перезагрузки если вы её вздумаете установить :)))
PS2: досмотрел видео до конца:) не совсем binary injection но близко к этому :)
Эх, даже нас в универе этому учат, а я как бы вообще на квантовой радиофизике
Расценивай это как плюс. Не в каждом вузе так хорошо учат студентов физиков программированию. А ведь это очень востребовано в научных исследованиях. (Сам учусь на физике. Программирование присутствует, но не в таком обьеме)
@@Blendershick та я не спорю, просто наш факультет это электроника с основ, но програмипование кусками, это просто составляющая курса микропроцессорв
@@gorglefterov3532, сделай сталкер 2
Если мы не заглянем в будущее оно кнам не прейдёт
Прикольно, но хотелось бы увидеть реализацию elf/exe с нуля, без кода посредника и вмешательства компилятора ))
Просто лайк. Те кто когда то ковырялся в Радио86РК, Спецалист, Микроша или в подобных монстрах эры начала персональных компьютеров, помнят, что такое Ассемблер.
куда же без него... половина игр хранило жизни в регистре А , перебор... LD A,254 всегда хватало ))
basic на квант БК в 1997 году. Первый комп после приставок, у меня был уже Panasonic 3DO, но после знакомство с Квантом, не спал суток двое. Документации не было, просто угадывал для чего какая команда нужна. А потом подарили книгу basic для детей, тут все и началось...
@@VERTinBY А DEC A на INC A менял, чтобы жизни, когда помираешь, увеличивались? :)
Синклер-Спектрум!!!
Помню как клавишам действие научился присваивать, лучший день в жизни был LET команда :)
Ссылка на функцию - "гениально". С таким же успехом можно было показать, как колить на опкодах в дизассемблере :)
Пролог и Эпилог (push, pop) не требуется
Просто: mov eax, 5 ; ret;
Вот их этих лишних push и pop образуются тормоза у всех программ.
@@Slawaxx Стек в быстрой процессорной памяти, в кэше. Так что пох.
@@КотЧерный-ю1ф В некоторых задачах (типа однобитного цифрового осцилографа) приходится заморачиваться на то, что быстрее:
inc eax
inc eax
или
add eax,2
push pop нужны, первый вариант - mov eax, 5 - это только частный случай!
в общем же случае используется стек, для этого его надо переопределить
Интересно, почему не получилось прочитать сразу в mem?
У меня все сработало:
void *mem = VirtualAlloc(0, dataSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
fread(mem, dataSize, 1, fp);
Правда, под виндой и на C++, но разницы быть не должно
ну ты же mem все равно алоцировал
@@LtGenFlower Так соер два раза аллоцирует, когда можно один раз
@@Uni-Coder костыль :)
Это понятно и легко. Некст челлендж уровня impossible - сделать исполнение шеллкода, но помещая в rwx память не все инструкции сразу, а по одной. Так, чтобы в памяти в момент исполнения всегда была только 1 инструкция, после исполнения которой идёт ее «затирание» и передача управления на следующую ,которую мы также, как в этом видео прокидываем из кучи. (В куче инструкции могут находится в шифрованном массиве, к примеру)
Получится прототип защиты кода в памяти.
Либо второй челендж уровня impossible - на вход получаешь тот же шеллкод. Имплементируешь алгоритм для поиска rop гаджетов на основе инструкций своего шеллкода. Импортишь хаотично dll и там ищешь эти гаджеты. Потом передаёшь управление от гаджета к гаджету, тем самым исполняя свой шеллкод. Опять же в таком случае шеллкод будет не в одной странице rwx, а разбросан по исполняемым адресным пространствам разных dll. Осилишь?))
Ух... ностальгия аж вспомнился первый курс и радость после написания драйвера на asm для точечно-матричного принтера
А мы писали контроллер для плазменного резака на tasm, на судостроительном заводе, я другу помогал, а так у меня образование фазанка :D
модем для датчиков на магистральных газопроводах - моя дипломная (ассемблер) ))
Красавчик
Ассемблер это не машинный код, а так норм
Что я сейчас посмотрел? Что происходит? Зачем мне это? Какой вообще в этом смысл?
Но, блин, так интересно!
Гений, нет слов, благодаря тебе я сделал генерацию опкодов для моего ассемблера!
Нихуя не понял,но очень интересно!
Всегда интересовал вопрос, как работают JIT компиляторы, если executable память read only, а тут прямо просвещение снизошло... Все таки mmap умеет очень многое
Хз как на линуксе но всегда можно сказать что память rwx
Ты чего матом-то ругаешься?
Скажите ещё что-нибуть на JIT компиляторном.
Наткнулся на это видео случайно.
В прошлом году на 1 курсе универа проходили C/C++. Практически никак ничего нормально не объяснили, в итоге я так и не понял что такое эти ваши указатели.
Для меня это осталось чем-то абстрактным, нет, я понимаю указатели на переменные, вместо того что бы их объявлять заново, но я совсем не понимаю их как аргументы у функций или же если они, как на 1 листинге в видео (4:41) представлены: "char **binaryCode;", "void** mem= ...;", "int (*runCodeFunc) () = mem;".
Почему в одном месте звездочка ставится перед переменной, а в другом сразу после типа данных, без пробела, а в третьем вообще в скобках, да еще и после скобок зачем нужен пробел и еще две пустые скобки "int (*runCodeFunc) () = mem;"?
Это не машинный код, зачем вы заблуждаете людей..... вы пишете спомощью языка асемблера........ который если по простому как и любой другой язык програмирования , переводит введеные в него закарючки шеснадцетиричной системы понятные ему в машинный код. Вы нихрена незнаете и не умеете писать на машинном коде........ всем кто хочет писать на реально машинном коде, стоит уяснить что машинный код это коды написанные не в 16ричной системе счисления а в ДВОИЧНОЙ И ТОЛЬКО В ДВОИЧНОЙ но это уже совсем другая и очень тяжёлая работа.......
Особенно тема про непонимание шуток интересная! Можно развернуть её подробнее?
Не, ну вроде бы говорилось, что всё будет изначально писаться в машинных кодах, а в итоге мы видим ассемблирование. Ясное дело, что в машинных кодах писать геморрой ещё тот, но тогда и видео нужно было называть иначе.
Это простое использование ассемблера, в код которого передается значения в двоичном формате, хотя все остальные значения, как видно на видео, передаются в шестнадцатиричном формате. Ассемблер, это уже не машинный код. Вопрос, наверное, состоял в том, чтобы писать код чисто по адресации, т.е. чисто бинарные числа.
Не нужно останавливаться - числа нужно вводить с перфокарт
Написание программы в машинных кодах, это когда ты САМ, а не программа, переводишь мнемоники ассемблера в числа, сам рассчитываешь смещения и адреса и вводишь их в файл. Так что, у автора всё по-честному.
@@СергейМоскалёв-с3ь Покажите в видео где там машинный код, написанный автором, а не выведенный компом на экран? Автор использует только ассемблер для данной ОС. push, mov, ret это по вашему машинный код?
Почитайте Википедию что такое машинный код.
ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4
А вот пример, именно программы, написанной машинным кодом из этой страницы:
Программа «Hello, world!» для процессора архитектуры x86 (ОС MS DOS, вывод при помощи BIOS прерывания int 10h) выглядит следующим образом (в шестнадцатеричном представлении):
BB 11 01 B9 0D 00 B4 0E 8A 07 43 CD 10 E2 F9 CD 20 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
@Vitalii Yarema где же это машинный код? Это просто буковки и циферки. И уж точно, прерывание 10h не имеет отношения к машинному коду. Вы запутались в абстракциях.
@@S0ERDEVS Это вы выложили видео о машинном коде, а не я. Не надо переводить стрелки. Машинный код, к вашему сведению, это только двоичные цифры (0 и 1), которые могут быть представлены при написании кода в шестнадцатеричном представлении. Этот код и сохраняется в байтах в файле, который потом выполняется процессором.
Вот и ответьте где у вас на видео машинный код? У вас чистой воды использование инструкций ассемблера. Это, конечно, хорошо, понимать и уметь использовать инструкции ассемблера, но это не машинный код.
Что значит прерывание 10h не имеет отношение к машинному коду?
Запомните, машинный код, это просто всё в цифрах, без слов mov и других.
Ну так неинтересно. Есть же полно проектов где люди пишут свои ос которые работают без винды линукс сами по себе. Значит это возможно. Весь смысл программ в машинных кодах это удаление кодовыхипрослоек ос чтобы достичь максимальной скорости.
Я не понимаю почему никто не пишет приложен я без ос. Например такие крупные как игры.наличие ос Оно конечно хорошо это халявные драйвера для устройств. Но дело в том что на данном этапе наличие сервисов ос обладает огромной сложностью из использования.
сложность использования сопоставимой с самостоятельным освоение железаа.
По этой причине у нас расплодилась армия программистов всех мастей. Потому что ос безумно усложняет весь процесс наличием огромного слоя уровней абстракции которые ещё и не стабильные и их меняют постоянно.
Дети, если хотите развлекаться, то возьмите на свалке старый рабочий компьютер и установите ДОС или Виндовс 98. Эти операционки поставлялись с отладочной программой DEBUG, где ассемблер и дизассемблер, в машинных кодах все можно писать и исправлять. Р.Джордейн Справочник программиста персональных компьютеров типа IBM PC...
когда ты программист ПХП. Смотришь на магию =)
нет, просто вспоминаешь лицей и первые курсы универа... и то, что это было у тебя в прошлом веке )))
@@orkoteg09 Этот прошлый век работает шустрее любой программы написанной на чем угодно, KolibriOS слышал?
@звизданутое солнце говно с мочей
Когда-то очень давно писал русификаторы и вирусы под DOS, а ещё раньше на машинных кодах под Spectrum.
Щас уже почти ничего не помню, блин.
Разве что архитектуру, которая можно сказать устарела.
INC DEC ADD OR XOR JP DJNZ IN OUT PUSH POP...
ну как такое забыть?? ))
лет 5 назад пересекся с MSP430. по старой ассемблерской привычке, переписал несколько библиотек для уменьшения размера )) (попутно нашел там несколько ошибок(!))
Я думал тут гуру без ассемблерных подсказок сразу будет писать, а так любой дурак сможет)
В 80-х годах прошлого века я в Политехнической библиотеке переписывал в тетрадку 16-ричные коды из журнала Apple Magazine и в институте их вбивал на реальном компе, получая в итоге работающую программу. Мой лучший результат - "взломать" текстовый редактор Apple II так, чтобы он понимал кириллицу. Правда, пришлось пожертвовать важной функцией copy/paste блоков текста.
Конечно многое зависит от операционной системы, но в данном случае мы написали только функцию, для выполнения которой надо откомпилированную программу. Используя другие операционные системы (например DOS или Windows 7 x32 (как помнится это последняя ОС поддерживающая COM файлы)) можно писать напрямую в файл и выполнять этот файл. Магия в использовании формата файла COM. По сути ОС при загрузке просто размещает содержимое файла в памяти со смещением 0x100h относительно начала сегмента (начало сегмента занято заголовком содержащим служебные данные, такие как командная строка и прочее) и передает управление на первый байт загруженного файла.
Автор мог, например, взять DosBox, в нем 16-ричным редактором создать COM-файл. запустить и показать - вот то было б реально что просили. А тут, блин, во-первых написал какую-то туфту из 2 команд, даже не Hello, World, а во-вторых - реально писал-то он не в машинных кодах, а на ассемблере.
@@_ProstoTak А Вы помните хоть некоторые команды в 16-ичном виде сами?
@@ivankprod Зачем их помнить, на то таблицы есть. И да, я например еще помню что CD - это команда прерывания (и соответственно CD 21 - "int 21h", главное DOSовское API).
Но претензии к автору не в том что он не помнит/не знает каких-то кодов (ибо как я сказал выше - это справочная инфа), а в том что заявленное не соответствует сделанному.
легко, давай игровой движок вводя електроны в чипы памяти
Прикольно. Это вступление к инструкции "Как делать вирусы"?
все спрашивают с какого языка начать.
Well, the direct binary coding for x86 family is a masochism ;o) . Yet, for PDP11 the binary coding is not too more difficult then the usage of assembler mnemonics; it was enough to remember ~20 basic instructions and the remaining ~200 instructions could be derived from the logic of addressing. It was fun to write the self-modifying code for pdp11: for example a single instruction like 4747 or 14747 is in an example of such self-modifying code... It's well known why x86 the most ugly and non-elegant architecture has won the race for markets where efficiency is not crucial. So, it's not a surprise why x86 has lost to ARM for markets where efficiency is critical and even in HPC it has difficulty to keep a leadership (google for "Kunpeng 920" )...
Класс всё понял
Теперь пойду делать свою операционную систему ВИНДРОЙД 2023
Будет поддержка 128 ядер / ОЗУ 8 Тбайт
Кажется у меня температура
ВИНУКС
Все, теперь модули для qt писать буду не на js, а в бинарном коде
Ждем выпуск с перфокартами!)
С перфоратором. 😂
Ютуб просто оракул, уже 4 видео прямо по делу рекомендует
Сможешь сделать процессор из соды и огурцов ?
Ребята, помогите разобраться с кодом. Данный вопрос не по теме видео. Короче... мне нужно разобраться с imacros. Есть код: SET !VAR1 EVAL("\"{{!EXTRACT}}\".replace('','');") Он удаляет в ссылке "" , но как сделать так, чтобы при парсинге ссылок и конечной обработки ссылок, удалялось не только "" , но и "".
Помогите девушке) Заранее спасибо за ответ.
Может попробуешь написать очень простую OC?
в 16-ричном коде можно писать для процессора intel8080, там сам код является языком;-)
когда долгое время изучаешь дампы, то коды читаешь как книгу,
например
01 04 30 - BC
Логика в том, что nop - это xchg ax, ax
Тот чел вовсе не шутил. На самом деле если некоторое время плотно сидеть в ассемблере + дебажить проги дебагером (в т.ч. чужие) то написать прогу в машинном коде не составит никакого труда. Есть такой подзабытый формат исполняемых файлов в ДОСе *.com -- чтобы совсем не заморачиваться с заголовками, но мог написать и экзешник с двумя сегментами (кода и данных). В свое время я так развлекался в шестнадцатеричном редакторе, причем не используя режим дизассемблера для большего хардкора. А твой вариант читерский. Я же молчу что у меня в большинстве прог на Си ассемблерные вставки, правда? Потому что задача была поставлена совсем не такая. Задача была НАПИСАТЬ ПРОГРАММУ ИСПОЛЬЗУЯ ТОЛЬКО ШЕСТНАДЦАТЕРИЧНЫЙ РЕДАКТОР! Т.е. о любого рода компиляторах речи вообще не идет.Ты же начинаешь плавно съезжать и юлить. Сначала подменяеш понятие программы какойто функцией а потом достаешь -кролика- компилятор из широких штанин и так далее... Так серьезные люди, именующие себя софтвэйр инженерами не поступают. Дизлайк тебе за найобку.
чуток спустя... бляд я в шоке, даже опкода ret/retf назубок не знать. и mov eax, число. ну ты шутник однако. даже у меня спустя >20 лет это от зубов отскакивает. нахуй этот дешевый цирк? кому ты что собираешься доказать?
блин ностальгнул сразу в 1990 год ))) для zx spectrum писали игрухи ))
Очень интересно. Подскажите 2-3 книги небольшого объема (можно и на английском) чтобы лучше понять о чем здесь речь?
А ты можешь написать программу на BASIC ?
NX bit появился начиная с Pentium 4, а не с 286, причем он отключается в Bios
Ты до названия решил доебаться? Тогда пиши правильно: для Intel - XD бит, а для AMD - NX бит. А механизмы защиты памяти были давным давно на уровне сегментной памяти (если про 286) и на уровне страничной памяти.
Ну по сути чел на ассемблере писал
А го процессор на транзисторах
Прикольно. Раньше в средних школах учили делать ассемблерные вставки. Потому, что без них не выжать производительность. Теперь это мастер класс от профи.
В школе и про TASMучили. И то "профи" не до конца все понимают, объясняют.
Мы с вами наверно в разных школах учились, потому как в нашей всё ограничилось HTML
@@ВеселыйРоджер-н7ыв нашей школе учили word...
@@ВеселыйРоджер-н7ы В нашей вообще всё ограничивалось вордом и экселем
У нас в школе максимум был Паскаль.
Оч хорошо! А про __cdecl, __fastcall и другие можно поподробнее в другом видео (и про то, когда параметров у функции много)?
Евгений, хочу написать, что Вы крутой! Наткнулся на шуточное видео "Голая правда о программистах" и залип на канале просматривая все видео один за другим. Крутая подача, интересные темы! Удачи! Пожалуй подпишусь)
Мужик ты в рекомендациях, жди дурачков которые будут писать мужик, парень и т.д.(
Очень интересно. Жаль что нихуя не понятно :))
Не знал, что Линус Торвальдс владеет русским в совершенстве
Это конечно круто, но бесполезно.
Го про DDD TDD для джун-мидлов. Всё для новичков а джун мидам оч трудно расти.
В какой-то момент времени именно этого и хочется. Просто для души. А джуны и, тем более, мидлы должны уметь расти сами
Знать как что там работает не бесполезно. Бесполезно изучать изучать DDD и TDD, если не понимаешь как твой код работает.
@Пограммист Пальцетыкович ну я вот это могу исправить, а вот твоё остроумие уже вряд-ли исправишь. Как и воспитание. )
Да, есть такая проблематика. Там вот бы как-то бы уделить этому фокус и осветить этот момент. Но может быть и так - что просто ни кому не бывает. Небось архитекторы тоже где-то там сокрушаются :)
Этого добра и так навалом
"Можешь написать программу в 16-ричных кодах" - "Могу". Пишет функцию на ассемблере. Аудитория счастлива "ого как ты это сделал наверное ты супер умный". Эх, ютуб. В досе достаточно простая инициализация.
Вообщето это простейшее ассемблирование, на выходе ассемблирования получаются 16-ти ричные машинные коды. Погугли.
@@S0ERDEVS чем это принципиально отличается от кода на Си? Компилятор делает ровно тоже самое. Машинный код. Если это был рофл, то я не пригорел, в гугл посылать меня не надо.
Что бы не затягивать разговор - код на ассемблере называть машинным кодом - не верно. Это совершенно разные вещи. Писать на машинном коде = писать как писали до ассемблера. Этого в видео не было. Хотя технически возможно - для какой нибудь атмеги, или опять же в досе. Хипстерский контент с кликбейтным заголовком.
Код на ассемблере - это не машинный код, но код на ассемблере не может быть исполнен процессором, процессор может исполнять только машинный код. Поэтому для процессора код на ассемблере или на Си - это просто набор неисполнимых ASCII символово. В видео я выполнил ассемблирование и получил 16-ти ричные машинные коды, которые и были исполнены процессором - это 100% машинный код.
Если для вас принципиально как были получены машинные коды - путем ассемблирования, или из таблиц машинных кодов, то к сожалению сейчас все производители дают таблицы со списком ассемблерных мнемоник и соответствующих им кодов. Поэтому даже найти таблицу где не будет "ассемблера" практически невозможно.
Если для вас "66 05 01 00" - это ассемблерный код, то это не так. Это 16ти ричное представление машинного кода.
@@S0ERDEVS все верно, для меня принципиально, выполнялось ли ассемблирование или бралось из мануалов к процессору. Вы не писали на машинных кодах, вы писали на ассемблере. И нечего с этим спорить. Говорить что наличие ассемблирования не принципиально, тоже самое как говорить что писать на си, это как писать на машинных кодах. Всегда можно переключить комплятор в явный режим где каждой операции соответствует конкретная инструкция. Но люди так не говорят, и вы не говорите.
В итоге. Вы не можете на машинных кодах, и почти никто не может. Но это и не нужно. Главное что аудитория схавала.
И прошу, уберите этот поучительный тон, "это шестнадцатеричное представление машинного кода". Я же не говорю в каждом сообщении что знаю больше вашего (хотя похоже так и есть), вот и вы не говорите что "FF это не fight or flight, а 255 в шестнадцатеричной системе". Давайте опустим школьную программу уже. Меня досаждает когда рандомный некто мне обьясняет очевидные вещи. Говорите по существу пожалуйста. Или задайте вопрос если вам не понятна суть критики.
"Процессор не может использовать код на ассемблере". Я если честно пригорел. Я знаю как это все работает. Как бы вам сказать. Я могу написать в отличие от вашего в машинных кодах. Что нибудь простое, но могу. Читайте выше, я описал два варианта как это можно сделать.
ну я тебя за язык не тянул "я могу написать" - сказал? Сказал. Ок, давай ссылку на видос где ты пишешь в машинных кодах. ))))) Посмотрим твой скилл, а то понты кидаешь красиво, но уровень твой сомнителен, с учетом твоих сравнений языка Си и Асм. Будет видос, будет видно в чем разница. Или ты просто гудок?
Да... Мучение любителей линукс. В досе можно было вроде в .com файл записать голые команды и это запустилось бы. Деталей не помню. Но вроде когда то изучая ассемблер набирал так программы.
Помню подобное описывал Крис Касперски в статье "Дизассемблирование в уме".
Круто но не понятно
Как всегда Soer на высоком уровне👍👍👍 хотя код низкоуровневый 😂
Ни кто ни чего не понял..Ну ладно.....Поговорили о мёртвых языках так сказать...
Soer шуток не понимает, говорите? Хорошо.
Настоящие программисты делают так: COPY CON PROGRAM.EXE
Ждём в следующем видео. :)
подскажи, стоит ли переходить на венду?
Зачет 😂😂😂😂
Классное видео. Я считаю что что такой формат очень полезный, особенно для хардкорщиков)
Странно по твоему создатели KolibriOS и API Vulkan хардкорщики, или же люди старающийся сделать быстрее работу железа?????
@@СашСавар-ф5д И то и другое
В душе не е*у кто ты, но ютуб мне тебя порекомендовал. Поздравляю с этим, не всех он продвигает.
Некоторые комментаторы так неуважительно отзываются об ассемблере и машинных кодах как будто они сами написали современные языки высокого уровня.
Что это только что было ? Я в шоке Мэн )
Вроде бы nx-bit появился примарно с amd athlon 64, а xd-bit - в п4-прескотт ревизии e0 (или d0). В 286 добавили защищённый режим - наверное про него речь и идёт
Ваша правда, xd bit появился в пентиумах (nx-bit в amd). Я имел в виду, что идеи разделения памяти на исполняемую и нет появились очень давно. В 286 это было разделение на сегменты кода и данных, а не nx bit.
extern _printf
global _main
_main:
push rbp
mov rbp, rsp
mov eax, 0
mov qword ptr [rbp - 18], offset:.LC0
call _printf
pop rbp
ret
.LC0:
.string "Hello, world!"
Так это Ассемблер, а не машинный код. Большая разница.
Нет, он написал мини-функцию именно в машинном коде. Код ассемблера - это текстовый файл с командами на языке ассемблера. И этот код нужно скомпилировать в машинный. Здесь он сразу прописал программу именно байтами машинного кода, который не нужно скомпилировать, поэтому программа на C корректно вызывала и выполняла функцию, прописанную в машинном коде в текстовом файле. В языке ассемблер для присваивания ты пишешь слово "mov", обозначающее операцию присваивания, а далее через пробел куда присваивать, а потом через запятую что. Это по байту на символ текста. А он пишет такую операцию присваивания опкодами в два байта.
@@mr.indieperson1413 бегло смотрел, упустил этот момент где он в hex писал. Тру-машинный код - это напрямую сигналы электрические подавать битами. Шучу конечно))
Замечательное видео. Всегда считал машинный код чем-то непостижимым, для реальных хардкорщиков. А после видео, появился интерес к данной теме.
Про ассемблер вы наверное не слышали?
@@andrejvlasov5452 Нет, я слышал про ассемблер
Любой русский владеет машинным кодом, к сожалению только недокументированными командами.
Скажите а можно декомпозировать скомпилированный ( файл.рус) а обычный файл.ру
Посмотрите этот курс - ua-cam.com/channels/gzmIWuaCfpTpx3LuQ2dHEg.html. Станет все понятнее, от основ вычислений до работы процессора. ЗАлипательная фигня.
Сейчас очень сложно встретить настоящего программиста. Все только на своих высокоуровневых javascriptax и pythonax пишут. А ведь настоящий мужчина должен уметь добыть чистый кремний , примеси , собрать транзистор , потом процессор. Дальше блок питания от самодельного генератора , а потом уже писать код . И не на каких-нибудь pythonах , а не ассемблере .
Гораздо интереснее войти в ДОС и повозиться с программой под отладчиком deb. Написать, сохранить, изменить, пройти пошагово... Есть отладчики и под разрядность 32, 64. Реальный режим процессора, "нереальный". Когда-то народ такие фокусы с этим выделывал...
WriteProcessMemory
CallWindowProcA
вот он две великих функци на винде которые и делают инекцию кода в систей ечплорера.
а еще читайте статью "от зеленого к красному"
При помощи 16-ричного редактора? Слабак! Настоящие хацкеры могут написать программку в блокноте используя только печатные символы!!!111oneoneone
можешь написать программу для поиска простых чисел. в котором больше 56 миллиардов знаков.
Добрый день
Хотим прописать на свежепригнаном автомобиле Русский язык
Можете помочь?!
Нихао у ни производители огромные. Можно картошку не садить. Нет желания, нет, смысла... Нет перспектив.
Под DOS-ом, теоретически, можно было сделать всё честно в com-файл. Правда, нужно было правильно сделать заголовок com файла, не помню с окончанием, вроде тоже что-то нужно было. А так, если хотелось побаловаться, в редакторе VC писалась программа на asm, а компилятором, входившем в turbo c, всё компилилось в obj, потом в com (до 32 K).
А разве нельзя сразу спроецировать файл через mmap без чтения?
Типа как-то так: mmap(NULL, dataSize, PROT_READ | PROT_EXEC, MAP_PRIVATE, fp, 0)
Следующий уровень: написать программу строго в двоичной системе :D
Слушай, а ты в ассемблер можеш? Можеш разобрать ассемлер 64к? Обьяснить как это работает?
только соер может на изи писать машинным кодом, но для таких сложных языков как javscript, lua и тому прочее использовать stackoverflow
бллл!! А я как раз это искал.. вообще сколько лет гуглил - гугл тупо не давал ссылки(((( будто не существоало... ( странно это... оч...
Создатели полиморфных вирусов делали челленджи сильно сложней.
Молодец, что используешь С++. Но зачем же было писать всё в стиле С? Толку тогда от самого С++?
Сам гайд очень крутой и полезный, я буду пользоваться. Спасибо тебе, брат!
Но не буду делать это долго уж точно. не понимаю, зачем нужны эти костыли, если есть ассемблер, который и нужен для этого, так ещё и является самостоятельным языком, ему не надо поддержки других.