Как написать

  Рет қаралды 111,642

S0ER

S0ER

Күн бұрын

#soer #itubeteam
Основной канал для общения и публикации новых видео - Телегарм - t.me/softwaree...
Спонсорство - donate.s0er.ru
Сайт платным контентом - soer.pro
Зеркало для видео Дзен Видео - zen.yandex.ru/...
GitHub - github.com/soe...
Чат для программистов - / discord
Группа ВК - codeart...

Пікірлер: 614
@FlaPenguin666
@FlaPenguin666 5 жыл бұрын
Годный ролик, чтобы заинтересовать людей в ковырянии байтов. Но. Чувак, как же много неточностей и даже грубых ошибок, которые можно было сто раз заметить при монтаже. - 1:27 include не подключает библиотеки. stdlib и stdio - части одной бибилотеки, стандартной бибилотеки C - 1:47 очевидно, что условие когда-нибудь да сработает, потому что rand возвращает значения от 0 до RAND_MAX - 3:30 пролог состоит из трёх команд, а не из двух - 4:40 sub $0x10, %rsp - это не выравнивание стека, а резервирование памяти под локальные переменные - 4:52 все наоборот jne/jnz - jump if not equal/jump if not zero, je/jz - jump if equal/jump if zero. Сравнение чисел производится вычитанием и Jxx инструкции работают с его результатом (в виде флагов). В видео все работает, потому что пропатченная команда отвечает не за прыжок внутрь then-блока, а наоборот, за прыжок к выходу из программы. - 5:15 опкод jnz всегда обязательно 0x75, потому что так написано в intel software developers manual. Если там не 0x75, значит это другая операция (или у вас не ассемблер). А вот второй байт 0c действительно отвечает за смещение software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf (Vol. 2A 3-495) - 5:30 ассемблерный код можно и нужно сопоставлять с бинарным кодом, потому что ассемблер переводит операции один-в-один. Другое дело, что у одной операции может быть хоть 20 опкодов, которые принимают немного разные значения или даже делают немного разные вещи Бтв, единой спецификации вызова нет. Линукс (upd: GNU/Linux) и, вроде, макось традиционно испольуют x86-64 System V ABI uclibc.org/docs/psABI-x86_64.pdf, а на винде спецификация docs.microsoft.com/en-us/cpp/build/x64-calling-convention?view=vs-2019 появилась только недавно, до этого MSVC делал "что-то", а ребята из cygwin это реверс-инженирили.
@S0ERDEVS
@S0ERDEVS 5 жыл бұрын
2) rand, уже задолбался объяснять, работает по псевдорандомному алгоритму, и надо просто знать алгоритмы чтобы понять, почему при seed = 1 не будет 10ки 3) Пролог состоит из двух команд + необязательное выделение фрейма в стеке (зависит от компилятора). Оно просиходит не всегда (может сделаю видео про это). Как правило если у функции нет вложенных вызовов, то и фрейм не выделяется, потому что смысла нет. 4) Если бы это было не "выравнивание", то выделилось бы 4 байта, а не 16. А выделение памяти под фрейм стэка всегда выравнивается. В данном случае это выравнивание нужно в связи с вызовом функции rand (про ABI ты уже писал), без вызова функции не будет выделения фрейма в данном примере. 5) Все так и есть, в СИ коде делает вход в условие, а асм перепрыгивание, поэтому они в инверсном отношении друг к дуруг. Возможно здесь нужно было более точно пояснить, что я говорил о сравнении в СИ 6) Это не так, jnz - это вообще мнемоника для запоминания группы опираций, и в зависимости от размерности смещения будет разный опкод (можешь сам проверить опкод 0f 85 и 75) 7) уже писал сто раз пропускаете слово "взаимооднозначно", ну и преобразования binary => asm => binary на разных ассемблерах могут дать разные результаты (упакует асм тот же jz другой инструкцией большей резмерности и досвидания) К чему последний абзац? Я вроде про винду ни слова не говорил. В целом хорошая попытка наброса, но просто сходи на "Compiler Explorer" (в гугле можно адрес найти), скомпилируй вот такой код: int main() { int a = 10; return a; } и убедись что пролог гарантированно состоит только из двух команд (gcc).
@FlaPenguin666
@FlaPenguin666 5 жыл бұрын
​@@S0ERDEVS Про rand, это конечно мой фейл, дефолтный seed мало того что константный, так еще определен спекой (www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf 7.20.2.2 The srand function). Признаю, был не прав. (В свое оправдание могу сказать, что стандартным генератором пользовался давным давно и привык, что обычно seed уже какой-то есть, как в g_rand_new) В остальном, я воспринял некоторые фразы из видео слишком буквально ("sub - не часть пролога", "sub == выравнивание", "0x75 0x0c jnz, а может быть 0x85 0x0c jnz"). Подумал, что некоторые твои зрители могут тоже слишком буквально и неправильно понять эту информацию. Особенно те, кто только начинает заниматься такой низкоуровневой штукой. У тебя получился интересный видос, который определенно заинтересует людей заниматься ассемблером, реверс-инженирингом и возможно какими-нибудь компиляторами. PS: если кому интересно, то не резервируется память на стеке из-за red zone (все тот же System V ABI 3.2.2 The Stack Frame). tl;dr: это запас стека, чтобы оптимизировать листовые функции. Но размер этого запаса не очень большой, поэтому в какой-то момент sub все таки добавится gcc.godbolt.org/z/HLcl3V. (это, как и предыдущий последний абзац - просто "by the way" для мимо проходящих, чтобы облегчить им поиски информации)
@S0ERDEVS
@S0ERDEVS 5 жыл бұрын
Совершенно верно, все дело в красной зоне, которая составляет 128 байт. И, кстати, добавится не обязательно sub, многие компиляторы (не уверен что все), если нужно зарезервировать фрейм стека равный 128 байт сделают это через add rsp, -128, просто чтобы сэкономить два байта на инструкции. Это еще одна причина по которой я бы не относил резервирование и выравнивание фрейма к прологу. В целом мне нравится твой конструктивный подход, считаю, что твои комменты лучшие из опубликованных здесь. Поэтому закреплю их чтобы все кому интересно могли прочитать. По поводу оговорок и неточностей в видео, то они будут всегда, так как я пишу без сценария и с одного дубля, поэтому мозг иногда "глючит", так как думаешь сразу о нескольких вещах.
@DmitriyUV
@DmitriyUV 5 жыл бұрын
Во вы тут шарите оба 😀👍, я то вообще просто чуть чуть на питоне пишу 😅😁
@alexandrpereverzew8515
@alexandrpereverzew8515 5 жыл бұрын
Software Engineer - Soer у
@Александр-ц5п8в
@Александр-ц5п8в 5 жыл бұрын
+ за анализ двоичных файлов, интересно.
@RogovAB
@RogovAB 5 жыл бұрын
Все файлы двоичные.
@serhiis_
@serhiis_ 5 жыл бұрын
@@RogovAB В спицификации файлов есть текстовые и двоичные файлы. Так что не надо тут умничать. Учите матчасть. Для этого даже предусмотрен флаг "b" для бинарных файлов. От этого флага зависит поведение многих операций с файлами.
@RogovAB
@RogovAB 5 жыл бұрын
@@serhiis_ флаги и спецификации не меняют сути. Не двоичый фаил, это например, троичный. А текстовый фаил, это двоичный фаил с ограниченным набором двоичных кодов в рамках печатных символов. И нечего тут демагогию разводить. Поведение зависит от функции файла. Двоичный нетекстовый фаил может быть исполняемым, а может таковым не быть... и т.п.
@serhiis_
@serhiis_ 5 жыл бұрын
@@RogovAB ты тупой? Есть такой предмет информатика. Вот иди учи матчасть. Термины свои решил вводить - ты профессор или кто? Кто тебе право новые термины вводить дал? Если там черным по белому написано что есть 2 типа файлов. Аксиома Вася.
@RogovAB
@RogovAB 5 жыл бұрын
@@serhiis_ Не нужно быть профессором, что бы понимать столь простые вещи.
@almightiey
@almightiey 5 жыл бұрын
То чувство когда новичок: Нихуя не понял, но очень интересно
@arkantosvictor9779
@arkantosvictor9779 5 жыл бұрын
ага, особенно когда он на 4:16 сказал "ок, все понятно" )))
@maciusdabrowski3543
@maciusdabrowski3543 5 жыл бұрын
Мнение Артемов не учитывалось.
@KyivanEnjoyer
@KyivanEnjoyer 5 жыл бұрын
то чувство, когда зачем 20 айкью челики лезут в програмирование
@maciusdabrowski3543
@maciusdabrowski3543 5 жыл бұрын
@@KyivanEnjoyer то чувство, когда зачем 60 айкью челики лезут в термины, значения которых не знают даже приблизительно.
@NvanMakuL
@NvanMakuL 5 жыл бұрын
Ты не одинок:)))☺Есть куда стремится☺☺☺
@vangog63
@vangog63 5 жыл бұрын
Очень круто! Интересно было бы увидеть как выглядел бы исходных код для измененного binary файла. Спасибо! Подписка и лайк!
@GameWorldMrKIller
@GameWorldMrKIller 4 жыл бұрын
а если серьёзно, то программисы, реально интересные люди, у них хорошо развита логика, и мозги постоянн оработают, вот только минус, стать им очень сложно, реально нужно столько всего изучать, а я даже с vim совладать не могу, где то что то перепутаю, где то не увижу какой режим стоит, и т.д, до этого изучал python (тупо чтоо бы автоматизировать некоторые действия в системе), язык интересный, понять его может даже человек ооочень далёкий от программирования, такой как я, а после мне посоветовали изучать c++, ну я подумал, ну можно, на нём же linux написан, может я смогу модули всякие там писать, начал изучать, всё нормально, а после попал на указатели, всё, я перестал соображать, что и как, а вот некоторые люди это всё равно изучают, разбираються, уважение таким людям
@ill4374
@ill4374 Жыл бұрын
"Не дай боже в linux kernel будет c++" - слова Торвальдса
@mikhailkh8560
@mikhailkh8560 5 жыл бұрын
Даешь еще ролики про ассемблер! Кстати заодно посоветую всем книжку Чарльза Петцольда - "Код". Как раз про то с чего все начинается и как устроено. Подписка, лайк, за такой контент и донат можно
@arnold8-u3w
@arnold8-u3w 4 жыл бұрын
Годный контент
@Zavulon777
@Zavulon777 5 жыл бұрын
Глядя на превью был уверен, что это Торвальдс
@a.osethkin55
@a.osethkin55 3 жыл бұрын
Круть!!
@Ant1stat
@Ant1stat 5 жыл бұрын
По превью подумал, что это Сатир.
@dishaforex
@dishaforex 5 жыл бұрын
4:16 «ОК, все понятно!» :)))))
@timv7817
@timv7817 4 жыл бұрын
Я надеюсь такой вопрос ещё не задавали. Возможно ли таким же способом пропатчить файл версии windows, чтобы прям было видно каждую функцию и ее название?
@gungunovi4941
@gungunovi4941 2 жыл бұрын
Вот вопрос возник. Я пытался изменить инструкции "на ходу" с помощью gdb. Цель была в том, чтобы заменить пару инструкций на "jmp ", чтобы бесконечно зациклить вывод. Собственно, посмотрев опкод, я обнаружил его равным 0xe9. Но я так и не понял как указать куда именно нужно "прыгнуть", потому как сам опкод 0xe9 соответствует прыжку на следующую инструкцию. Как же все таки заставить jmp прыгнуть на нужный адрес? Upd: менял опкоды с помощью команды "set" в gdb
@snarksnark5038
@snarksnark5038 5 жыл бұрын
то что Си программы можно коверкать как хочешь уже ни кого не удивишь а как насчет дизассембливание и изменения программ написанных на так называемых безопасных языках программирования например Компонентный Паскаль в среде Blackbox?
@sluchainik
@sluchainik 5 жыл бұрын
Линус Торвальдс выучил русский язык?
@aleksandr_muga
@aleksandr_muga 3 жыл бұрын
Как на счет анализа кода через гидру?
@Пупс-к6л
@Пупс-к6л 5 жыл бұрын
Ничего не понял , но на всякий случай передернул
@kombuchamp
@kombuchamp 5 жыл бұрын
Спасибо за ролик Про то, почему ассемблерный код нельзя однозначно сопоставлять с бинарным, хотелось бы услышать.
@HitmanXcreative
@HitmanXcreative 5 жыл бұрын
Поддерживаю.
@BoostBrainCourse
@BoostBrainCourse 5 жыл бұрын
Потому что ассемблер - это язык программирования, который компилируется в объектный код, а потом линкуется в машинный, точно так же, как любой другой компилируемый язык. И в результате там могут варианты, которые при разном бинарном коде делают одно и то же.
@kuqmua755
@kuqmua755 5 жыл бұрын
+
@batfist6595
@batfist6595 5 жыл бұрын
*
@ИванЛебедев-з8у
@ИванЛебедев-з8у 5 жыл бұрын
Если автор затеет все это объяснить, то за 10 -15 минут, увы, не получится. Это глубокий океан, где показали одну каплю из всего того, что на самом деле под капотом программ. Ассемблерный код должен получиться откуда-то, как вы думаете? Два варианта - исходник или дизассемблированный листинг. Исходник, это дело понятное, а вот что касается дизассемблирования, то здесь получается, что мы берем чужой код, чтобы получить его исходник - используем дизассемблер(или отладчик, хотя обычно используют два этих инструмента в паре) и вуаля. Так как дизассемблер может превратить двоичный код в листинг с инструкциями на асме? Автор имел ввиду нечто другое и , надеюсь, он это объяснит далее)
@russellray1219
@russellray1219 5 жыл бұрын
8:30 Про reverse engeneering, анализ вредоносного кода и спец. тулзы хотелось бы посмотреть видео в Вашем исполнении. Жду с нетерпением!)
@borismor1
@borismor1 5 жыл бұрын
Ну я прам в детство окунулся свое босоногое... SoftIce, IDA, патчи)
@H336-p1v
@H336-p1v 5 жыл бұрын
Первый раз в жизни подписываюсь на канал с первого видео. А то мало ли, годноту такую пропущу 🌚
@НиктоНиктоев-щ7ю
@НиктоНиктоев-щ7ю 5 жыл бұрын
сэйм шит)
@artawowerlh7761
@artawowerlh7761 5 жыл бұрын
Круто, на более низкоуровневые темы видосы офигенно интересны
@Time_Developer
@Time_Developer 5 жыл бұрын
*Ты просто в 80-х с кодом не работал, иначе тебе всё это, уже в печёнку засело бы. ;)*
@artawowerlh7761
@artawowerlh7761 5 жыл бұрын
@@Time_Developer не работал ;) меня тогда даже в планах не было, но я этому даже рад) слишком привык к современным удобствам при разработке, смотрел сериал "Остановись и гори" там эта тема интересно раскрывается;)
@Time_Developer
@Time_Developer 5 жыл бұрын
@@artawowerlh7761 *, на сериалы, у меня нет времени, да и современный кинематограф, мягко говоря скатился в говно.* _Но это моё, субъективное мнение._
@volnisty7138
@volnisty7138 5 жыл бұрын
Я сначало подумал что это Линус Торвальдс!
@a.o.yaroslavov
@a.o.yaroslavov 5 жыл бұрын
Это он и есть... Он русский с детства учил. о_О
@H336-p1v
@H336-p1v 5 жыл бұрын
Александр Ярославов Рили?
@H336-p1v
@H336-p1v 5 жыл бұрын
Industrial dawn И это его канал? 🌚🌝
@ventilyator
@ventilyator 5 жыл бұрын
это его аватар
@H336-p1v
@H336-p1v 5 жыл бұрын
Ъьъыъьы Ъьъыъьыъ ого, моя мама кулхацкер, круть 😂👌
@progma137
@progma137 5 жыл бұрын
Блин, если бы ты написал серию уроков по С, я мог бы купить у тебя видео. Не реально просто, спокойно, доходчиво и внятно объясняешь.
@phat80
@phat80 3 жыл бұрын
А что, C сложный язык? Вроде один из самых легких и минималистичных. Там и изучать особо нечего. Вот чтобы хорошо писать на C, надо уже хорошо знать архитектуру компьютера, принцип работы ОС и так далее. Сам по себе язык очень легкий.
@phat80
@phat80 3 жыл бұрын
@You Tube то есть не надо знать, как работает память… а чтобы писать какие-то вообще низкоуровневые вещи, не надо ничего знать про прерывания и про взаимодействие железа между собой, ну а написание какой-нибудь дисковой утилиты, естественно, не потребует никаких знаний про загрузочные области, разбиение на сектора и прочее. Ну удачи!
@phat80
@phat80 3 жыл бұрын
@You Tube На си глупо писать что-то прикладное, для этого есть другие языки. Каждый язык эффективен в своей сфере. НЕ, конечно, Си универсален и на нем можно написать, что угодно и да, даже не зная ничего об устройстве компьютера, но тогда и изучать этот язык смысла мало. Си и хорош тем, что позволяет писать практически на уровне железа. Кстати, ассемблер не плохо изучить вторым языком после Си. Начинаешь лучше понимать, как любые программы работают под капотом. Есть, конечно, и другой путь, изучить устаревший jQuery и считать себя крутым программистом. Какое-то время назад даже была такая мода.
@phat80
@phat80 3 жыл бұрын
@You Tube чушь пишите вы. Особенно улыбнуло, что на нем ничего писать нельзя )))) Хотелось бы почитать, что же на нем нельзя написать. Ну и по поводу железа, вы не в курсе, что куча драйверов, прошивок, низкоуровневых утилит написаны на Си? Ну изучите вопрос получше. В конце 80х, начале 90х на нем реально практически все писали. Советую почитать по тьюринг-полные языки. Но врать не буду, задач на Си и Ассемблере у меня не было, изучал их именно с точки зрения лучшего понимания того, как работает ПО.
@phat80
@phat80 3 жыл бұрын
@You Tube Почему меня старается учить человек, который Си даже в ближайшем приближении не трогал? Я не профи в данном языке, но я хотя бы представляю его возможности. Я жду пример того, что на Си нельзя написать и объяснение почему. Иначе все это пустой треп человека, который ни хрена ни в чем не разбирается, но почему -то хочет учить других. В моем мире на C пишут все, от прошивок железа до графических редакторов, хоть это и не самый оптимальный для этого вариант. Если задаться целью, можно собрать комп из железа и полностью написать программное обеспечение для него на C, ну вот полностью, даже компиляторы для каких-то интерпретируемых вспомогательных языков. А вот в вашем вымышленном мире он мало на что способен.
@МаксимХвостов-м1й
@МаксимХвостов-м1й 5 жыл бұрын
Будет очень интересно послушать про PE-format или ELF-format, спасибо, лайк.
@S0ERDEVS
@S0ERDEVS 5 жыл бұрын
Как насчет MACH-O? Почему обижаете MacOS?
@МаксимХвостов-м1й
@МаксимХвостов-м1й 5 жыл бұрын
Моему макбуку 14 лет что-то я забыл про него совсем :)
@АнтонПавлов-н2ч
@АнтонПавлов-н2ч 5 жыл бұрын
Да, это интересная идея для видео
@serhiis_
@serhiis_ 5 жыл бұрын
По формату Windows PE-file есть туториалы замечательного программиста Iczelion. У него есть много примеров и детально расписаны отличия современного формата от DOS. Также вы найдете очень много его работ по программированию окон на masm. По моему даже COM-обьекты у него есть. Не пугайтесь что он очень старый, ассемблер и винапи за 30 лет ни чем не поменялись. Скорее в винапи добавили новые баги а так все ровно.
@МаксимХвостов-м1й
@МаксимХвостов-м1й 5 жыл бұрын
@@serhiis_ Еще по форматам полезная информация: kzbin.info/www/bejne/anOkpniJbJdmrqs bit.ly/1cdrfel
@subaruvalit5931
@subaruvalit5931 5 жыл бұрын
Самый трушный ролик по программированию на ютубе! .h .c gcc из под юникса..... ностальгия ... где мой 97ой? ;)
@LLDevLab
@LLDevLab 5 жыл бұрын
Спасибо за видео. Очень понравилось.
@alexandrprincip6366
@alexandrprincip6366 5 жыл бұрын
Как пропатчить KDE 2 под FreeBSD?
@puldas6718
@puldas6718 5 жыл бұрын
Вернул 2007 год
@alexandrprincip6366
@alexandrprincip6366 5 жыл бұрын
@@puldas6718 сентябрь горит...
@RobotN001
@RobotN001 5 жыл бұрын
вот это очень правильный вопрос для этого канала
@Inf1e
@Inf1e 5 жыл бұрын
@@RobotN001 жаль что не актуальный
@merlin-ulg
@merlin-ulg 5 жыл бұрын
Тебе на канал про аниме ;)
@sovrinfo
@sovrinfo 5 жыл бұрын
Спасибо большое за ваш труд, очень познавательно. Классный стиль подачи.
@DubinArtur
@DubinArtur 3 жыл бұрын
Семьшетнадцать четыре
@Sergey-Primak
@Sergey-Primak 4 жыл бұрын
спасибо за ощущения, которые получал .... ух как много лет назад! когда программируешь не мнемониками, а в машинном коде! до сих пор помню машинные коды i8080А(к580вм80а) люблю тормозные, простые процессоры и компьютеры на их основе как было интересно загрузить программу в память компьютера... сделать мягкий рестарт, при этом загруженная программа оставалась в памяти и средствами бейсика изучать код программы! извращение, но на тот момент другого способа не было! может и интересно было потому как не каждый станет этим заниматься в журналах "радио", моделист конструктор было много дампов ... как было интересно читать машинный код с листа! сегодняшним скриптопрограммерам этого не понять
@x3n0n3
@x3n0n3 5 жыл бұрын
Хотелось бы про динамический патчинг: хуки, патчи опкодов в памяти и т.д. Но для начала неплохой старт.
@ananasikmezzar3294
@ananasikmezzar3294 4 жыл бұрын
В чем он работает?
@iamstillanon3048
@iamstillanon3048 5 жыл бұрын
Кому интересно, то про декодирование процессорных инструкций и как меняется опкод в зависимости от операнда коротко и понятно написано в главе 12.3 книги "Assembly language for x86 processors"(книга есть и на русском языке).
@MultiD0S
@MultiD0S 5 жыл бұрын
Привет, хотелось бы побольше о реверсе, с использованием ida, поиск функции их подмена и расширение. О extended как полноценная модификация приложения с новым функционалом и тд.
@skbmw530
@skbmw530 Ай бұрын
А можно немного по сложнее пример. Например rand() возначало значение. А что если мы это же значение записываем той переменной c. Тогда if будет всегда верный.
@ПётрСолнцев-ъ8к
@ПётрСолнцев-ъ8к 5 жыл бұрын
во шорит чувак ,только покупаешь приставку типа Lumax тв ,и понимаешь что программа гавнище,iptv нормально сделать не могут ,всё тормозит ,вылетает, глючит ,и владелец видео не разрешает воспроизводить в вашей стране
@SuperVideoOtvet
@SuperVideoOtvet 5 жыл бұрын
Сюка интересно , но не хрена не понятно , давай заново
@Time_Developer
@Time_Developer 5 жыл бұрын
*Мне было шесть, когда я работал с ассемблером и работал без книг. ;)*
@saymyname8183
@saymyname8183 5 жыл бұрын
@@Time_Developer Да чего уж там, 2 годика...
@Time_Developer
@Time_Developer 5 жыл бұрын
@@saymyname8183 *, покажешь мне того, кто в 2 года, на ассемблере писал.*
@saymyname8183
@saymyname8183 5 жыл бұрын
@@Time_Developer Ты не понимаешь сарказм? Просто я потом часа 3 смеялся после твоего коммента)
@dmitridudko3351
@dmitridudko3351 5 жыл бұрын
умница!
@bezpav
@bezpav 5 жыл бұрын
Почему до сих пор ехе не шифруется, или хотя бы crc не ставиться, спец для вирусов
@Antifreeze5961
@Antifreeze5961 5 жыл бұрын
это программист сам делает. Functional Safety называется. На компаилерах для контроллеров есть специальная опция, генерирующая CRC. Остаётся написать код, который её проверяет.
@RobotN001
@RobotN001 5 жыл бұрын
лучше чем CRC есть. сертификат называется. но если вирус от силовиков, то они могут получить и подлинный сертификат
@dmitrygertz7897
@dmitrygertz7897 5 жыл бұрын
Очень!
@vakdan3647
@vakdan3647 7 ай бұрын
Как же глаза режит at&t ассемблер.. ну неужели сложно было в objdump написать -m intel??
@GameWorldMrKIller
@GameWorldMrKIller 4 жыл бұрын
наикрутейший чувак, понятно объясняет, вот на кого молодёжь должна равняться, на умных и понимающих своё дело людей, а стоп, мне же самому 17 лет, тоочно, (перевоплощение): Аааа, что за дич не понятная, пайду в майнкрафт паиграю
@klimenkor
@klimenkor 5 жыл бұрын
когда-то давным давно, когда я еще игрался с бейсиком на БК-0010 мне один знакомый по компьютерному классу сказал умную вещь "ассемблер это самый элементарный язык программирования". После чего страх перед ним как рукой сняло
@AlexandrSpirit
@AlexandrSpirit Жыл бұрын
очень хотелось бы услышать и увидеть как использовать серьёзный софт для реверсинженеринга
@apivovarov2
@apivovarov2 5 жыл бұрын
Все здорово. Но пожалуйста не говорите БИнари и джеэлЕ. Напоминает kzbin.info/www/bejne/gGexoHmKhNOUl6s
@qwertymangames1800
@qwertymangames1800 7 ай бұрын
Зачем так заморачиваться. Можно просто скомпилировать готовый год с исправленной ошибкой. Потом написать скрипт на питоне который пройдёт по каждому байту и сравнит две версии файлов. Найдёт там различия, запишет в список в текстовом виде. А потом патч просто будет проходить по списку изменений и менять байты.
@MrSusnake
@MrSusnake 5 жыл бұрын
Смотрю рекомендации, вижу превью, думаю "О! Торвальдс начал выпускать обучающие видео! Класс!"
@824pavel
@824pavel 4 жыл бұрын
Можно патч не писать а использовать вот эту простую команду, чтобы запатчить бинарник: echo '0x74' | xxd -r -p | dd seek=0x6a1 bs=1 count=1 conv=notrunc of=binary
@markkovalyov9492
@markkovalyov9492 3 жыл бұрын
Вторая часть коварного плана Соера могла быть выполнена вообще без привлечения программирования. Утилиты аналогичные bspatch/bsdiff , стандарт VCDIFF на кодирование изменений. Интереснее также рассмотреть кейс когда вследствие редактуры изменяются размеры сегментов кода. Это простым реплейсментом байтика не реализовать. Нужен какой-то более интересный подход.
@dmitrymenshov8694
@dmitrymenshov8694 2 жыл бұрын
Искал другое, но решил зайти посмотреть о чём Линус вещает, полезно в любом случае. Ой! А он по-русски шпрехает))) Пять с плюсом за всё! Подписываюсь и буду пересматривать все видео.
@rusrus4524
@rusrus4524 5 жыл бұрын
да именно нашел "0f 85" компилировал в тини си .....
@souris771
@souris771 5 жыл бұрын
Посмотрел я видео, думал "наконец-то нашёл канал, где есть что-то сложнее, чем hello, world! и что-то интересное на Си", ага, сейчас, захожу на канал, а там богомерзкий js. Однако данное видео было интересное, я тоже заметил ошибки на 4:52...
@GazziFX
@GazziFX 4 жыл бұрын
Ну блин, так и не узнал, что мне делать если тело патченого метода не влезает на место обычного, в троем сидели не знали как записать jmp на модифицированный метод
@КотЧерный-ю1ф
@КотЧерный-ю1ф 4 жыл бұрын
На чем основано утверждение, что (c == rand()) никогда не будет иметь значение true, если в спецификации указано, что rand вернет псевдослучайное значение от 0 до RAND_MAX? У вас какая-то особая вселенная, в которой вероятность возврата значения 10 равна нулю?
@ReklatsMasters
@ReklatsMasters 5 жыл бұрын
Помню раньше был замечательный ресурс wasm.ru как раз для реверс инжениринга, взломов и т.д. Там было замечательное руководство по ollydbg, и нужные плагины к ней. Помню когда по инструкции взломал первый крэкми был на 7м небе от счастья.
@Планынадень-и1ж
@Планынадень-и1ж 5 жыл бұрын
Очень интересно. Снимите видео для прям чайников как разбирать вирусы и искать куда он шлет данные. Или как править вирусы вымогатели что убивают загрузку операционки.
@Дизельок-я9о
@Дизельок-я9о 5 жыл бұрын
из всего понял только два слова - код и патч ,но слушать было интререстно ))))
@sergbo3114
@sergbo3114 4 жыл бұрын
Хехе)) Где это нужно)) Ты забыл самое часто используемое назначение применения патчей исполняемых файлов)) Это сделать так что бы екзешничек "правильно" работал. Типа не запрашивал серийник или принимал любые))) Ишь какой хитрый) Мало того этим пользуются как раз вирусы, а не антивирусы)
@WinterPack
@WinterPack 5 жыл бұрын
ого...ОГО...ОГОГООООО... Случайно попал и опешил... вроде бы читал что то и сам прогаммировал но что бы так глупо (на самом деле глупо это определение лишь для гуру) сломать код на основе знаний и глубинного понимания... Снимаю 1337 шлп перед Вами... Можно еще что то но уже в тему как зашифровать код что бы его было сложнее вскрывать ну или же если не раскрывать карты то самое сложный патч.Спасибо.
@pinebitway
@pinebitway 5 жыл бұрын
Если размер опкода будет отличаться, то простой заменой байта не обойдешься. Куда проще пересобрать бинарь с фиксом и сделать bsdiff. Но даже если нужно поменять один байт, то проще сделать это "на лету" в IDA/Olly/что-угодно. Я к чему.. писать самостоятельную программу для замены одного байта даже в образовательных целях это как-то слишком.
@MuradBeybalaev
@MuradBeybalaev 4 жыл бұрын
Писать кастомные патчи уже давно задолбало. Нет чтобы нормально стандартизировать формат бинарных патчей... Вместо этого везде грузят уже патченные файлы, подчас с огромными оверхедами. Я, конечно, могу написать свой, но без стандарта и известных имплементаций это скатывается в отправление людям "каких-то подозрительных исполняемых файлов с вирусотроянами".
@andreytoumilovich2362
@andreytoumilovich2362 5 жыл бұрын
Неплохо для того чтобы озлакомиться с темой. Однако, на практике проще заменить оригинальный бинарник на пропатченный (сохранив при этом ABI).Поменять содержимое реального бинарника на деле будет безсмысленно, ибо, если мне не изменяет память, как ELF так и PE в своих заголовках могут иметь контрольные суммы. Разумеется можно и их пересчитать, да и пытаться бороться с цифровой подписью :), но на мой скромный взгляд - это интересно лишь с познавательной точки зрения. А видео всё равно годное!
@vorobiovv
@vorobiovv Жыл бұрын
4:14 ок, всё понятно. Я пошёл дальше CRUD наяривать 😂
@xx-hq4rb
@xx-hq4rb 5 жыл бұрын
А мне бы софтину, чтобы в .exe блоки кода местами переставлять... уж очень мне не нравится, что в одном файле массив прямо в середине кода, хотел его в конец файла запилить или вообще вынести как отдельную функцию в dll (если такое вообще возможно).
@maximo6802
@maximo6802 5 жыл бұрын
Удивительно, что кто-то пытается донести информацию о низком уровне, когда на рынке доминируют VM. Да что говорить, когда большая часть "программистов" даже не знает особенностей той архитектуры, на и для которой пишут. А ведь было время, когда приходилось урывками искать информацию посредством диал-апа. Когда поли-/метаморфы писались для более глубокого понимания и развлечения. Я извиняюсь, что в лирику вдался, но сейчас в окружении не так много тех, кто воспринимает программирование, как стек различных технологий, в том числе и "железных".
@quest524
@quest524 Жыл бұрын
@SOER но если память динамическая то патч не будет работать верно ?
@Jen0k
@Jen0k 3 жыл бұрын
Это нужно чтобы писать кря, ой, для расширения кругозора, да.
@dimanrubik
@dimanrubik 5 жыл бұрын
Если в 10-ой системе - 74 это семьдесят четыре, то в 16-ой будет семьшестнадць четыре?)
@bormanbor8740
@bormanbor8740 5 жыл бұрын
Вообще-то да, как бы это смешно не казалось. 7*16+4
@ВикторНиколаев-ж7о
@ВикторНиколаев-ж7о 5 жыл бұрын
Всё правильно рассказал, точно выдержаное содержание, полностью раскрыта тематика, и правильно сформирован ответ на тему. Очень интересно рассказано, с наглядным примером. Пока писал коментарий, досмотрел до конца. В данном ролике есть и одна существенная беда. Я ничего не понял про что здесь говорится!!! О чём всё это? P.S. Если серьёзно, я восхищаюсь такими неординалными личностями как Вы. Мышление должно быть вероятно нестандартное. Воистину - ни..уя не понял, ну очень интересно! Для чего смотрел, тоже непонятно!
@subterraneanrose4404
@subterraneanrose4404 4 жыл бұрын
Процессор же всегда одним путем дешифруем опкод, то есть каждая команда имеет уникальный оп. По крайней мере в arm и mips это так. Так почему же он все таки у Вас разный?
@компаниядоставкиЕдадомой.ру
@компаниядоставкиЕдадомой.ру 3 жыл бұрын
лайков, вроде как, больше 3тыс. где можно посмотреть про более мощные инструменты? ответ "в гугле" заранее не смешной)
@JaroslavNesterov
@JaroslavNesterov 5 жыл бұрын
было бы круто послушать про все секции бинарника и в подробностях
@RobotN001
@RobotN001 5 жыл бұрын
банальщину написал и крякнул её... банально. по реальной практической сути вообще ничего не сказал
@n1kel890
@n1kel890 5 жыл бұрын
Отличный лифт с небес на землю, если ты пишешь на JS и считаешь себя неплохим программистом )
@sergezadolbasik9259
@sergezadolbasik9259 5 жыл бұрын
Ну даа, так легко пропатчить, аха конечно, тут иногда в скрипте на 100 строк запутаешься, а уж в бинарнике и вовсе хрен разберешься, а учитывая то иногда в открытых исходниках ошибка не видна, ту в бинарнике и вовсе мозг сломаешь. А по теме самого патчинга, вместо того что бы понять логику почему оно не работает и вообще зачем оно, мы тупо лепим костыль что бы оно подсовывало правильный результат, а потом удивляемся, почему после патча оно глючит еще хуже
@samantakim4878
@samantakim4878 4 жыл бұрын
все вы спецы по люникс одинаковы ни один не скажет как установить и запускать такие игры как блек дезерт,архи айдж и так далее,ту же астелию онланй вот об этом тоже людям расскажите ..... ато специ аони великие пиограммы пишут а рассказать как людям игры на люне запустить так молчат в тряпочку, все жк ору люникс свободная ОС и так далее.... так где ваша свобода?
@gamesstreams9165
@gamesstreams9165 5 жыл бұрын
А вот я раньше думал что программы под линукс сишные и плюсовые нельзя модифицировать(откуда только я это знал не известно) и теперь понимаю что моя игра с кредитами полностью провалится если за нее возьмутся профи
@A-tri
@A-tri 10 ай бұрын
Инженеры легко и просто униженные на первой минуте, - ну да, ну да с пошел я н... Р
@Vicont4063
@Vicont4063 5 жыл бұрын
Афигеть... Нихрена не понятно но ооочень интересно! Вот это я надкнулся
@andrewsed_uplisten2019
@andrewsed_uplisten2019 4 жыл бұрын
я таким образом игру от алавар отучил просить деньги, плотно занимался ассемблером тогда ,20 лет назад , только команда была jz
@DmitriyUV
@DmitriyUV 5 жыл бұрын
Про IDA Pro хотелось бы узнать, так как я когда-то пользовался OllyDbg удобнее и понятнее отладчика я не видел, но он устарел и мало актуален теперь. А под линукс вообще отладчики хз какие есть, консольный там какой-то есть 🤔
@greentubedog
@greentubedog 5 жыл бұрын
Чуваки, давайте лайкать, хочется продолжения темы :)
@sashas703
@sashas703 4 жыл бұрын
А вот так вот игру уровня Ведьмак сможешь написать!
@konstcranky
@konstcranky 5 жыл бұрын
Интересно узнать почему jz, а не nop nop, к примеру)
@Mintus775
@Mintus775 Жыл бұрын
Можно пояснение маленькому и отсталому ? Как на 2:08 скомпелировать код ?
@mark.rakhmatov
@mark.rakhmatov 4 жыл бұрын
Годнота, + підписка)
@artemg27
@artemg27 5 жыл бұрын
Видео из серии: " Почуствуй себя идиотом"...
@STX_12
@STX_12 4 жыл бұрын
Залипнул на белую пспшку на столе - можешь расказать про нее?
@Rice0987
@Rice0987 4 жыл бұрын
Патчи, как правило нужны, чтобы не платить. :)
@GrandMax13
@GrandMax13 5 жыл бұрын
Кому интересно есть программа для анализа Ghidra
@RobotN001
@RobotN001 5 жыл бұрын
NSA is spying on you right now -_-
@ПавелЗыбкин
@ПавелЗыбкин 5 жыл бұрын
Подписался на ваш канал. Спасибо за видео. ОЧЕНЬ интересно было бы про неоднозначное сопоставление кода на ассемблере с бинарным и почему так 5:20)
@RogovAB
@RogovAB 5 жыл бұрын
Там все просто. Некоторые однотипные комманды имеют разный код в зависимости от операнда. Например операндом может быть регистр общего назначения, и специальный регистр. Хотя сама комманда делает с ними одно и тоже, но процессору для доступа к ним необходимо использовать разные физические реализации.
@ronnie_rocketo
@ronnie_rocketo 5 жыл бұрын
Да, такие дяди редко на ютубе обитают, Асемблер по буквам расписал, четенько и с расстановкой, интересную тему поднял. Это вам не javascript за час :) Лайк + подписка однозначно...хотелось бы про GDB инфы в таком формате.
@dt7472
@dt7472 5 жыл бұрын
Хотим услышать про более мощные утилиты, давайте посмотрим что можем сделать
@blender3dgamer706
@blender3dgamer706 5 жыл бұрын
Очень круто. Можно взять для урока со школьниками? Обычно про ассемблер, попадается что-то скучное, или жутко сложное. Лицензия CCA позволяет публичное воспроизведение в учебных целях?
@S0ERDEVS
@S0ERDEVS 5 жыл бұрын
Берите, никаких проблем.
@Rice0987
@Rice0987 4 жыл бұрын
Следующий порог - 10к. :)
@akchurinlife9676
@akchurinlife9676 5 жыл бұрын
Нахуя я это смотрю в третьем часу ночи, спасибо за видео, теперь усну
@АртемВирский
@АртемВирский 5 жыл бұрын
Включай на скорости 2, не уснешь :)
@Nikolay_Denisov
@Nikolay_Denisov 5 жыл бұрын
Линус по-русски заговорил 😐
@ДмитрийЛавров-я8ы
@ДмитрийЛавров-я8ы 3 жыл бұрын
Вот же ты хищник. Терь все твои видосы посмотрю
@semyon9400
@semyon9400 5 жыл бұрын
Дизы ставят жаба энтерпрайзеры?
когда не обедаешь в школе // EVA mash
00:57
EVA mash
Рет қаралды 3,6 МЛН
哈莉奎因怎么变骷髅了#小丑 #shorts
00:19
好人小丑
Рет қаралды 54 МЛН
OYUNCAK MİKROFON İLE TRAFİK LAMBASINI DEĞİŞTİRDİ 😱
00:17
Melih Taşçı
Рет қаралды 12 МЛН
КАК УСТРОЕН EXE ФАЙЛ?
25:38
Alek OS
Рет қаралды 312 М.
Как написать "Hello World!" на ассембли
53:58
БоркаБорик
Рет қаралды 21 М.
CI/CD - Простым языком на понятном примере
15:29
Артём Шумейко
Рет қаралды 41 М.
Inside the CPU: ARM1
17:07
House of NHTi
Рет қаралды 341 М.
когда не обедаешь в школе // EVA mash
00:57
EVA mash
Рет қаралды 3,6 МЛН