Пишу программу в машинных кодах

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ธ.ค. 2024

ความคิดเห็น • 833

  • @vladyslavbublii9876
    @vladyslavbublii9876 5 ปีที่แล้ว +3374

    Не, ну это изи)) Давай теперь следующий челлендж : написать программу водя намагниченной иголкой по блину жесткого диска

    • @nickvirus9463
      @nickvirus9463 5 ปีที่แล้ว +122

      Vlad Bubliu Лучше перфокарты нет ничего для мануального кодирования

    • @socolovalexandr
      @socolovalexandr 5 ปีที่แล้ว +63

      А почему иголкой - сразу ломом :)

    • @Uni-Coder
      @Uni-Coder 5 ปีที่แล้ว +230

      Надо было сделать видео, в котором он разговаривает в двоичном коде :)

    • @ventilyator
      @ventilyator 5 ปีที่แล้ว +12

      @@Uni-Coder зачот :)

    • @huaweiinc.4190
      @huaweiinc.4190 5 ปีที่แล้ว +23

      по обычному блину

  • @shogunkub
    @shogunkub 5 ปีที่แล้ว +779

    То, что 50 лет назад было суровой правдой жизни, теперь выглядит как хитрый трюк ))

    • @edward.vstock
      @edward.vstock 5 ปีที่แล้ว +25

      не такой уж суровой, если вспомнить какой средний размер программы был в те времена

    • @engsc7094
      @engsc7094 5 ปีที่แล้ว +20

      даже меньше чем 50, в начале 90х игру питон вводил с журнала )

    • @KirillBerezin
      @KirillBerezin 5 ปีที่แล้ว +32

      А еще тогда люди не называли код на ассемблере машинным кодом :)

    • @СергейКаракулов-в7з
      @СергейКаракулов-в7з 5 ปีที่แล้ว +19

      @@KirillBerezin он писал же в машинных кода просто смотрел коды команды соответствующие ассемблер командам или я не прав

    • @protiv_bio
      @protiv_bio 4 ปีที่แล้ว +15

      @@KirillBerezin потому что код на языке ассемблера != машинным кодам

  • @stenline
    @stenline 5 ปีที่แล้ว +663

    Как говорится: Ждем курс написания сайта на транзисторах...

    • @AntiBandera
      @AntiBandera 4 ปีที่แล้ว +8

      жди

    • @ИванНиколаенко-м2р
      @ИванНиколаенко-м2р 4 ปีที่แล้ว +32

      @@AntiBandera господин Соер шуток не понимает)

    • @olegivanov6163
      @olegivanov6163 4 ปีที่แล้ว +3

      @@ИванНиколаенко-м2р, по-этому - ждём.

    • @ИльдарБулатов-т4х
      @ИльдарБулатов-т4х 4 ปีที่แล้ว

      ахахахах

    • @АлександрПлавин
      @АлександрПлавин 2 ปีที่แล้ว +3

      Схематически это не слишком сложно. Тут проблема в количестве транзисторов и помехозащищённости.

  • @TruVi-13
    @TruVi-13 ปีที่แล้ว +15

    До сих пор помню многие машинные коды PDP-11 (Электроника-60). Это как первая любовь, помнишь всю жизнь. Создавали программы сразу в машинных кодах в 1985 году, потом записывали на перфоленту. Помню, что код 177 (восьмеричный) - были пробиты все отверстия, в этих местах лента часто рвалась :).

  • @СергійДмитрович-и1ж
    @СергійДмитрович-и1ж 5 ปีที่แล้ว +471

    Очень хотелось бы увидеть видео о написании фронтенда сайта на ассемблере, а то HTML сильно тормозит.

    • @anton.k.
      @anton.k. 5 ปีที่แล้ว +32

      тогда и браузер надо свой писать, на веб ассемблере еще может как-то реально.

    • @СергейКаракулов-в7з
      @СергейКаракулов-в7з 5 ปีที่แล้ว +9

      ну можно сделать фронтенд без html css и js на canvas/webgl + webassembly но зачем, в конечном счете получится своя реализация аналога html и css)

    • @aske34ru
      @aske34ru 4 ปีที่แล้ว +49

      @Сергей Каракулов сказать программисту что уже существует библиотека для решения его задачи. Это все равно что сказать поэту что уже написана песня о любви.

    • @vroshupkin1
      @vroshupkin1 4 ปีที่แล้ว +9

      Есть webassembly, но пишешь как бы в движке браузера. Очень крутая и интересная штука

    • @aske34ru
      @aske34ru 4 ปีที่แล้ว

      @@СергейКаракулов-в7з в figma кстати так и сделали

  • @dikson3072
    @dikson3072 5 ปีที่แล้ว +497

    Теперь следующий этап - написать собственную ос и захватить 99% рынка

    • @denpro8845
      @denpro8845 5 ปีที่แล้ว +13

      Всего-то и надо 38 лет интенсивного развития.
      ru.wikipedia.org/wiki/MS-DOS

    • @KnyPovir
      @KnyPovir 5 ปีที่แล้ว +6

      38 лет = 324 672 человеко часов

    • @Евгений-п1л1ъ
      @Евгений-п1л1ъ 5 ปีที่แล้ว +10

      @@KnyPovir просто часов. Человеко-часы это сумма рабочих часов всех людей, которые работали над проектом.

    • @KnyPovir
      @KnyPovir 5 ปีที่แล้ว +2

      @@Евгений-п1л1ъ/videos
      Тогда весь юмор теряется...

    • @denpro8845
      @denpro8845 5 ปีที่แล้ว +8

      @@Евгений-п1л1ъ совершенно верно. когда 40 человек сидят на совещании всего два часа, они убивают две недели рабочего времени.

  • @ArtLvl-y1o
    @ArtLvl-y1o 5 ปีที่แล้ว +179

    В наше время это немного похоже на то, как если бы человек вышел из экскаватора и начал копать руками

    • @Veter1992
      @Veter1992 4 ปีที่แล้ว +46

      Когда у тебя есть экскаватор, а надо аккуратно посадить одно семечко в маленький горшочек то почему бы и не вылезти из экскаватора?

    • @5классвиленкин-ъ4п
      @5классвиленкин-ъ4п 4 ปีที่แล้ว +15

      @@Veter1992 для этого есть лопата, но уж явно не руками

    • @ChatGPT-k5z
      @ChatGPT-k5z 4 ปีที่แล้ว +7

      @@5классвиленкин-ъ4п нет я хочу что бы ты копал руками хочу ! 😂😂😂

    • @linterrupt
      @linterrupt 3 ปีที่แล้ว +1

      @eugene martein так черенок давно уже существует

    • @zelmanfeig5404
      @zelmanfeig5404 3 ปีที่แล้ว +1

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

  • @AlexanderSavchenko91
    @AlexanderSavchenko91 5 ปีที่แล้ว +71

    Растёте :) отличная подача и свежий вид )) приятное видео

    • @user-ez5vg6tq2u
      @user-ez5vg6tq2u 5 ปีที่แล้ว +2

      Alexander Savchenko прикалываешься писюн? Нихуя же непонятно!!!!!

  • @dmitrybezzz1708
    @dmitrybezzz1708 3 ปีที่แล้ว +34

    Можешь в машинных кодах ? Можешь ) Собственно моя первая программа была в машинных кодах и была взята из журнала Радио (конец 80-ых), в момент когда родители купили компьютер с забавным названием Микроша (процессор КР580) )) Это был кайф от программирования ! Хочешь изучить тему, разбери ее на молекулы. В последующем на чистом машинном написал две игры с псевдографикой и компилятор Форта, начал было трассировщик писать, но школа закончилась поехал дальше учиться. Вспоминаю с ностальгией. Хочу сказать, что если потратить на это определенное время, то даже в коде не сложно программировать. Главное заложить базис в голове.
    На тот момент, кстати, переходить на ассемблер и не было никакого желания. Казалось, что это лишняя трата времени на писанину. Да и архитектура процессоров КР580 и памяти способствовала, не такая сложная как у современных ПК. С другой стороны при наличии соответствующих инструментов можно и сейчас программировать в коде.

    • @marat-nagayev
      @marat-nagayev 2 ปีที่แล้ว +1

      написал компилятор пока был школьником в машинных кодах?
      мужик не делай из нас дураков, это невозможно
      не хватит ни мозгов школьника, ни времени

    • @dmitrybezzz1708
      @dmitrybezzz1708 2 ปีที่แล้ว +6

      @@marat-nagayev послушайте интервью Стива Возняка, где он говорит что написал компилятор Бейсика для первых Apple на ассемблере. Написал он его за достаточно короткое время. Ну и в качестве кокетства добавлял, что в первой версии не смог или не успел добавить операции с плавающей точкой в бейсике. Вы же не сравнивайте компиляторы сегодняшнего уровня с кучей библиотек и компиляторы 80-ых ! И еще раз - архитектура памяти была упрощенная. При достаточном погружении (практике) писать на машинном языке на тех машинах получалось даже быстрее чем на ассемблере. Вы видимо не представляете объема работы. И уж тем более не представляете внутреннюю красоту языка Форта, ядро которого (без библиотек) может уместиться в кэш современного процессора. И потому, к слову сказать, очень быстрого в исполнении.

    • @dmitrybezzz1708
      @dmitrybezzz1708 2 ปีที่แล้ว

      А на просторах интернета можете найти людей которые совершили подобный "подвиг" и тоже написали свой компилятор Форта пусть даже и не в машинном коде...

  • @shikataganai1955
    @shikataganai1955 5 ปีที่แล้ว +10

    Это понятно и легко. Некст челлендж уровня impossible - сделать исполнение шеллкода, но помещая в rwx память не все инструкции сразу, а по одной. Так, чтобы в памяти в момент исполнения всегда была только 1 инструкция, после исполнения которой идёт ее «затирание» и передача управления на следующую ,которую мы также, как в этом видео прокидываем из кучи. (В куче инструкции могут находится в шифрованном массиве, к примеру)
    Получится прототип защиты кода в памяти.
    Либо второй челендж уровня impossible - на вход получаешь тот же шеллкод. Имплементируешь алгоритм для поиска rop гаджетов на основе инструкций своего шеллкода. Импортишь хаотично dll и там ищешь эти гаджеты. Потом передаёшь управление от гаджета к гаджету, тем самым исполняя свой шеллкод. Опять же в таком случае шеллкод будет не в одной странице rwx, а разбросан по исполняемым адресным пространствам разных dll. Осилишь?))

  • @ДмитрийКосых-л3х
    @ДмитрийКосых-л3х 5 ปีที่แล้ว +4

    Замечательное видео. Всегда считал машинный код чем-то непостижимым, для реальных хардкорщиков. А после видео, появился интерес к данной теме.

    • @andrejvlasov5452
      @andrejvlasov5452 5 ปีที่แล้ว

      Про ассемблер вы наверное не слышали?

    • @ДмитрийКосых-л3х
      @ДмитрийКосых-л3х 5 ปีที่แล้ว

      ​@@andrejvlasov5452 Нет, я слышал про ассемблер

  • @aswonder5569
    @aswonder5569 5 ปีที่แล้ว +2

    В 80-х годах прошлого века я в Политехнической библиотеке переписывал в тетрадку 16-ричные коды из журнала Apple Magazine и в институте их вбивал на реальном компе, получая в итоге работающую программу. Мой лучший результат - "взломать" текстовый редактор Apple II так, чтобы он понимал кириллицу. Правда, пришлось пожертвовать важной функцией copy/paste блоков текста.

  • @random_company
    @random_company 4 หลายเดือนก่อน +1

    Гений, нет слов, благодаря тебе я сделал генерацию опкодов для моего ассемблера!

  • @rico19892004
    @rico19892004 5 ปีที่แล้ว +14

    Ух... ностальгия аж вспомнился первый курс и радость после написания драйвера на asm для точечно-матричного принтера

    • @ИндустриюДальнемуВостоку
      @ИндустриюДальнемуВостоку 5 ปีที่แล้ว +1

      А мы писали контроллер для плазменного резака на tasm, на судостроительном заводе, я другу помогал, а так у меня образование фазанка :D

    • @orkoteg09
      @orkoteg09 5 ปีที่แล้ว +3

      модем для датчиков на магистральных газопроводах - моя дипломная (ассемблер) ))

    • @Ланс-м1в
      @Ланс-м1в 3 ปีที่แล้ว

      Красавчик

  • @mihalt1
    @mihalt1 ปีที่แล้ว +3

    Очень странно, вроде спрашивали написать на машинных кодах, а не на ассемблере.
    Помню в детстве изучал ассемблер, и при написании программок компилировал их в com файлы, потом через дебагер смотрел что происходит с машкодом, ну и со временем начал писать прямо машкодом com файлы, так как это проще, быстрей, и не нужно компилировать. К примеру вот программа смены текстового видеорежима в досе B8 00 00 CD 10 CD 20 чтобы получить другой видеорежим нужно 00 00 заменить на 03 00.
    Блин, уже больше чем 25 лет прошло, а до сих пор помню, а что вчера было забыл.

  • @MikhailGoncharov-tl4cr
    @MikhailGoncharov-tl4cr 11 หลายเดือนก่อน +1

    Ютуб просто оракул, уже 4 видео прямо по делу рекомендует

  • @Mikola_Naumenko
    @Mikola_Naumenko 5 ปีที่แล้ว +21

    Просто лайк. Те кто когда то ковырялся в Радио86РК, Спецалист, Микроша или в подобных монстрах эры начала персональных компьютеров, помнят, что такое Ассемблер.

    • @VERTinBY
      @VERTinBY 5 ปีที่แล้ว

      куда же без него... половина игр хранило жизни в регистре А , перебор... LD A,254 всегда хватало ))

    • @ИндустриюДальнемуВостоку
      @ИндустриюДальнемуВостоку 5 ปีที่แล้ว +1

      basic на квант БК в 1997 году. Первый комп после приставок, у меня был уже Panasonic 3DO, но после знакомство с Квантом, не спал суток двое. Документации не было, просто угадывал для чего какая команда нужна. А потом подарили книгу basic для детей, тут все и началось...

    • @igorchesnokov482
      @igorchesnokov482 5 ปีที่แล้ว +2

      @@VERTinBY А DEC A на INC A менял, чтобы жизни, когда помираешь, увеличивались? :)

    • @HarryVereha
      @HarryVereha 5 ปีที่แล้ว +4

      Синклер-Спектрум!!!

    • @ИндустриюДальнемуВостоку
      @ИндустриюДальнемуВостоку 5 ปีที่แล้ว

      Помню как клавишам действие научился присваивать, лучший день в жизни был LET команда :)

  • @КонстантинПродан-ф6ч
    @КонстантинПродан-ф6ч 5 ปีที่แล้ว

    Случайно наткнулся на этот видеоролик. Молодец, что решил попробовать, а то остальные все всё знают, но никто не пробует. Единственно, что я бы дополнил - это про структуру команд в двоичном коде - а это "Здравствуй" двоичный код ))).
    На счет того, что некоторые из комментаторов говорят что это бесполезно - то они не правы. Если ассемблер дает понимание об архитектуре компьютеров, то машинные кода дают представление об архитектуре чипов. А это уже становиться необходимым для разработчиков ОС и драйверов. В особенности для тех, кто собирает свои платы для компа.
    *Забыл сказать.* Когда-то во времена, когда компьютеры были маленькими, а программисты умными, шла борьба за размер программы. Памяти было мало, а потому экономили каждый байт. Мне известны случаи, когда программист полностью переписывал код, из-за экономии 2х байт программы! И в таких случаях шли на разные ухищрения - типа перехода во внутрь команды! А это, без знания машинных кодом было не возможно.

  • @МаксимХвостов-м1й
    @МаксимХвостов-м1й 5 ปีที่แล้ว +9

    Воу-воу-воу полехче это называется binary injection, Хаккер Соер вернулся :)
    А я вот не сомневаюсь что однажды вот так вот невзначай в развлекательно-обучающем ролике Соер покажет как написать вредоносную программу ;D
    PS: в сети и на гите можно най ти статьи как написать загрузчик под биос, если понравился этот ролик то лайк Соеру и вам понравиться написать загрузчик т к он не ELF не PE а именно RAW ни каких библиотек и единственная программа которая запустится на вашем ПК после перезагрузки если вы её вздумаете установить :)))
    PS2: досмотрел видео до конца:) не совсем binary injection но близко к этому :)

  • @reckt6343
    @reckt6343 5 ปีที่แล้ว +151

    Напиши нейросеть в двоичной коде

    • @vladislavknyshov3482
      @vladislavknyshov3482 5 ปีที่แล้ว +28

      Го в троичном

    • @darkmatter9520
      @darkmatter9520 5 ปีที่แล้ว +26

      Го в квантовом

    • @stas9066
      @stas9066 5 ปีที่แล้ว +4

      Сделаю вид, что понял твоё высказывание)

    • @AndreyOslin
      @AndreyOslin 5 ปีที่แล้ว +2

      Можно умереть наверное прежде чем ее написать до конца. Нужна что то выше этого примитива.

    • @lphoenixl7771
      @lphoenixl7771 3 ปีที่แล้ว +1

      А ты знаешь толк в извращениях.

  • @квадратя
    @квадратя 5 ปีที่แล้ว +96

    Настоящие мужики делают свой проц в spice-симуляторе со своим блекджеком и опкодами.

    • @MonahTuk
      @MonahTuk 5 ปีที่แล้ว

      Я не настоящий, я всего лишь с Microblaze работаю :-P

    • @andrsam3682
      @andrsam3682 5 ปีที่แล้ว +8

      пфф.. на 155 логике они его делают))

    • @nikolai-Ll9iZXJnYW1vdGgK
      @nikolai-Ll9iZXJnYW1vdGgK 5 ปีที่แล้ว

      @@andrsam3682 пффф.... даже на релюхах;)

    • @Pan-ux3bq
      @Pan-ux3bq 5 ปีที่แล้ว +19

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

    • @Vlad0i0mir1
      @Vlad0i0mir1 5 ปีที่แล้ว +2

      @@Pan-ux3bq по руке от терминатора)

  • @moozoo2589
    @moozoo2589 5 ปีที่แล้ว +66

    На zx spectrum в середине 90-ых только так и программировал. Тысячи строк на ассемблере, оптимизация кода расчитывая количество тактов. Сегодня же 90% кода тормознутый порожняк.

    • @parametrico
      @parametrico 4 ปีที่แล้ว +10

      Не говори, ELITE занимала 40 килобайт, а щас я извиняюсь сpaнbIй мессенджер, в котором ни байта графики, только буквы и смайлы - 50 мегабайт ! ) дрова на видяху анадысь качал - 550 мегабайт ! Это ж как надо разучиться программировать так за 30 лет, не понимаю...

    • @Neo54213
      @Neo54213 4 ปีที่แล้ว +11

      @@parametrico нету смысла что-то экономить в ущерб времени разработки когда ресурсы довольно дешёвые

    • @АмэйзингЧенал
      @АмэйзингЧенал 4 ปีที่แล้ว +5

      Это где такое сегодня ? 👀90 % порожняк ? 🥴та ты фуфло какое-то гонишь . Кто залайкал тя непойму .такие же фуфела как и ты походу 🤾

    • @Bublerkin
      @Bublerkin 3 ปีที่แล้ว +4

      Раньше чистый код писали, а сейчас, если что-то надо - фигакс, линкуем целую библиотеку. Нужна поддержка h264 - прилинкуем целый libavcodec в несколько десятков мегабайт и сотней ненужных кодеков и пофиг, что 95% кода оттуда никогда не будет вызываться. Или exe-шник Doom 3 весил 5 мегабайт, а в Doom 2016 два exe-шника, каждый по 100Мб - один для vulkan, другой для opengl - это даже смешно, учитывая, что движок не стал в 20 раз круче. И текстуры раньше сжимали в jpg, а сейчас фигачат без сжатия. Поэтому такие слоновые игры стали.

    • @АлександрДаскаль-е6т
      @АлександрДаскаль-е6т 3 ปีที่แล้ว

      @@Bublerkin Глупости пишете. То что не будет вызываться в код не попадет. Кто хочет оптимальный код, нет проблем, пишите на С и даже асме можно если сильно нужно. А если операционка мешает есть DOS.

  • @ermolinandrey4098
    @ermolinandrey4098 5 ปีที่แล้ว +8

    Конечно многое зависит от операционной системы, но в данном случае мы написали только функцию, для выполнения которой надо откомпилированную программу. Используя другие операционные системы (например DOS или Windows 7 x32 (как помнится это последняя ОС поддерживающая COM файлы)) можно писать напрямую в файл и выполнять этот файл. Магия в использовании формата файла COM. По сути ОС при загрузке просто размещает содержимое файла в памяти со смещением 0x100h относительно начала сегмента (начало сегмента занято заголовком содержащим служебные данные, такие как командная строка и прочее) и передает управление на первый байт загруженного файла.

    • @_ProstoTak
      @_ProstoTak 2 ปีที่แล้ว +2

      Автор мог, например, взять DosBox, в нем 16-ричным редактором создать COM-файл. запустить и показать - вот то было б реально что просили. А тут, блин, во-первых написал какую-то туфту из 2 команд, даже не Hello, World, а во-вторых - реально писал-то он не в машинных кодах, а на ассемблере.

    • @ivankprod
      @ivankprod ปีที่แล้ว +1

      @@_ProstoTak А Вы помните хоть некоторые команды в 16-ичном виде сами?

    • @_ProstoTak
      @_ProstoTak ปีที่แล้ว

      @@ivankprod Зачем их помнить, на то таблицы есть. И да, я например еще помню что CD - это команда прерывания (и соответственно CD 21 - "int 21h", главное DOSовское API).
      Но претензии к автору не в том что он не помнит/не знает каких-то кодов (ибо как я сказал выше - это справочная инфа), а в том что заявленное не соответствует сделанному.

  • @alexzhelyapov3556
    @alexzhelyapov3556 ปีที่แล้ว

    Крутой чел, реально интересно. Очень долго искал подобный контент на ютубе, спасибо!

  • @tonymac822
    @tonymac822 5 ปีที่แล้ว +18

    Классное видео. Я считаю что что такой формат очень полезный, особенно для хардкорщиков)

    • @СашСавар-ф5д
      @СашСавар-ф5д 5 ปีที่แล้ว

      Странно по твоему создатели KolibriOS и API Vulkan хардкорщики, или же люди старающийся сделать быстрее работу железа?????

    • @trak3009
      @trak3009 3 ปีที่แล้ว +1

      @@СашСавар-ф5д И то и другое

  • @ToxaKolganov
    @ToxaKolganov 5 ปีที่แล้ว +11

    Прикольно, но хотелось бы увидеть реализацию elf/exe с нуля, без кода посредника и вмешательства компилятора ))

  • @KostsovKonstantin
    @KostsovKonstantin 3 ปีที่แล้ว +32

    Прикольно. Раньше в средних школах учили делать ассемблерные вставки. Потому, что без них не выжать производительность. Теперь это мастер класс от профи.

    • @WhiteZSY
      @WhiteZSY 2 ปีที่แล้ว +3

      В школе и про TASMучили. И то "профи" не до конца все понимают, объясняют.

    • @ВеселыйРоджер-н7ы
      @ВеселыйРоджер-н7ы ปีที่แล้ว +6

      Мы с вами наверно в разных школах учились, потому как в нашей всё ограничилось HTML

    • @karibas_6973
      @karibas_6973 ปีที่แล้ว

      ​@@ВеселыйРоджер-н7ыв нашей школе учили word...

    • @artemmm095
      @artemmm095 ปีที่แล้ว

      @@ВеселыйРоджер-н7ы В нашей вообще всё ограничивалось вордом и экселем

    • @NaoNakashima
      @NaoNakashima ปีที่แล้ว +2

      У нас в школе максимум был Паскаль.

  • @boson_higgs
    @boson_higgs 3 หลายเดือนก่อน

    Как всегда Soer на высоком уровне👍👍👍 хотя код низкоуровневый 😂

  • @FrolovDaniil
    @FrolovDaniil 5 ปีที่แล้ว +14

    Евгений, хочу написать, что Вы крутой! Наткнулся на шуточное видео "Голая правда о программистах" и залип на канале просматривая все видео один за другим. Крутая подача, интересные темы! Удачи! Пожалуй подпишусь)

  • @Razor102rus
    @Razor102rus 3 ปีที่แล้ว

    Как чистый Сишник охринел от того что ты сделал)) сразу подписался!)

  • @maksimmelnikov4321
    @maksimmelnikov4321 5 ปีที่แล้ว +1

    Очень здорово, что Вы подняли эту тему.

  • @antonantochi8498
    @antonantochi8498 5 ปีที่แล้ว +11

    Ссылка на функцию - "гениально". С таким же успехом можно было показать, как колить на опкодах в дизассемблере :)

  • @0Schranz
    @0Schranz 5 ปีที่แล้ว

    Всегда было интересно узнать ответ на этот вопрос. Спасибо, подписался!

  • @grossbot6068
    @grossbot6068 5 ปีที่แล้ว +222

    Очень интересно, но не чего непонятно

    • @user-yc2rj3du8f
      @user-yc2rj3du8f 5 ปีที่แล้ว +6

      Сначала он в какой-то программе набирает код на языке ассемблера, иструкции, что делать, получает их машинный код в 16-ти ричном формате, потом их загоняет в файл и запускает.

    • @MisaNia25
      @MisaNia25 5 ปีที่แล้ว

      Ещё бы показали как писать на джава шикарно было бы и понимать в том хоть что то

    • @andrejvlasov5452
      @andrejvlasov5452 5 ปีที่แล้ว +7

      @@MisaNia25, это все есть здесь же, на ютубе. Просто нужно писать соответствующий запрос на поиск, а не комментарий к видео.

    • @КонстантинПетров-у5ц
      @КонстантинПетров-у5ц 5 ปีที่แล้ว +5

      Начни с грамматики русского языка, а потом все легче пойдет

    • @МаксимМ-р7и
      @МаксимМ-р7и 5 ปีที่แล้ว +2

      @@КонстантинПетров-у5ц всЁ пойдЁт, действительно. Нужно знать русский

  • @RussiaVoiced
    @RussiaVoiced 5 ปีที่แล้ว +8

    Ждем выпуск с перфокартами!)

  • @williambalford5671
    @williambalford5671 5 ปีที่แล้ว +1

    Ой какое чудесное видео! Познавательная и интересная! А сам парень Соер умный то какой!

    • @michaeljordan1283
      @michaeljordan1283 2 ปีที่แล้ว

      Он же сказал, что только кажется умным.

  • @ttfd
    @ttfd 2 ปีที่แล้ว +1

    Круто, жду ещё видосов на ассемблерные темы. Хотя из названия я ожидал увидеть очередной тьюториал по MS-DOS DEBUG, но оказалось тоже очень интересно!

  • @yuriynevazhno2542
    @yuriynevazhno2542 4 ปีที่แล้ว +2

    Отличная подача, все выглядит очень простым и понятным, хотя с ассемблером не знаком.

  • @rocknrollex7463
    @rocknrollex7463 5 ปีที่แล้ว +2

    Отличный материал! Шикарный канал в целом!

  • @vifvrTtb0vmFtbyrM_Q
    @vifvrTtb0vmFtbyrM_Q 4 ปีที่แล้ว

    В свое время будучи студентом, без компьютера в тетради писал на wasm 86. Потом переводил в опкоды которые брал из книжки по ассемблеру. На компе в volcov commander, в hex-редакторе вбил программу и потом для инструкций jmp, jnz добавлял реальные смещения. Это была игра змейка. Заработало с первого раза. Отлаживал в уме.

  • @makofako2840
    @makofako2840 2 ปีที่แล้ว

    Не знаю как я попал на это видео, но я все внимательно посмотрел, но ничего не понял, спасибо , интересно было

  • @codedesign9261
    @codedesign9261 5 ปีที่แล้ว +1

    Последние несколько дней об этом думал как раз ! )))
    Читаешь мысли)

  • @АндрейЛарин-в6н
    @АндрейЛарин-в6н 2 หลายเดือนก่อน

    Действительно интересно. Спасибо

  • @ziftrue
    @ziftrue 5 ปีที่แล้ว +13

    Пролог и Эпилог (push, pop) не требуется
    Просто: mov eax, 5 ; ret;

    • @Slawaxx
      @Slawaxx 5 ปีที่แล้ว +2

      Вот их этих лишних push и pop образуются тормоза у всех программ.

    • @DenisShaver
      @DenisShaver 5 ปีที่แล้ว

      @@Slawaxx Стек в быстрой процессорной памяти, в кэше. Так что пох.

    • @Slawaxx
      @Slawaxx 5 ปีที่แล้ว +1

      @@КотЧерный-ю1ф В некоторых задачах (типа однобитного цифрового осцилографа) приходится заморачиваться на то, что быстрее:
      inc eax
      inc eax
      или
      add eax,2

    • @Sergey-Primak
      @Sergey-Primak 4 ปีที่แล้ว

      push pop нужны, первый вариант - mov eax, 5 - это только частный случай!
      в общем же случае используется стек, для этого его надо переопределить

  • @MrEyeGlitch
    @MrEyeGlitch 3 ปีที่แล้ว

    Вот что значить thinking in binary! Я начиная с этого видео подписался на ваш канал, но теперь думаю, что и комментарий не помешал бы! :)

  • @luceferon9574
    @luceferon9574 5 ปีที่แล้ว +1

    Ну наконец-то я тебя нашел, адекватный канал, с интересным контентом))

  • @murm3ow407
    @murm3ow407 4 ปีที่แล้ว

    Респект автору! Открыл для себя нечто новое)

  • @alexbublikov4015
    @alexbublikov4015 4 ปีที่แล้ว +1

    спасибо, прям напомнило как в универе прогали КП580 вводя 16ричные команды в терминал УМК...

  • @tot_kto_kusalsya
    @tot_kto_kusalsya 9 หลายเดือนก่อน +1

    Что я сейчас посмотрел? Что происходит? Зачем мне это? Какой вообще в этом смысл?
    Но, блин, так интересно!

  • @otreshen
    @otreshen 3 ปีที่แล้ว +1

    Наткнулся на это видео случайно.
    В прошлом году на 1 курсе универа проходили C/C++. Практически никак ничего нормально не объяснили, в итоге я так и не понял что такое эти ваши указатели.
    Для меня это осталось чем-то абстрактным, нет, я понимаю указатели на переменные, вместо того что бы их объявлять заново, но я совсем не понимаю их как аргументы у функций или же если они, как на 1 листинге в видео (4:41) представлены: "char **binaryCode;", "void** mem= ...;", "int (*runCodeFunc) () = mem;".
    Почему в одном месте звездочка ставится перед переменной, а в другом сразу после типа данных, без пробела, а в третьем вообще в скобках, да еще и после скобок зачем нужен пробел и еще две пустые скобки "int (*runCodeFunc) () = mem;"?

  • @dimovich85
    @dimovich85 5 ปีที่แล้ว +1

    Еще бы что-то такое =) Супер, спасибо!!

  • @КаштанБатр
    @КаштанБатр 2 ปีที่แล้ว

    Ты крут. Спасибо. Ничего не понял. Но было интересно.

  • @АдлетАдилханов
    @АдлетАдилханов 5 ปีที่แล้ว

    Я всегда об этом думал.Но думал это не реально. Мое уважение Soer

  • @vitaliiyarema
    @vitaliiyarema 5 ปีที่แล้ว +10

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

    • @Anatoly555
      @Anatoly555 3 ปีที่แล้ว +1

      Не нужно останавливаться - числа нужно вводить с перфокарт

    • @СергейМоскалёв-с3ь
      @СергейМоскалёв-с3ь 3 ปีที่แล้ว

      Написание программы в машинных кодах, это когда ты САМ, а не программа, переводишь мнемоники ассемблера в числа, сам рассчитываешь смещения и адреса и вводишь их в файл. Так что, у автора всё по-честному.

    • @vitaliiyarema
      @vitaliiyarema 3 ปีที่แล้ว

      @@СергейМоскалёв-с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

    • @S0ERDEVS
      @S0ERDEVS  3 ปีที่แล้ว +1

      @Vitalii Yarema где же это машинный код? Это просто буковки и циферки. И уж точно, прерывание 10h не имеет отношения к машинному коду. Вы запутались в абстракциях.

    • @vitaliiyarema
      @vitaliiyarema 3 ปีที่แล้ว

      @@S0ERDEVS Это вы выложили видео о машинном коде, а не я. Не надо переводить стрелки. Машинный код, к вашему сведению, это только двоичные цифры (0 и 1), которые могут быть представлены при написании кода в шестнадцатеричном представлении. Этот код и сохраняется в байтах в файле, который потом выполняется процессором.
      Вот и ответьте где у вас на видео машинный код? У вас чистой воды использование инструкций ассемблера. Это, конечно, хорошо, понимать и уметь использовать инструкции ассемблера, но это не машинный код.
      Что значит прерывание 10h не имеет отношение к машинному коду?
      Запомните, машинный код, это просто всё в цифрах, без слов mov и других.

  • @denisvz
    @denisvz 5 ปีที่แล้ว

    На ZX Spectrum все игры таким образом и записывались, заголовок на Basic для инициализации процесса загрузки кода в память с помощью peek и poke, затем простыня из шеснадцатеричных значений.
    Даже книжки продавали, где можно было вручную переписать несколько страниц кодов и получить игрушку :)

  • @СергейКривенко-р6я
    @СергейКривенко-р6я 5 ปีที่แล้ว

    В Windows есть функции VirtualAlloc и VirtualProtect, которые позволяют менять флаги страниц и исполнять код от куда хочешь. Еще можно поменять флаги секций. Это возможно, потому что в Винде сектора данных и кода накладываются друг на друга, занимая одно адресное пространство, Винда использует страничную организацию памяти, а страница может быть и исполняемой и записываемой одновременно. Я так модифицировал одну программу, заставляя ее менять условие во время выполнения.

  • @Anisimov_Yu_M
    @Anisimov_Yu_M ปีที่แล้ว

    4:10 - А если сначала создать регион исполняемой памяти, получить ссылку на него и по ней загружать файл?

  • @genmanyuri
    @genmanyuri ปีที่แล้ว

    блин ностальгнул сразу в 1990 год ))) для zx spectrum писали игрухи ))

  • @Uni-Coder
    @Uni-Coder 5 ปีที่แล้ว +9

    Интересно, почему не получилось прочитать сразу в mem?
    У меня все сработало:
    void *mem = VirtualAlloc(0, dataSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    fread(mem, dataSize, 1, fp);
    Правда, под виндой и на C++, но разницы быть не должно

    • @LtGenFlower
      @LtGenFlower 5 ปีที่แล้ว

      ну ты же mem все равно алоцировал

    • @Uni-Coder
      @Uni-Coder 5 ปีที่แล้ว +1

      @@LtGenFlower Так соер два раза аллоцирует, когда можно один раз

    • @LtGenFlower
      @LtGenFlower 5 ปีที่แล้ว

      @@Uni-Coder костыль :)

  • @WGDev
    @WGDev 5 ปีที่แล้ว +12

    Особенно тема про непонимание шуток интересная! Можно развернуть её подробнее?

  • @МересбеС
    @МересбеС 5 ปีที่แล้ว +2

    Спасибо большое, классные видео

  • @kuzovikk7876
    @kuzovikk7876 3 ปีที่แล้ว +1

    Прикольно. Это вступление к инструкции "Как делать вирусы"?

  • @gorglefterov3532
    @gorglefterov3532 5 ปีที่แล้ว +28

    Эх, даже нас в универе этому учат, а я как бы вообще на квантовой радиофизике

    • @Blendershick
      @Blendershick 5 ปีที่แล้ว

      Расценивай это как плюс. Не в каждом вузе так хорошо учат студентов физиков программированию. А ведь это очень востребовано в научных исследованиях. (Сам учусь на физике. Программирование присутствует, но не в таком обьеме)

    • @gorglefterov3532
      @gorglefterov3532 5 ปีที่แล้ว +1

      @@Blendershick та я не спорю, просто наш факультет это электроника с основ, но програмипование кусками, это просто составляющая курса микропроцессорв

    • @legiontime9897
      @legiontime9897 5 ปีที่แล้ว

      @@gorglefterov3532, сделай сталкер 2

    • @ChatGPT-k5z
      @ChatGPT-k5z 4 ปีที่แล้ว

      Если мы не заглянем в будущее оно кнам не прейдёт

  • @yoelshafir1620
    @yoelshafir1620 4 ปีที่แล้ว +3

    Очень интересно. Подскажите 2-3 книги небольшого объема (можно и на английском) чтобы лучше понять о чем здесь речь?

  • @GloriousJenya
    @GloriousJenya 5 ปีที่แล้ว

    10из10 дядька всегда смотрю и очень нравиться

  • @romanenot
    @romanenot 5 ปีที่แล้ว +1

    Помню подобное описывал Крис Касперски в статье "Дизассемблирование в уме".

  • @IvanLychko
    @IvanLychko 5 ปีที่แล้ว +31

    когда ты программист ПХП. Смотришь на магию =)

    • @orkoteg09
      @orkoteg09 5 ปีที่แล้ว

      нет, просто вспоминаешь лицей и первые курсы универа... и то, что это было у тебя в прошлом веке )))

    • @СашСавар-ф5д
      @СашСавар-ф5д 5 ปีที่แล้ว +1

      @@orkoteg09 Этот прошлый век работает шустрее любой программы написанной на чем угодно, KolibriOS слышал?

    • @КириллТок-т5о
      @КириллТок-т5о 4 ปีที่แล้ว

      @звизданутое солнце говно с мочей

  • @bishoprichi487
    @bishoprichi487 5 ปีที่แล้ว

    Отличный контент. Спасибо огромное

  • @bashebash6942
    @bashebash6942 3 ปีที่แล้ว

    Ждал пока это кто-то сделает, красава!

  • @ЧенЧен-ц1ь
    @ЧенЧен-ц1ь ปีที่แล้ว

    Под DOS-ом, теоретически, можно было сделать всё честно в com-файл. Правда, нужно было правильно сделать заголовок com файла, не помню с окончанием, вроде тоже что-то нужно было. А так, если хотелось побаловаться, в редакторе VC писалась программа на asm, а компилятором, входившем в turbo c, всё компилилось в obj, потом в com (до 32 K).

  • @sixaxisization
    @sixaxisization 4 ปีที่แล้ว

    А можно тоже самое, тольк обез ОС? К примеру, Я хочу реализовать данный метод на cortex-m3 камне, как быть? Спасибо!

  • @vadimdorokhov8375
    @vadimdorokhov8375 5 ปีที่แล้ว +3

    Вот они.... Монстры IT. Чувак, у тебя просто лучший материал!

  • @ВесёлыйБегемотик777
    @ВесёлыйБегемотик777 2 หลายเดือนก่อน

    Блин,он гений! Я то думал он реально на машинном коде будет писать

  • @TheRaznoboy
    @TheRaznoboy 5 ปีที่แล้ว

    Какие лучше очки купить для работы на компьютере

  • @KHANZE
    @KHANZE 5 ปีที่แล้ว

    Soer, А чем вы в свободное время занимаетесь?

  • @СергейКаракулов-в7з
    @СергейКаракулов-в7з 5 ปีที่แล้ว +1

    круто, часто Soer так развлекается для души?)

  • @ivanfedorov7934
    @ivanfedorov7934 4 ปีที่แล้ว

    очень интересно, и наглядно понял конечно не много, но хоть увидел, что это не магия. В в Хогвард) точно теперь не пойду, буду вас смотреть все-таки безопаснее и комфортнее))

  • @Ланс-м1в
    @Ланс-м1в 3 ปีที่แล้ว

    Подскажите как вызывается функция с двумя параметрами через указатель на функцию без параметров. Разве компилятор пропустит?

  • @ДмитрийБеляев-ъ1з
    @ДмитрийБеляев-ъ1з 5 ปีที่แล้ว +10

    Всегда интересовал вопрос, как работают JIT компиляторы, если executable память read only, а тут прямо просвещение снизошло... Все таки mmap умеет очень многое

    • @andrii_nya
      @andrii_nya 5 ปีที่แล้ว

      Хз как на линуксе но всегда можно сказать что память rwx

    • @КотПапироскин-е3и
      @КотПапироскин-е3и 5 ปีที่แล้ว +2

      Ты чего матом-то ругаешься?

    • @denkyiv2722
      @denkyiv2722 3 ปีที่แล้ว +1

      Скажите ещё что-нибуть на JIT компиляторном.

  • @skuulptura
    @skuulptura 5 ปีที่แล้ว +1

    А разве нельзя сразу спроецировать файл через mmap без чтения?
    Типа как-то так: mmap(NULL, dataSize, PROT_READ | PROT_EXEC, MAP_PRIVATE, fp, 0)

  • @PavlikGyra
    @PavlikGyra 5 ปีที่แล้ว

    Чётко и по-полочкам!!!

  • @dineo9098
    @dineo9098 5 ปีที่แล้ว +1

    А будет отдельное видео про структуру опкодов? Хотелось бы послушать про это какие-нибудь интересные подробности.

  • @FunFradd
    @FunFradd ปีที่แล้ว

    отлично ждём ролик где вы пишите bare metal программу

  • @snatvb
    @snatvb 3 ปีที่แล้ว

    Может разобрать как работали раньше консоли? интересно, как сделать свой код для запуска другого кода на embedded системе, типа STM чипа или ESP, взяв готовую плату

  • @user-10248
    @user-10248 5 ปีที่แล้ว +10

    Это шикарно!
    Хоть решаемая задача весьма проста, но объяснено все очень доходчиво.
    Хочется попросить сорцы этого "интерпретатора" и побольше подобных видео. В идеале серия видео про подобные вещи, в частности, от нажатия кнопки включения ПК до полноценного запуска ОС с нюансами того, что кого и как запускает, откуда знает где лежит и т. п.

  • @VZMDeadAngel
    @VZMDeadAngel 4 ปีที่แล้ว +1

    Помню тайком в армии экспериментировал с самомодифицирующемся кодом. Перед выполнением функция дешифруется, выполняется, а потом опять шифруется. Старый трюк, но очень интересный.

  • @konstantinkouptsov7513
    @konstantinkouptsov7513 5 ปีที่แล้ว +3

    Оч хорошо! А про __cdecl, __fastcall и другие можно поподробнее в другом видео (и про то, когда параметров у функции много)?

  • @vangog63
    @vangog63 5 ปีที่แล้ว

    Весьма познавательно!

  • @lightlessq
    @lightlessq 5 ปีที่แล้ว +2

    Может попробуешь написать очень простую OC?

  • @kolyan199816
    @kolyan199816 5 ปีที่แล้ว +7

    Все, теперь модули для qt писать буду не на js, а в бинарном коде

  • @Макс-э2ч2г
    @Макс-э2ч2г 25 วันที่ผ่านมา

    Стало интересно. В одном из коментах к требованиям чувак писал один вроде шутки. Сделать частицы воды на ассемблере... Стал копать в теме..

  • @ДжонСноу-я8э
    @ДжонСноу-я8э 5 ปีที่แล้ว

    грамотный мужик, лайк

  • @ПетрФролов-е6г
    @ПетрФролов-е6г 5 ปีที่แล้ว

    Круто! Я только программу "Hello World" в машинных кодах писал.

  • @funtik1991
    @funtik1991 5 ปีที่แล้ว

    Иж как исхитрилса... А вообще, очень познавательно!

  • @PtnSmnty
    @PtnSmnty 4 ปีที่แล้ว

    Соер, вопрос, как выучить вообще коды?

  • @alexstrite6532
    @alexstrite6532 5 ปีที่แล้ว

    Подскажите пожалуйста, где можно обучиться сео?

  • @a.osethkin55
    @a.osethkin55 3 ปีที่แล้ว

    Огонь. Больше про асм

  • @ВладимирЗлатомрезов
    @ВладимирЗлатомрезов 5 ปีที่แล้ว

    да просто супер! спасибо за видео

  • @raiden1860
    @raiden1860 2 ปีที่แล้ว

    Здравствуйте! Возможно ли выполнять системные вызовы из выделенного региона памяти?

  • @BoddenDeni
    @BoddenDeni 5 ปีที่แล้ว

    познавательно. Для общего развития пойдет.