Не, ну это изи)) Давай теперь следующий челлендж : написать программу водя намагниченной иголкой по блину жесткого диска
@nickvirus94635 жыл бұрын
Vlad Bubliu Лучше перфокарты нет ничего для мануального кодирования
@socolovalexandr5 жыл бұрын
А почему иголкой - сразу ломом :)
@Uni-Coder5 жыл бұрын
Надо было сделать видео, в котором он разговаривает в двоичном коде :)
@ventilyator5 жыл бұрын
@@Uni-Coder зачот :)
@huaweiinc.41905 жыл бұрын
по обычному блину
@shogunkub5 жыл бұрын
То, что 50 лет назад было суровой правдой жизни, теперь выглядит как хитрый трюк ))
@edward.vstock5 жыл бұрын
не такой уж суровой, если вспомнить какой средний размер программы был в те времена
@engsc70945 жыл бұрын
даже меньше чем 50, в начале 90х игру питон вводил с журнала )
@KirillBerezin5 жыл бұрын
А еще тогда люди не называли код на ассемблере машинным кодом :)
@СергейКаракулов-в7з4 жыл бұрын
@@KirillBerezin он писал же в машинных кода просто смотрел коды команды соответствующие ассемблер командам или я не прав
@protiv_bio4 жыл бұрын
@@KirillBerezin потому что код на языке ассемблера != машинным кодам
@stenline5 жыл бұрын
Как говорится: Ждем курс написания сайта на транзисторах...
@AntiBandera4 жыл бұрын
жди
@ИванНиколаенко-м2р4 жыл бұрын
@@AntiBandera господин Соер шуток не понимает)
@olegivanov61634 жыл бұрын
@@ИванНиколаенко-м2р, по-этому - ждём.
@ИльдарБулатов-т4х4 жыл бұрын
ахахахах
@АлександрПлавин2 жыл бұрын
Схематически это не слишком сложно. Тут проблема в количестве транзисторов и помехозащищённости.
@TruVi-1311 ай бұрын
До сих пор помню многие машинные коды PDP-11 (Электроника-60). Это как первая любовь, помнишь всю жизнь. Создавали программы сразу в машинных кодах в 1985 году, потом записывали на перфоленту. Помню, что код 177 (восьмеричный) - были пробиты все отверстия, в этих местах лента часто рвалась :).
@СергійДмитрович-и1ж5 жыл бұрын
Очень хотелось бы увидеть видео о написании фронтенда сайта на ассемблере, а то HTML сильно тормозит.
@anton.k.5 жыл бұрын
тогда и браузер надо свой писать, на веб ассемблере еще может как-то реально.
@СергейКаракулов-в7з4 жыл бұрын
ну можно сделать фронтенд без html css и js на canvas/webgl + webassembly но зачем, в конечном счете получится своя реализация аналога html и css)
@aske34ru4 жыл бұрын
@Сергей Каракулов сказать программисту что уже существует библиотека для решения его задачи. Это все равно что сказать поэту что уже написана песня о любви.
@vroshupkin14 жыл бұрын
Есть webassembly, но пишешь как бы в движке браузера. Очень крутая и интересная штука
@aske34ru4 жыл бұрын
@@СергейКаракулов-в7з в figma кстати так и сделали
@ArtLvl-y1o4 жыл бұрын
В наше время это немного похоже на то, как если бы человек вышел из экскаватора и начал копать руками
@Veter19924 жыл бұрын
Когда у тебя есть экскаватор, а надо аккуратно посадить одно семечко в маленький горшочек то почему бы и не вылезти из экскаватора?
@5классвиленкин-ъ4п4 жыл бұрын
@@Veter1992 для этого есть лопата, но уж явно не руками
@ChatGPT-k5z4 жыл бұрын
@@5классвиленкин-ъ4п нет я хочу что бы ты копал руками хочу ! 😂😂😂
@linterrupt3 жыл бұрын
@eugene martein так черенок давно уже существует
@zelmanfeig54043 жыл бұрын
Отличный комментарий! В точку! Они говорят о возможности работы с процессором напрямую, но на деле - предлагают отложить фотошоп и 5 часов подряд рисовать пиксели в пайнте.
@dikson30725 жыл бұрын
Теперь следующий этап - написать собственную ос и захватить 99% рынка
@denpro88455 жыл бұрын
Всего-то и надо 38 лет интенсивного развития. ru.wikipedia.org/wiki/MS-DOS
@KnyPovir5 жыл бұрын
38 лет = 324 672 человеко часов
@Евгений-п1л1ъ5 жыл бұрын
@@KnyPovir просто часов. Человеко-часы это сумма рабочих часов всех людей, которые работали над проектом.
@KnyPovir5 жыл бұрын
@@Евгений-п1л1ъ/videos Тогда весь юмор теряется...
@denpro88455 жыл бұрын
@@Евгений-п1л1ъ совершенно верно. когда 40 человек сидят на совещании всего два часа, они убивают две недели рабочего времени.
@dmitrybezzz17083 жыл бұрын
Можешь в машинных кодах ? Можешь ) Собственно моя первая программа была в машинных кодах и была взята из журнала Радио (конец 80-ых), в момент когда родители купили компьютер с забавным названием Микроша (процессор КР580) )) Это был кайф от программирования ! Хочешь изучить тему, разбери ее на молекулы. В последующем на чистом машинном написал две игры с псевдографикой и компилятор Форта, начал было трассировщик писать, но школа закончилась поехал дальше учиться. Вспоминаю с ностальгией. Хочу сказать, что если потратить на это определенное время, то даже в коде не сложно программировать. Главное заложить базис в голове. На тот момент, кстати, переходить на ассемблер и не было никакого желания. Казалось, что это лишняя трата времени на писанину. Да и архитектура процессоров КР580 и памяти способствовала, не такая сложная как у современных ПК. С другой стороны при наличии соответствующих инструментов можно и сейчас программировать в коде.
@marat-nagayev2 жыл бұрын
написал компилятор пока был школьником в машинных кодах? мужик не делай из нас дураков, это невозможно не хватит ни мозгов школьника, ни времени
@dmitrybezzz17082 жыл бұрын
@@marat-nagayev послушайте интервью Стива Возняка, где он говорит что написал компилятор Бейсика для первых Apple на ассемблере. Написал он его за достаточно короткое время. Ну и в качестве кокетства добавлял, что в первой версии не смог или не успел добавить операции с плавающей точкой в бейсике. Вы же не сравнивайте компиляторы сегодняшнего уровня с кучей библиотек и компиляторы 80-ых ! И еще раз - архитектура памяти была упрощенная. При достаточном погружении (практике) писать на машинном языке на тех машинах получалось даже быстрее чем на ассемблере. Вы видимо не представляете объема работы. И уж тем более не представляете внутреннюю красоту языка Форта, ядро которого (без библиотек) может уместиться в кэш современного процессора. И потому, к слову сказать, очень быстрого в исполнении.
@dmitrybezzz17082 жыл бұрын
А на просторах интернета можете найти людей которые совершили подобный "подвиг" и тоже написали свой компилятор Форта пусть даже и не в машинном коде...
@shikataganai19554 жыл бұрын
Это понятно и легко. Некст челлендж уровня impossible - сделать исполнение шеллкода, но помещая в rwx память не все инструкции сразу, а по одной. Так, чтобы в памяти в момент исполнения всегда была только 1 инструкция, после исполнения которой идёт ее «затирание» и передача управления на следующую ,которую мы также, как в этом видео прокидываем из кучи. (В куче инструкции могут находится в шифрованном массиве, к примеру) Получится прототип защиты кода в памяти. Либо второй челендж уровня impossible - на вход получаешь тот же шеллкод. Имплементируешь алгоритм для поиска rop гаджетов на основе инструкций своего шеллкода. Импортишь хаотично dll и там ищешь эти гаджеты. Потом передаёшь управление от гаджета к гаджету, тем самым исполняя свой шеллкод. Опять же в таком случае шеллкод будет не в одной странице rwx, а разбросан по исполняемым адресным пространствам разных dll. Осилишь?))
@aswonder55695 жыл бұрын
В 80-х годах прошлого века я в Политехнической библиотеке переписывал в тетрадку 16-ричные коды из журнала Apple Magazine и в институте их вбивал на реальном компе, получая в итоге работающую программу. Мой лучший результат - "взломать" текстовый редактор Apple II так, чтобы он понимал кириллицу. Правда, пришлось пожертвовать важной функцией copy/paste блоков текста.
@rico198920045 жыл бұрын
Ух... ностальгия аж вспомнился первый курс и радость после написания драйвера на asm для точечно-матричного принтера
@ИндустриюДальнемуВостоку5 жыл бұрын
А мы писали контроллер для плазменного резака на tasm, на судостроительном заводе, я другу помогал, а так у меня образование фазанка :D
@orkoteg095 жыл бұрын
модем для датчиков на магистральных газопроводах - моя дипломная (ассемблер) ))
@Ланс-м1в3 жыл бұрын
Красавчик
@AlexanderSavchenko915 жыл бұрын
Растёте :) отличная подача и свежий вид )) приятное видео
@user-ez5vg6tq2u5 жыл бұрын
Alexander Savchenko прикалываешься писюн? Нихуя же непонятно!!!!!
@Mikola_Naumenko5 жыл бұрын
Просто лайк. Те кто когда то ковырялся в Радио86РК, Спецалист, Микроша или в подобных монстрах эры начала персональных компьютеров, помнят, что такое Ассемблер.
@VERTinBY5 жыл бұрын
куда же без него... половина игр хранило жизни в регистре А , перебор... LD A,254 всегда хватало ))
@ИндустриюДальнемуВостоку5 жыл бұрын
basic на квант БК в 1997 году. Первый комп после приставок, у меня был уже Panasonic 3DO, но после знакомство с Квантом, не спал суток двое. Документации не было, просто угадывал для чего какая команда нужна. А потом подарили книгу basic для детей, тут все и началось...
@igorchesnokov4825 жыл бұрын
@@VERTinBY А DEC A на INC A менял, чтобы жизни, когда помираешь, увеличивались? :)
@HarryVereha5 жыл бұрын
Синклер-Спектрум!!!
@ИндустриюДальнемуВостоку5 жыл бұрын
Помню как клавишам действие научился присваивать, лучший день в жизни был LET команда :)
@ermolinandrey40985 жыл бұрын
Конечно многое зависит от операционной системы, но в данном случае мы написали только функцию, для выполнения которой надо откомпилированную программу. Используя другие операционные системы (например DOS или Windows 7 x32 (как помнится это последняя ОС поддерживающая COM файлы)) можно писать напрямую в файл и выполнять этот файл. Магия в использовании формата файла COM. По сути ОС при загрузке просто размещает содержимое файла в памяти со смещением 0x100h относительно начала сегмента (начало сегмента занято заголовком содержащим служебные данные, такие как командная строка и прочее) и передает управление на первый байт загруженного файла.
@_ProstoTak2 жыл бұрын
Автор мог, например, взять DosBox, в нем 16-ричным редактором создать COM-файл. запустить и показать - вот то было б реально что просили. А тут, блин, во-первых написал какую-то туфту из 2 команд, даже не Hello, World, а во-вторых - реально писал-то он не в машинных кодах, а на ассемблере.
@ivankprod Жыл бұрын
@@_ProstoTak А Вы помните хоть некоторые команды в 16-ичном виде сами?
@_ProstoTak Жыл бұрын
@@ivankprod Зачем их помнить, на то таблицы есть. И да, я например еще помню что CD - это команда прерывания (и соответственно CD 21 - "int 21h", главное DOSовское API). Но претензии к автору не в том что он не помнит/не знает каких-то кодов (ибо как я сказал выше - это справочная инфа), а в том что заявленное не соответствует сделанному.
@ToxaKolganov5 жыл бұрын
Прикольно, но хотелось бы увидеть реализацию elf/exe с нуля, без кода посредника и вмешательства компилятора ))
@antonantochi84985 жыл бұрын
Ссылка на функцию - "гениально". С таким же успехом можно было показать, как колить на опкодах в дизассемблере :)
@квадратя5 жыл бұрын
Настоящие мужики делают свой проц в spice-симуляторе со своим блекджеком и опкодами.
@MonahTuk5 жыл бұрын
Я не настоящий, я всего лишь с Microblaze работаю :-P
@andrsam36825 жыл бұрын
пфф.. на 155 логике они его делают))
@nikolai-Ll9iZXJnYW1vdGgK5 жыл бұрын
@@andrsam3682 пффф.... даже на релюхах;)
@Pan-ux3bq5 жыл бұрын
На андроид маркете есть эмулятор советского калькулятора электроника мк54. Когда чуваки писали исходный код, вся документация уже была утеряна, а завод лежал в руинах. Так вот оригинальное содержание ПЗУ восстанавливали с помощью микроскопа
@Vlad0i0mir15 жыл бұрын
@@Pan-ux3bq по руке от терминатора)
@random_company3 ай бұрын
Гений, нет слов, благодаря тебе я сделал генерацию опкодов для моего ассемблера!
@ДмитрийКосых-л3х5 жыл бұрын
Замечательное видео. Всегда считал машинный код чем-то непостижимым, для реальных хардкорщиков. А после видео, появился интерес к данной теме.
@andrejvlasov54525 жыл бұрын
Про ассемблер вы наверное не слышали?
@ДмитрийКосых-л3х5 жыл бұрын
@@andrejvlasov5452 Нет, я слышал про ассемблер
@mihalt111 ай бұрын
Очень странно, вроде спрашивали написать на машинных кодах, а не на ассемблере. Помню в детстве изучал ассемблер, и при написании программок компилировал их в com файлы, потом через дебагер смотрел что происходит с машкодом, ну и со временем начал писать прямо машкодом com файлы, так как это проще, быстрей, и не нужно компилировать. К примеру вот программа смены текстового видеорежима в досе B8 00 00 CD 10 CD 20 чтобы получить другой видеорежим нужно 00 00 заменить на 03 00. Блин, уже больше чем 25 лет прошло, а до сих пор помню, а что вчера было забыл.
@reckt63435 жыл бұрын
Напиши нейросеть в двоичной коде
@vladislavknyshov34825 жыл бұрын
Го в троичном
@darkmatter95205 жыл бұрын
Го в квантовом
@stas90665 жыл бұрын
Сделаю вид, что понял твоё высказывание)
@AndreyOslin5 жыл бұрын
Можно умереть наверное прежде чем ее написать до конца. Нужна что то выше этого примитива.
@lphoenixl77713 жыл бұрын
А ты знаешь толк в извращениях.
@moozoo25895 жыл бұрын
На zx spectrum в середине 90-ых только так и программировал. Тысячи строк на ассемблере, оптимизация кода расчитывая количество тактов. Сегодня же 90% кода тормознутый порожняк.
@parametrico4 жыл бұрын
Не говори, ELITE занимала 40 килобайт, а щас я извиняюсь сpaнbIй мессенджер, в котором ни байта графики, только буквы и смайлы - 50 мегабайт ! ) дрова на видяху анадысь качал - 550 мегабайт ! Это ж как надо разучиться программировать так за 30 лет, не понимаю...
@Neo542134 жыл бұрын
@@parametrico нету смысла что-то экономить в ущерб времени разработки когда ресурсы довольно дешёвые
@АмэйзингЧенал4 жыл бұрын
Это где такое сегодня ? 👀90 % порожняк ? 🥴та ты фуфло какое-то гонишь . Кто залайкал тя непойму .такие же фуфела как и ты походу 🤾
@Bublerkin3 жыл бұрын
Раньше чистый код писали, а сейчас, если что-то надо - фигакс, линкуем целую библиотеку. Нужна поддержка h264 - прилинкуем целый libavcodec в несколько десятков мегабайт и сотней ненужных кодеков и пофиг, что 95% кода оттуда никогда не будет вызываться. Или exe-шник Doom 3 весил 5 мегабайт, а в Doom 2016 два exe-шника, каждый по 100Мб - один для vulkan, другой для opengl - это даже смешно, учитывая, что движок не стал в 20 раз круче. И текстуры раньше сжимали в jpg, а сейчас фигачат без сжатия. Поэтому такие слоновые игры стали.
@АлександрДаскаль-е6т3 жыл бұрын
@@Bublerkin Глупости пишете. То что не будет вызываться в код не попадет. Кто хочет оптимальный код, нет проблем, пишите на С и даже асме можно если сильно нужно. А если операционка мешает есть DOS.
@MikhailGoncharov-tl4cr9 ай бұрын
Ютуб просто оракул, уже 4 видео прямо по делу рекомендует
@МаксимХвостов-м1й5 жыл бұрын
Воу-воу-воу полехче это называется binary injection, Хаккер Соер вернулся :) А я вот не сомневаюсь что однажды вот так вот невзначай в развлекательно-обучающем ролике Соер покажет как написать вредоносную программу ;D PS: в сети и на гите можно най ти статьи как написать загрузчик под биос, если понравился этот ролик то лайк Соеру и вам понравиться написать загрузчик т к он не ELF не PE а именно RAW ни каких библиотек и единственная программа которая запустится на вашем ПК после перезагрузки если вы её вздумаете установить :))) PS2: досмотрел видео до конца:) не совсем binary injection но близко к этому :)
@KostsovKonstantin3 жыл бұрын
Прикольно. Раньше в средних школах учили делать ассемблерные вставки. Потому, что без них не выжать производительность. Теперь это мастер класс от профи.
@WhiteZSY2 жыл бұрын
В школе и про TASMучили. И то "профи" не до конца все понимают, объясняют.
@ВеселыйРоджер-н7ы Жыл бұрын
Мы с вами наверно в разных школах учились, потому как в нашей всё ограничилось HTML
@karibas_6973 Жыл бұрын
@@ВеселыйРоджер-н7ыв нашей школе учили word...
@artemmm095 Жыл бұрын
@@ВеселыйРоджер-н7ы В нашей вообще всё ограничивалось вордом и экселем
@NaoNakashima11 ай бұрын
У нас в школе максимум был Паскаль.
@genmanyuri Жыл бұрын
блин ностальгнул сразу в 1990 год ))) для zx spectrum писали игрухи ))
@alexzhelyapov355611 ай бұрын
Крутой чел, реально интересно. Очень долго искал подобный контент на ютубе, спасибо!
@vifvrTtb0vmFtbyrM_Q4 жыл бұрын
В свое время будучи студентом, без компьютера в тетради писал на wasm 86. Потом переводил в опкоды которые брал из книжки по ассемблеру. На компе в volcov commander, в hex-редакторе вбил программу и потом для инструкций jmp, jnz добавлял реальные смещения. Это была игра змейка. Заработало с первого раза. Отлаживал в уме.
@yuriynevazhno25424 жыл бұрын
Отличная подача, все выглядит очень простым и понятным, хотя с ассемблером не знаком.
@alexbublikov40154 жыл бұрын
спасибо, прям напомнило как в универе прогали КП580 вводя 16ричные команды в терминал УМК...
@FrolovDaniil5 жыл бұрын
Евгений, хочу написать, что Вы крутой! Наткнулся на шуточное видео "Голая правда о программистах" и залип на канале просматривая все видео один за другим. Крутая подача, интересные темы! Удачи! Пожалуй подпишусь)
@maksimmelnikov43215 жыл бұрын
Очень здорово, что Вы подняли эту тему.
@КонстантинПродан-ф6ч5 жыл бұрын
Случайно наткнулся на этот видеоролик. Молодец, что решил попробовать, а то остальные все всё знают, но никто не пробует. Единственно, что я бы дополнил - это про структуру команд в двоичном коде - а это "Здравствуй" двоичный код ))). На счет того, что некоторые из комментаторов говорят что это бесполезно - то они не правы. Если ассемблер дает понимание об архитектуре компьютеров, то машинные кода дают представление об архитектуре чипов. А это уже становиться необходимым для разработчиков ОС и драйверов. В особенности для тех, кто собирает свои платы для компа. *Забыл сказать.* Когда-то во времена, когда компьютеры были маленькими, а программисты умными, шла борьба за размер программы. Памяти было мало, а потому экономили каждый байт. Мне известны случаи, когда программист полностью переписывал код, из-за экономии 2х байт программы! И в таких случаях шли на разные ухищрения - типа перехода во внутрь команды! А это, без знания машинных кодом было не возможно.
@tonymac8225 жыл бұрын
Классное видео. Я считаю что что такой формат очень полезный, особенно для хардкорщиков)
@СашСавар-ф5д5 жыл бұрын
Странно по твоему создатели KolibriOS и API Vulkan хардкорщики, или же люди старающийся сделать быстрее работу железа?????
@trak30093 жыл бұрын
@@СашСавар-ф5д И то и другое
@0Schranz5 жыл бұрын
Всегда было интересно узнать ответ на этот вопрос. Спасибо, подписался!
@gorglefterov35325 жыл бұрын
Эх, даже нас в универе этому учат, а я как бы вообще на квантовой радиофизике
@Blendershick5 жыл бұрын
Расценивай это как плюс. Не в каждом вузе так хорошо учат студентов физиков программированию. А ведь это очень востребовано в научных исследованиях. (Сам учусь на физике. Программирование присутствует, но не в таком обьеме)
@gorglefterov35325 жыл бұрын
@@Blendershick та я не спорю, просто наш факультет это электроника с основ, но програмипование кусками, это просто составляющая курса микропроцессорв
@legiontime98975 жыл бұрын
@@gorglefterov3532, сделай сталкер 2
@ChatGPT-k5z4 жыл бұрын
Если мы не заглянем в будущее оно кнам не прейдёт
@WGDev5 жыл бұрын
Особенно тема про непонимание шуток интересная! Можно развернуть её подробнее?
@romanenot5 жыл бұрын
Помню подобное описывал Крис Касперски в статье "Дизассемблирование в уме".
@АндрейЛарин-в6нАй бұрын
Действительно интересно. Спасибо
@ttfd2 жыл бұрын
Круто, жду ещё видосов на ассемблерные темы. Хотя из названия я ожидал увидеть очередной тьюториал по MS-DOS DEBUG, но оказалось тоже очень интересно!
@kolyan1998165 жыл бұрын
Все, теперь модули для qt писать буду не на js, а в бинарном коде
@grossbot60685 жыл бұрын
Очень интересно, но не чего непонятно
@user-yc2rj3du8f5 жыл бұрын
Сначала он в какой-то программе набирает код на языке ассемблера, иструкции, что делать, получает их машинный код в 16-ти ричном формате, потом их загоняет в файл и запускает.
@MisaNia255 жыл бұрын
Ещё бы показали как писать на джава шикарно было бы и понимать в том хоть что то
@andrejvlasov54525 жыл бұрын
@@MisaNia25, это все есть здесь же, на ютубе. Просто нужно писать соответствующий запрос на поиск, а не комментарий к видео.
@КонстантинПетров-у5ц5 жыл бұрын
Начни с грамматики русского языка, а потом все легче пойдет
@МаксимМ-р7и5 жыл бұрын
@@КонстантинПетров-у5ц всЁ пойдЁт, действительно. Нужно знать русский
@williambalford56715 жыл бұрын
Ой какое чудесное видео! Познавательная и интересная! А сам парень Соер умный то какой!
@michaeljordan12832 жыл бұрын
Он же сказал, что только кажется умным.
@denisvz4 жыл бұрын
На ZX Spectrum все игры таким образом и записывались, заголовок на Basic для инициализации процесса загрузки кода в память с помощью peek и poke, затем простыня из шеснадцатеричных значений. Даже книжки продавали, где можно было вручную переписать несколько страниц кодов и получить игрушку :)
@yoelshafir16204 жыл бұрын
Очень интересно. Подскажите 2-3 книги небольшого объема (можно и на английском) чтобы лучше понять о чем здесь речь?
@RussiaVoiced5 жыл бұрын
Ждем выпуск с перфокартами!)
@Артур-м7ц5 жыл бұрын
С перфоратором. 😂
@Uni-Coder5 жыл бұрын
Интересно, почему не получилось прочитать сразу в mem? У меня все сработало: void *mem = VirtualAlloc(0, dataSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE); fread(mem, dataSize, 1, fp); Правда, под виндой и на C++, но разницы быть не должно
@LtGenFlower5 жыл бұрын
ну ты же mem все равно алоцировал
@Uni-Coder5 жыл бұрын
@@LtGenFlower Так соер два раза аллоцирует, когда можно один раз
@LtGenFlower5 жыл бұрын
@@Uni-Coder костыль :)
@rocknrollex74635 жыл бұрын
Отличный материал! Шикарный канал в целом!
@boson_higgs2 ай бұрын
Как всегда Soer на высоком уровне👍👍👍 хотя код низкоуровневый 😂
@MrEyeGlitch3 жыл бұрын
Вот что значить thinking in binary! Я начиная с этого видео подписался на ваш канал, но теперь думаю, что и комментарий не помешал бы! :)
@codedesign92615 жыл бұрын
Последние несколько дней об этом думал как раз ! ))) Читаешь мысли)
@makofako28402 жыл бұрын
Не знаю как я попал на это видео, но я все внимательно посмотрел, но ничего не понял, спасибо , интересно было
@otreshen3 жыл бұрын
Наткнулся на это видео случайно. В прошлом году на 1 курсе универа проходили C/C++. Практически никак ничего нормально не объяснили, в итоге я так и не понял что такое эти ваши указатели. Для меня это осталось чем-то абстрактным, нет, я понимаю указатели на переменные, вместо того что бы их объявлять заново, но я совсем не понимаю их как аргументы у функций или же если они, как на 1 листинге в видео (4:41) представлены: "char **binaryCode;", "void** mem= ...;", "int (*runCodeFunc) () = mem;". Почему в одном месте звездочка ставится перед переменной, а в другом сразу после типа данных, без пробела, а в третьем вообще в скобках, да еще и после скобок зачем нужен пробел и еще две пустые скобки "int (*runCodeFunc) () = mem;"?
@Razor102rus3 жыл бұрын
Как чистый Сишник охринел от того что ты сделал)) сразу подписался!)
@СергейКривенко-р6я5 жыл бұрын
В Windows есть функции VirtualAlloc и VirtualProtect, которые позволяют менять флаги страниц и исполнять код от куда хочешь. Еще можно поменять флаги секций. Это возможно, потому что в Винде сектора данных и кода накладываются друг на друга, занимая одно адресное пространство, Винда использует страничную организацию памяти, а страница может быть и исполняемой и записываемой одновременно. Я так модифицировал одну программу, заставляя ее менять условие во время выполнения.
@ziftrue5 жыл бұрын
Пролог и Эпилог (push, pop) не требуется Просто: mov eax, 5 ; ret;
@Slawaxx5 жыл бұрын
Вот их этих лишних push и pop образуются тормоза у всех программ.
@DenisShaver5 жыл бұрын
@@Slawaxx Стек в быстрой процессорной памяти, в кэше. Так что пох.
@Slawaxx5 жыл бұрын
@@КотЧерный-ю1ф В некоторых задачах (типа однобитного цифрового осцилографа) приходится заморачиваться на то, что быстрее: inc eax inc eax или add eax,2
@Sergey-Primak3 жыл бұрын
push pop нужны, первый вариант - mov eax, 5 - это только частный случай! в общем же случае используется стек, для этого его надо переопределить
@konstantinkouptsov75135 жыл бұрын
Оч хорошо! А про __cdecl, __fastcall и другие можно поподробнее в другом видео (и про то, когда параметров у функции много)?
@IvanLychko5 жыл бұрын
когда ты программист ПХП. Смотришь на магию =)
@orkoteg095 жыл бұрын
нет, просто вспоминаешь лицей и первые курсы универа... и то, что это было у тебя в прошлом веке )))
@СашСавар-ф5д5 жыл бұрын
@@orkoteg09 Этот прошлый век работает шустрее любой программы написанной на чем угодно, KolibriOS слышал?
@КириллТок-т5о3 жыл бұрын
@звизданутое солнце говно с мочей
@mrWWarlock5 жыл бұрын
Когда-то очень давно писал русификаторы и вирусы под DOS, а ещё раньше на машинных кодах под Spectrum. Щас уже почти ничего не помню, блин. Разве что архитектуру, которая можно сказать устарела.
@orkoteg095 жыл бұрын
INC DEC ADD OR XOR JP DJNZ IN OUT PUSH POP... ну как такое забыть?? )) лет 5 назад пересекся с MSP430. по старой ассемблерской привычке, переписал несколько библиотек для уменьшения размера )) (попутно нашел там несколько ошибок(!))
@КириллМихайлов-ж3х2 жыл бұрын
В ТурбоПаскале помнится была директива inline, в которой можно было писать 16-ричные коды и они вставлялись как есть в программу.
@tot_kto_kusalsya7 ай бұрын
Что я сейчас посмотрел? Что происходит? Зачем мне это? Какой вообще в этом смысл? Но, блин, так интересно!
@КаштанБатр2 жыл бұрын
Ты крут. Спасибо. Ничего не понял. Но было интересно.
@VZMDeadAngel4 жыл бұрын
Помню тайком в армии экспериментировал с самомодифицирующемся кодом. Перед выполнением функция дешифруется, выполняется, а потом опять шифруется. Старый трюк, но очень интересный.
@НищаяБлоха Жыл бұрын
Признаки шпионажа
@АдлетАдилханов5 жыл бұрын
Я всегда об этом думал.Но думал это не реально. Мое уважение Soer
@dimovich855 жыл бұрын
Еще бы что-то такое =) Супер, спасибо!!
@ДмитрийБеляев-ъ1з5 жыл бұрын
Всегда интересовал вопрос, как работают JIT компиляторы, если executable память read only, а тут прямо просвещение снизошло... Все таки mmap умеет очень многое
@andrii_nya5 жыл бұрын
Хз как на линуксе но всегда можно сказать что память rwx
@КотПапироскин-е3и5 жыл бұрын
Ты чего матом-то ругаешься?
@denkyiv27223 жыл бұрын
Скажите ещё что-нибуть на JIT компиляторном.
@passertm5 жыл бұрын
Да... Мучение любителей линукс. В досе можно было вроде в .com файл записать голые команды и это запустилось бы. Деталей не помню. Но вроде когда то изучая ассемблер набирал так программы.
@GloriousJenya5 жыл бұрын
10из10 дядька всегда смотрю и очень нравиться
@murm3ow4074 жыл бұрын
Респект автору! Открыл для себя нечто новое)
@bishoprichi4875 жыл бұрын
Отличный контент. Спасибо огромное
@snatvb3 жыл бұрын
Может разобрать как работали раньше консоли? интересно, как сделать свой код для запуска другого кода на embedded системе, типа STM чипа или ESP, взяв готовую плату
@jimbean36015 жыл бұрын
Ого. Это прям как я в 1992 году програмировал на Вектор 06ц в ассемблере
@skuulptura5 жыл бұрын
А разве нельзя сразу спроецировать файл через mmap без чтения? Типа как-то так: mmap(NULL, dataSize, PROT_READ | PROT_EXEC, MAP_PRIVATE, fp, 0)
@andrewuwizard5 жыл бұрын
Так раньше так и делали !!! В журнале Радио публиковали исходный код определенных программ. А дед Линуса Торвальдса вообще только бинарники и писал
@funtik19915 жыл бұрын
Иж как исхитрилса... А вообще, очень познавательно!
@kuzovikk78763 жыл бұрын
Прикольно. Это вступление к инструкции "Как делать вирусы"?
@СергейКаракулов-в7з4 жыл бұрын
круто, часто Soer так развлекается для души?)
@ProF1g5 жыл бұрын
В душе не е*у кто ты, но ютуб мне тебя порекомендовал. Поздравляю с этим, не всех он продвигает.
@lexlutor13672 жыл бұрын
Помню целые листы в 16 ричном коде в журнале Моделист Конструктор. Уже тогда кодили микросхемки для радиоуправления =)
@0alsh5 жыл бұрын
Интересно. Можно небольшое пояснение? Почему нельзя просто сам файл mmap'нуть в память с нужными атрибутами, разрешающими выполнение? Библиотеки .so не так загружаются?
@FunFradd Жыл бұрын
отлично ждём ролик где вы пишите bare metal программу
@Ланс-м1в3 жыл бұрын
Подскажите как вызывается функция с двумя параметрами через указатель на функцию без параметров. Разве компилятор пропустит?
@vitaliiyarema5 жыл бұрын
Это простое использование ассемблера, в код которого передается значения в двоичном формате, хотя все остальные значения, как видно на видео, передаются в шестнадцатиричном формате. Ассемблер, это уже не машинный код. Вопрос, наверное, состоял в том, чтобы писать код чисто по адресации, т.е. чисто бинарные числа.
@Anatoly5553 жыл бұрын
Не нужно останавливаться - числа нужно вводить с перфокарт
@СергейМоскалёв-с3ь3 жыл бұрын
Написание программы в машинных кодах, это когда ты САМ, а не программа, переводишь мнемоники ассемблера в числа, сам рассчитываешь смещения и адреса и вводишь их в файл. Так что, у автора всё по-честному.
@vitaliiyarema3 жыл бұрын
@@СергейМоскалёв-с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
@S0ERDEVS3 жыл бұрын
@Vitalii Yarema где же это машинный код? Это просто буковки и циферки. И уж точно, прерывание 10h не имеет отношения к машинному коду. Вы запутались в абстракциях.
@vitaliiyarema3 жыл бұрын
@@S0ERDEVS Это вы выложили видео о машинном коде, а не я. Не надо переводить стрелки. Машинный код, к вашему сведению, это только двоичные цифры (0 и 1), которые могут быть представлены при написании кода в шестнадцатеричном представлении. Этот код и сохраняется в байтах в файле, который потом выполняется процессором. Вот и ответьте где у вас на видео машинный код? У вас чистой воды использование инструкций ассемблера. Это, конечно, хорошо, понимать и уметь использовать инструкции ассемблера, но это не машинный код. Что значит прерывание 10h не имеет отношение к машинному коду? Запомните, машинный код, это просто всё в цифрах, без слов mov и других.
@KHANZE5 жыл бұрын
Soer, А чем вы в свободное время занимаетесь?
@ОлександрЯкимов-б6й5 жыл бұрын
СКОР) А змейка с тетриса в Командной строке)))
@RedYu5 жыл бұрын
А зачем выделять 2 раза область памяти и потом копировать из одной в другую? Если можно было вместо malloc использовать mmap, и читать в эту же область.
@DelOk855 жыл бұрын
Помню, как во времена Юрского периода я редактировал по мануалам опкоды на Motorola E398 чтобы получить новый фунционал. Хорошие были времена.
@luceferon95745 жыл бұрын
Ну наконец-то я тебя нашел, адекватный канал, с интересным контентом))
@МересбеС5 жыл бұрын
Спасибо большое, классные видео
@ChristianGarlic5 жыл бұрын
Для одних, клиент - это заказчик ПО. а для других - это машина ;-)
@ivanfedorov79344 жыл бұрын
очень интересно, и наглядно понял конечно не много, но хоть увидел, что это не магия. В в Хогвард) точно теперь не пойду, буду вас смотреть все-таки безопаснее и комфортнее))
@sixaxisization4 жыл бұрын
А можно тоже самое, тольк обез ОС? К примеру, Я хочу реализовать данный метод на cortex-m3 камне, как быть? Спасибо!
@ВесёлыйБегемотик777Ай бұрын
Блин,он гений! Я то думал он реально на машинном коде будет писать
@raiden18602 жыл бұрын
Здравствуйте! Возможно ли выполнять системные вызовы из выделенного региона памяти?
@user-102485 жыл бұрын
Это шикарно! Хоть решаемая задача весьма проста, но объяснено все очень доходчиво. Хочется попросить сорцы этого "интерпретатора" и побольше подобных видео. В идеале серия видео про подобные вещи, в частности, от нажатия кнопки включения ПК до полноценного запуска ОС с нюансами того, что кого и как запускает, откуда знает где лежит и т. п.
@ЧенЧен-ц1ь11 ай бұрын
Под DOS-ом, теоретически, можно было сделать всё честно в com-файл. Правда, нужно было правильно сделать заголовок com файла, не помню с окончанием, вроде тоже что-то нужно было. А так, если хотелось побаловаться, в редакторе VC писалась программа на asm, а компилятором, входившем в turbo c, всё компилилось в obj, потом в com (до 32 K).
@BoddenDeni5 жыл бұрын
познавательно. Для общего развития пойдет.
@vadimdorokhov83755 жыл бұрын
Вот они.... Монстры IT. Чувак, у тебя просто лучший материал!
@ПетрФролов-е6г4 жыл бұрын
Круто! Я только программу "Hello World" в машинных кодах писал.
@Anafeyka5 жыл бұрын
(ДИЧЬ) Предлагаю в ручную методом замыкания менять положение транзисторов в процессоре. Также идея (Vlad Bubliu) тоже имеет место быть. Хочу такой же видос, только с решением конкретных задач. Ну к примеру 2+2*2. Канал крутой!