Пишу программу в машинных кодах
ฝัง
- เผยแพร่เมื่อ 11 พ.ย. 2019
- #soer #itubeteam
Основной канал для общения и публикации новых видео - Телегарм - t.me/softwareengineervlog
Спонсорство - donate.s0er.ru
Сайт платным контентом - soer.pro
Зеркало для видео Дзен Видео - zen.yandex.ru/id/5f578bdf22e2...
GitHub - github.com/soerdev
Чат для программистов - / discord
Группа ВК - codeartblog
Не, ну это изи)) Давай теперь следующий челлендж : написать программу водя намагниченной иголкой по блину жесткого диска
Vlad Bubliu Лучше перфокарты нет ничего для мануального кодирования
А почему иголкой - сразу ломом :)
Надо было сделать видео, в котором он разговаривает в двоичном коде :)
@@Uni-Coder зачот :)
по обычному блину
То, что 50 лет назад было суровой правдой жизни, теперь выглядит как хитрый трюк ))
не такой уж суровой, если вспомнить какой средний размер программы был в те времена
даже меньше чем 50, в начале 90х игру питон вводил с журнала )
А еще тогда люди не называли код на ассемблере машинным кодом :)
@@KirillBerezin он писал же в машинных кода просто смотрел коды команды соответствующие ассемблер командам или я не прав
@@KirillBerezin потому что код на языке ассемблера != машинным кодам
Как говорится: Ждем курс написания сайта на транзисторах...
жди
@@AntiBandera господин Соер шуток не понимает)
@@user-mo9jb1bx1b, по-этому - ждём.
ахахахах
Схематически это не слишком сложно. Тут проблема в количестве транзисторов и помехозащищённости.
Очень хотелось бы увидеть видео о написании фронтенда сайта на ассемблере, а то HTML сильно тормозит.
тогда и браузер надо свой писать, на веб ассемблере еще может как-то реально.
ну можно сделать фронтенд без html css и js на canvas/webgl + webassembly но зачем, в конечном счете получится своя реализация аналога html и css)
@Сергей Каракулов сказать программисту что уже существует библиотека для решения его задачи. Это все равно что сказать поэту что уже написана песня о любви.
Есть webassembly, но пишешь как бы в движке браузера. Очень крутая и интересная штука
@@user-pr3uy1vj5u в figma кстати так и сделали
До сих пор помню многие машинные коды PDP-11 (Электроника-60). Это как первая любовь, помнишь всю жизнь. Создавали программы сразу в машинных кодах в 1985 году, потом записывали на перфоленту. Помню, что код 177 (восьмеричный) - были пробиты все отверстия, в этих местах лента часто рвалась :).
В наше время это немного похоже на то, как если бы человек вышел из экскаватора и начал копать руками
Когда у тебя есть экскаватор, а надо аккуратно посадить одно семечко в маленький горшочек то почему бы и не вылезти из экскаватора?
@@Veter1992 для этого есть лопата, но уж явно не руками
@@user-ws1ud4op9i нет я хочу что бы ты копал руками хочу ! 😂😂😂
@eugene martein так черенок давно уже существует
Отличный комментарий! В точку! Они говорят о возможности работы с процессором напрямую, но на деле - предлагают отложить фотошоп и 5 часов подряд рисовать пиксели в пайнте.
Теперь следующий этап - написать собственную ос и захватить 99% рынка
Всего-то и надо 38 лет интенсивного развития.
ru.wikipedia.org/wiki/MS-DOS
38 лет = 324 672 человеко часов
@@KnyPovir просто часов. Человеко-часы это сумма рабочих часов всех людей, которые работали над проектом.
@@user-bo7yz7wb1h/videos
Тогда весь юмор теряется...
@@user-bo7yz7wb1h совершенно верно. когда 40 человек сидят на совещании всего два часа, они убивают две недели рабочего времени.
Растёте :) отличная подача и свежий вид )) приятное видео
Alexander Savchenko прикалываешься писюн? Нихуя же непонятно!!!!!
Всегда было интересно узнать ответ на этот вопрос. Спасибо, подписался!
Очень здорово, что Вы подняли эту тему.
Круто, жду ещё видосов на ассемблерные темы. Хотя из названия я ожидал увидеть очередной тьюториал по MS-DOS DEBUG, но оказалось тоже очень интересно!
Отличный материал! Шикарный канал в целом!
Последние несколько дней об этом думал как раз ! )))
Читаешь мысли)
Отличная подача, все выглядит очень простым и понятным, хотя с ассемблером не знаком.
Еще бы что-то такое =) Супер, спасибо!!
Крутой чел, реально интересно. Очень долго искал подобный контент на ютубе, спасибо!
Ух... ностальгия аж вспомнился первый курс и радость после написания драйвера на asm для точечно-матричного принтера
А мы писали контроллер для плазменного резака на tasm, на судостроительном заводе, я другу помогал, а так у меня образование фазанка :D
модем для датчиков на магистральных газопроводах - моя дипломная (ассемблер) ))
Красавчик
Нереально круто! Побольше бы таких видео
Спасибо большое, классные видео
Можешь в машинных кодах ? Можешь ) Собственно моя первая программа была в машинных кодах и была взята из журнала Радио (конец 80-ых), в момент когда родители купили компьютер с забавным названием Микроша (процессор КР580) )) Это был кайф от программирования ! Хочешь изучить тему, разбери ее на молекулы. В последующем на чистом машинном написал две игры с псевдографикой и компилятор Форта, начал было трассировщик писать, но школа закончилась поехал дальше учиться. Вспоминаю с ностальгией. Хочу сказать, что если потратить на это определенное время, то даже в коде не сложно программировать. Главное заложить базис в голове.
На тот момент, кстати, переходить на ассемблер и не было никакого желания. Казалось, что это лишняя трата времени на писанину. Да и архитектура процессоров КР580 и памяти способствовала, не такая сложная как у современных ПК. С другой стороны при наличии соответствующих инструментов можно и сейчас программировать в коде.
написал компилятор пока был школьником в машинных кодах?
мужик не делай из нас дураков, это невозможно
не хватит ни мозгов школьника, ни времени
@@user-eu8zo1zo9v послушайте интервью Стива Возняка, где он говорит что написал компилятор Бейсика для первых Apple на ассемблере. Написал он его за достаточно короткое время. Ну и в качестве кокетства добавлял, что в первой версии не смог или не успел добавить операции с плавающей точкой в бейсике. Вы же не сравнивайте компиляторы сегодняшнего уровня с кучей библиотек и компиляторы 80-ых ! И еще раз - архитектура памяти была упрощенная. При достаточном погружении (практике) писать на машинном языке на тех машинах получалось даже быстрее чем на ассемблере. Вы видимо не представляете объема работы. И уж тем более не представляете внутреннюю красоту языка Форта, ядро которого (без библиотек) может уместиться в кэш современного процессора. И потому, к слову сказать, очень быстрого в исполнении.
А на просторах интернета можете найти людей которые совершили подобный "подвиг" и тоже написали свой компилятор Форта пусть даже и не в машинном коде...
Спасибо! Очень интересно и полезно.
Евгений, хочу написать, что Вы крутой! Наткнулся на шуточное видео "Голая правда о программистах" и залип на канале просматривая все видео один за другим. Крутая подача, интересные темы! Удачи! Пожалуй подпишусь)
Это понятно и легко. Некст челлендж уровня impossible - сделать исполнение шеллкода, но помещая в rwx память не все инструкции сразу, а по одной. Так, чтобы в памяти в момент исполнения всегда была только 1 инструкция, после исполнения которой идёт ее «затирание» и передача управления на следующую ,которую мы также, как в этом видео прокидываем из кучи. (В куче инструкции могут находится в шифрованном массиве, к примеру)
Получится прототип защиты кода в памяти.
Либо второй челендж уровня impossible - на вход получаешь тот же шеллкод. Имплементируешь алгоритм для поиска rop гаджетов на основе инструкций своего шеллкода. Импортишь хаотично dll и там ищешь эти гаджеты. Потом передаёшь управление от гаджета к гаджету, тем самым исполняя свой шеллкод. Опять же в таком случае шеллкод будет не в одной странице rwx, а разбросан по исполняемым адресным пространствам разных dll. Осилишь?))
Респект автору! Открыл для себя нечто новое)
Отличный контент. Спасибо огромное
Классное видео. Я считаю что что такой формат очень полезный, особенно для хардкорщиков)
Странно по твоему создатели KolibriOS и API Vulkan хардкорщики, или же люди старающийся сделать быстрее работу железа?????
@@user-ox3rj9th9m И то и другое
Настоящие мужики делают свой проц в spice-симуляторе со своим блекджеком и опкодами.
Я не настоящий, я всего лишь с Microblaze работаю :-P
пфф.. на 155 логике они его делают))
@@andrsam3682 пффф.... даже на релюхах;)
На андроид маркете есть эмулятор советского калькулятора электроника мк54. Когда чуваки писали исходный код, вся документация уже была утеряна, а завод лежал в руинах. Так вот оригинальное содержание ПЗУ восстанавливали с помощью микроскопа
@@Pan-ux3bq по руке от терминатора)
спасибо, прям напомнило как в универе прогали КП580 вводя 16ричные команды в терминал УМК...
Замечательное видео. Всегда считал машинный код чем-то непостижимым, для реальных хардкорщиков. А после видео, появился интерес к данной теме.
Про ассемблер вы наверное не слышали?
@@andrejvlasov5452 Нет, я слышал про ассемблер
Вот что значить thinking in binary! Я начиная с этого видео подписался на ваш канал, но теперь думаю, что и комментарий не помешал бы! :)
Я всегда об этом думал.Но думал это не реально. Мое уважение Soer
Прикольно, но хотелось бы увидеть реализацию elf/exe с нуля, без кода посредника и вмешательства компилятора ))
Как чистый Сишник охринел от того что ты сделал)) сразу подписался!)
Просто лайк. Те кто когда то ковырялся в Радио86РК, Спецалист, Микроша или в подобных монстрах эры начала персональных компьютеров, помнят, что такое Ассемблер.
куда же без него... половина игр хранило жизни в регистре А , перебор... LD A,254 всегда хватало ))
basic на квант БК в 1997 году. Первый комп после приставок, у меня был уже Panasonic 3DO, но после знакомство с Квантом, не спал суток двое. Документации не было, просто угадывал для чего какая команда нужна. А потом подарили книгу basic для детей, тут все и началось...
@@VERTinBY А DEC A на INC A менял, чтобы жизни, когда помираешь, увеличивались? :)
Синклер-Спектрум!!!
Помню как клавишам действие научился присваивать, лучший день в жизни был LET команда :)
Случайно наткнулся на этот видеоролик. Молодец, что решил попробовать, а то остальные все всё знают, но никто не пробует. Единственно, что я бы дополнил - это про структуру команд в двоичном коде - а это "Здравствуй" двоичный код ))).
На счет того, что некоторые из комментаторов говорят что это бесполезно - то они не правы. Если ассемблер дает понимание об архитектуре компьютеров, то машинные кода дают представление об архитектуре чипов. А это уже становиться необходимым для разработчиков ОС и драйверов. В особенности для тех, кто собирает свои платы для компа.
*Забыл сказать.* Когда-то во времена, когда компьютеры были маленькими, а программисты умными, шла борьба за размер программы. Памяти было мало, а потому экономили каждый байт. Мне известны случаи, когда программист полностью переписывал код, из-за экономии 2х байт программы! И в таких случаях шли на разные ухищрения - типа перехода во внутрь команды! А это, без знания машинных кодом было не возможно.
Ссылка на функцию - "гениально". С таким же успехом можно было показать, как колить на опкодах в дизассемблере :)
Воу-воу-воу полехче это называется binary injection, Хаккер Соер вернулся :)
А я вот не сомневаюсь что однажды вот так вот невзначай в развлекательно-обучающем ролике Соер покажет как написать вредоносную программу ;D
PS: в сети и на гите можно най ти статьи как написать загрузчик под биос, если понравился этот ролик то лайк Соеру и вам понравиться написать загрузчик т к он не ELF не PE а именно RAW ни каких библиотек и единственная программа которая запустится на вашем ПК после перезагрузки если вы её вздумаете установить :)))
PS2: досмотрел видео до конца:) не совсем binary injection но близко к этому :)
На ZX Spectrum все игры таким образом и записывались, заголовок на Basic для инициализации процесса загрузки кода в память с помощью peek и poke, затем простыня из шеснадцатеричных значений.
Даже книжки продавали, где можно было вручную переписать несколько страниц кодов и получить игрушку :)
Весьма познавательно!
Ютуб просто оракул, уже 4 видео прямо по делу рекомендует
да просто супер! спасибо за видео
Спасибо за видик! С меня подписка.
Прикольно. Раньше в средних школах учили делать ассемблерные вставки. Потому, что без них не выжать производительность. Теперь это мастер класс от профи.
В школе и про TASMучили. И то "профи" не до конца все понимают, объясняют.
Мы с вами наверно в разных школах учились, потому как в нашей всё ограничилось HTML
@@user-zt8dz2rx1pв нашей школе учили word...
@@user-zt8dz2rx1p В нашей вообще всё ограничивалось вордом и экселем
У нас в школе максимум был Паскаль.
блин ностальгнул сразу в 1990 год ))) для zx spectrum писали игрухи ))
Чётко и по-полочкам!!!
10из10 дядька всегда смотрю и очень нравиться
Хорошее видео спасибо!
Очень круто!
Ой какое чудесное видео! Познавательная и интересная! А сам парень Соер умный то какой!
Он же сказал, что только кажется умным.
Ждал пока это кто-то сделает, красава!
На 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 ричном коде в журнале Моделист Конструктор. Уже тогда кодили микросхемки для радиоуправления =)
Спасибо вам
Не знаю как я попал на это видео, но я все внимательно посмотрел, но ничего не понял, спасибо , интересно было
В ТурбоПаскале помнится была директива inline, в которой можно было писать 16-ричные коды и они вставлялись как есть в программу.
Круто, спасибо.
Круто! Я только программу "Hello World" в машинных кодах писал.
Очень интересно. Подскажите 2-3 книги небольшого объема (можно и на английском) чтобы лучше понять о чем здесь речь?
Конечно многое зависит от операционной системы, но в данном случае мы написали только функцию, для выполнения которой надо откомпилированную программу. Используя другие операционные системы (например DOS или Windows 7 x32 (как помнится это последняя ОС поддерживающая COM файлы)) можно писать напрямую в файл и выполнять этот файл. Магия в использовании формата файла COM. По сути ОС при загрузке просто размещает содержимое файла в памяти со смещением 0x100h относительно начала сегмента (начало сегмента занято заголовком содержащим служебные данные, такие как командная строка и прочее) и передает управление на первый байт загруженного файла.
Автор мог, например, взять DosBox, в нем 16-ричным редактором создать COM-файл. запустить и показать - вот то было б реально что просили. А тут, блин, во-первых написал какую-то туфту из 2 команд, даже не Hello, World, а во-вторых - реально писал-то он не в машинных кодах, а на ассемблере.
@@_ProstoTak А Вы помните хоть некоторые команды в 16-ичном виде сами?
@@ivankprod Зачем их помнить, на то таблицы есть. И да, я например еще помню что CD - это команда прерывания (и соответственно CD 21 - "int 21h", главное DOSовское API).
Но претензии к автору не в том что он не помнит/не знает каких-то кодов (ибо как я сказал выше - это справочная инфа), а в том что заявленное не соответствует сделанному.
очень интересно, и наглядно понял конечно не много, но хоть увидел, что это не магия. В в Хогвард) точно теперь не пойду, буду вас смотреть все-таки безопаснее и комфортнее))
Жги ещё!
Ну наконец-то я тебя нашел, адекватный канал, с интересным контентом))
Оч хорошо! А про __cdecl, __fastcall и другие можно поподробнее в другом видео (и про то, когда параметров у функции много)?
Я под ARM писал :) Патчи для Siemens S75
А будет отдельное видео про структуру опкодов? Хотелось бы послушать про это какие-нибудь интересные подробности.
Ого. Это прям как я в 1992 году програмировал на Вектор 06ц в ассемблере
Напиши нейросеть в двоичной коде
Го в троичном
Го в квантовом
Сделаю вид, что понял твоё высказывание)
Можно умереть наверное прежде чем ее написать до конца. Нужна что то выше этого примитива.
А ты знаешь толк в извращениях.
В свое время будучи студентом, без компьютера в тетради писал на wasm 86. Потом переводил в опкоды которые брал из книжки по ассемблеру. На компе в volcov commander, в hex-редакторе вбил программу и потом для инструкций jmp, jnz добавлял реальные смещения. Это была игра змейка. Заработало с первого раза. Отлаживал в уме.
Огонь. Больше про асм
Ждем выпуск с перфокартами!)
С перфоратором. 😂
Помню, как во времена Юрского периода я редактировал по мануалам опкоды на Motorola E398 чтобы получить новый фунционал. Хорошие были времена.
Ааа, ну я все понял, спасибо!
В 80-х годах прошлого века я в Политехнической библиотеке переписывал в тетрадку 16-ричные коды из журнала Apple Magazine и в институте их вбивал на реальном компе, получая в итоге работающую программу. Мой лучший результат - "взломать" текстовый редактор Apple II так, чтобы он понимал кириллицу. Правда, пришлось пожертвовать важной функцией copy/paste блоков текста.
В Windows есть функции VirtualAlloc и VirtualProtect, которые позволяют менять флаги страниц и исполнять код от куда хочешь. Еще можно поменять флаги секций. Это возможно, потому что в Винде сектора данных и кода накладываются друг на друга, занимая одно адресное пространство, Винда использует страничную организацию памяти, а страница может быть и исполняемой и записываемой одновременно. Я так модифицировал одну программу, заставляя ее менять условие во время выполнения.
молодец норма сделал обычно я не пишу коменты удивил очень прикольно
Особенно тема про непонимание шуток интересная! Можно развернуть её подробнее?
Вот они.... Монстры IT. Чувак, у тебя просто лучший материал!
отлично ждём ролик где вы пишите bare metal программу
Помню подобное описывал Крис Касперски в статье "Дизассемблирование в уме".
вау, вот это круто))
Мощь!
СКОР) А змейка с тетриса в Командной строке)))
Блин, космос! Открытый!!!
Ля какой. Ну это определенно лайк
(ДИЧЬ) Предлагаю в ручную методом замыкания менять положение транзисторов в процессоре. Также идея
(Vlad Bubliu) тоже имеет место быть. Хочу такой же видос, только с решением конкретных задач. Ну к примеру 2+2*2. Канал крутой!
Вот это контент!
Да Вы - гений!!
грамотный мужик, лайк
Помню тайком в армии экспериментировал с самомодифицирующемся кодом. Перед выполнением функция дешифруется, выполняется, а потом опять шифруется. Старый трюк, но очень интересный.
Признаки шпионажа
Ну ты замутил, я такое впервые вижу)
Агонь видос
Под DOS-ом, теоретически, можно было сделать всё честно в com-файл. Правда, нужно было правильно сделать заголовок com файла, не помню с окончанием, вроде тоже что-то нужно было. А так, если хотелось побаловаться, в редакторе VC писалась программа на asm, а компилятором, входившем в turbo c, всё компилилось в obj, потом в com (до 32 K).
Очень странно, вроде спрашивали написать на машинных кодах, а не на ассемблере.
Помню в детстве изучал ассемблер, и при написании программок компилировал их в com файлы, потом через дебагер смотрел что происходит с машкодом, ну и со временем начал писать прямо машкодом com файлы, так как это проще, быстрей, и не нужно компилировать. К примеру вот программа смены текстового видеорежима в досе B8 00 00 CD 10 CD 20 чтобы получить другой видеорежим нужно 00 00 заменить на 03 00.
Блин, уже больше чем 25 лет прошло, а до сих пор помню, а что вчера было забыл.
Это шикарно!
Хоть решаемая задача весьма проста, но объяснено все очень доходчиво.
Хочется попросить сорцы этого "интерпретатора" и побольше подобных видео. В идеале серия видео про подобные вещи, в частности, от нажатия кнопки включения ПК до полноценного запуска ОС с нюансами того, что кого и как запускает, откуда знает где лежит и т. п.