9:26 Директива “option casemap: none” работает как раз наоборот: определённые или описанные в зоне её действия идентификаторы сравниваются буквально так, как указаны. Есть ещё “casemap: notpublic”, тогда регистрозависимы только публичные/внешние (это значение по умолчанию), и “casemap: all” - все переводятся в верхний регистр. 16:50 Код очень похож, но лучше было бы показать именно тот ассемблерный исходник, что был ранее. 😉
@@firststepsforward Не-не, notpublic и all для других целей; в 16-битной винде были паскалевские соглашения о вызове, значит внешние имена в верхнем регистре (тогда и локальные различать не стоит). Если внимательно присмотреться, четверть (если не половина) опций ассемблера/линкера - костыли различной степени корявости. Чего одна секретная /KnowEAs у 16-битного линкера стоит. 😉 Покрутил на досуге прогу по-разному: сразу из-под ML 512 байт; если руки приложить (но не слишком) - 454 (прибил ILT, приклеил IAT к IDT и использовал то, что менеджер памяти NT+ выдаёт новые страницы занулёнными). Чтобы сильно меньше - надо изгаляться: стаб 64 плюс заголовки PE 24+224 плюс одна секция 40, итого те же самые 352. Код и строки 60 (если без ExitProcess, ретом), ещё импорт… не разгуляешься. Разве что сделать импорт по ординалу.
Скачивать exe с неизвестного сайта от анонимного автора в серии видео Ассемблер и Си для ХАКЕРА (!), устанавливать от имени администратора запароленный exe, содержащий WinSpy, Spy++ - звучит как анекдот. Возможно пароль установлен для дальнейших уроков дизасемблирования, в результате которых найдется пасхалка, например в виде имени автора, пусть будет Сергей Валериевич Л, но за видеоуроки - спасибо
Сапсибо! Я уже неоднократно пояснял: можно скачать обыкновенный архив, а не самораспаковывающийся exe-шник. Внутри подробная инструкция по ручной настройке. Мне кажется, что я экономлю время пользоватилям - ничего искать не нужно. В RadAsm-e много темплейтов: как макросов, так и блоков кода. Время от времени я увеличиваю их количество, добавляю утилиты. Pelles C тоже можно скачать отдельными официальными установщиками. Я веду канал и мне не нужно ради своего же интереса за кем-то шпионить. Есть целые операционки целевые (Kali Linux) - многие пользуются и вроде никто не в обиде! Кстати, Spy++ - официальная утилита Microsoft, входящая в состав MS VS... Как-то так...
06:00 все таки не называют транслятор компоновщиком, линкер это компоновщик. Трнаслятор или компилятор создают объектный код в одном или нескольких файлах и компоновщик принимая их на вход создает исходный исполняемый файл или библиотеку
1:09 В лицензии грамматические ошибки встречаются: "Международным Длибо (без д) национальным", "За любое подобное незЕконное использование", "ни какие (нужно без пробела), прИтензии (правильно через Е)", ближе к концу 2 пробела после точки.
6:20 Пока сидел и делал записи, столкнулся вроде как с противоречием, записал его так: Есть логический нюанс, суть которого в том, что по определению `реализация ассемблера (MASM, FASM, ...) и есть *программа ассемблер*` (если Я правильно понял). Одновременно с этим, реализация задаёт, сколько проходов нужно для компиляции с использованием **программы ассемблера**. Из этого Я сделал вывод, что определение не совсем верно, ведь **ассемблер** не может задавать, сколько раз в компиляции **он сам** и сопутствующие программы (линковщик) будут использованы. Следовательно MASM, FASM и прочие - более широкое абстрактное понятие реализации Языка Ассемблера, а не конкретный исполняемый файл трансляции машинного кода. Только так он может описывать весь процесс реализации компиляции с различиями в разных реализациях и включать саму программу ассемблер внутри. Вроде слишком заумно получилось, короче если Я правильно понял, ML.exe - Ассемблер. И MASM - Ассемблер, который задаёт, сколько проходов с использованием Ассемблера (ML.exe) будет происходить. Тут есть противоречие терминов, или Я что-то не правильно понял?
В англоязычной среде примерно так: - Assembly Language представляет собой язык программирования. - Assembly часто используется в качестве сокращенной формы для обозначения языка ассемблера (сокращённо от Assembly Language). - Assembler - это программа, выполняющая трансляцию исходного кода на языке ассемблера в машинный код (ml.exe - в masm). В русскоязычной среде примерно так: - Язык ассемблера - язык программирования, который использует мнемоники и команды, соответствующие инструкциям процессора. То есть, то же, что Assembly Language или сокращённо Assembly в англоязычной среде. Так же, как и у англоговорящих, словосочетание "Язык ассемблера" часто сокращается до "Ассемблер". - Ассемблер - это программа, которая преобразует исходный код, написанный на языке ассемблера, в машинный код, понятный компьютеру(ml.exe - в masm). Сложилось так, что слово Assembly не прижилось в русскоговорящей среде, поэтому как программу, так и язык часто называют словом "Ассемблер". Нужно обращать внимания на контекст информации, чтобы не ошибиться в значениях. Язык ассемблера - это общее понятие, однако существуют различные реализации и варианты этого языка, включающие различные инструменты для работы с ним, такие как FASM, MASM, TASM и т.п. Каждый из них имеет свои особенности и возможности, что делает их подходящими для различных задач и целей разработки программного обеспечения. Как-то так...
@@firststepsforward Понял, спасибо за развёрнутый ответ по этому вопросу. Выпавшее при заимствовании слово объясняет, почему программу и Язык называют Ассемблером. Теперь стало в разы понятнее.
все классно, только я рассчитывал увидеть баре метал как говориться) чтоб понять а как же рисуется окно в ассемблере. через либы это похоже на работу языков высокого уровня
Ассемблер и Си для Windows приложений подразумевает работу с Win32 Api как в консольных, так и оконных приложениях и многое другое - смотрите соответствующие ролики. Вопрос написания операционки, где есть необходимость исходников окон и т.п. пока не рассматриваем. Пока здесь - Ring 3 програмирование, отладка, дизассемблирование и т.п.
Пожалуйста. Если Вас сильно интересует отрисовка окон на низком уровне - начинайте с MS DOS, а затем ищите литературу по Windows 1.0 - 3.1. Будет практически всё на английском. Но вообще исходники операционки Мелкомягкие никогда не выкладывали. Для доса - оконный интерфейс будет скорее всего, для винды - врядли.
invoke, как я понял, это инструкция ассемблеру, что бы он понял, что мы используем "функции" в ассемблере? Ну, функций в ассемблере нет, есть только метки как я понял(как start метка), к которой мы переходим с помощью invoke, так ведь?
invoke - это директива masm и masm32. Используется совместно с оператором addr. Также для совместимости это всё и в тех же целях используется в fasm. Очень подробно о функциях и процедурах в видео: 17. Стек без push и pop 18. Регистр ebp и кадр стека 19. Соглашения о вызове функций При стандартном подходе в языках высокого уровня понятие функция и процедура различаются тем, что функция может возвращать значение, а процедура значения не возвращает. На практике - эти понятия используются как полные синонимы. Когда говорят: "В ассемблере всё, что имеет имя - это метка", то ошибаются. Это не совсем так. Это делают для того, чтобы упростить понимание указателя (или адреса памяти) - очень важного понятия. Нужно понимать, что если рассматривать ассемблер как чистый машинный код (как мы это видим в отладчике и дизассемблере), то тогда - это только регистры, код (комманды ассеблера), данные (байты, биты, слова ...), и указатели на код и данные. В таком случае не будет даже меток. А если мы рассматриваем какой-нибудь конкретный ассемблер в качестве языка программирования (masm, masm32, fasm и т.д.), то это полноценный язык со своими особенностями и синтаксисом. Есть в ассемблерах и функции и структуры и объединения и строки - всё, что есть в Си (ну почти всё) будет и в ЯЗЫКЕ ассемблера. Часто это выражено в виде макросов, часто встроено в ассемблер в виде директив. Реально ассемблер очень похож на Си, а где-то даже проще и понятнее. Страуструп называл Си "Ассемблером для ленивых". Теперь fasm или masm32 можно назвать "Си для ленивых" :)
Спасибо, единенное юникод не использует 2 байта на символ, он для разных символов использует разное количество байт. А именно если байт начинается с нулевого бита, то он использует один (то-есть этот) байт для кодирование ascii символа (точнее 7 бит, потому что первый бит это 0). Если байт начинается с бит 110, а после него идет байт который начинается на биты 01, то он использует два байта для кодирования символа (точнее те 11 бит которые от них остались). Так же есть вариант когда байт начинается на 1110 и на 11110. Или другими словами в юникоде есть 4 вида символов: [0.......] - обычный английский ASCII символ [110.....] [10......] - символы занимающие 2 байта (и имеющие 11 бит для кодирования) [1110....] [10......] [10......] - 3 байта (16 значащих бит) [11110...] [10......] [10......] [10......] 4 байта (21 значащих бит) Например эмоджи пиццы 🍕 состоит из четырёх байт: [11110]000 - [10]011111 - [10]001101 - [10]010101
Да, Вы правы, это так. Я упоминал в видео "Ассемблер и Си для Хакера #13. Функции работы со строками", что в Unicode строке один символ занимает от 2 до 4-х байт. Но... В Windows функции, использующие UNICODE, такие как MessageBoxW, принимают строки в формате UTF-16. В кодировке UTF-16 один символ представлен как последовательностью из 2 байт (16 бит). Однако, для кодовых точек, которые находятся за пределами т.н. базовой многоязычной плоскости (BMP), требуется две пары байтов (или 4 байта - т.н. суррогатные пары). В таких случаях один символ UNICODE может занимать 4 байта. Честно сказать, я не пробовал использовать MessageBoxW и подобные W-функции c 4 байтным Юникодом. Очень сомневаюсь, что они будут работать с "суррогатными парами", хотя - чем Microsoft не шутит:). На практике... В заголовочных файлах для Win Api для членов той же MessageBoxW (..., LPCWSTR lpText, ...) : #define LPCWSTR const wchar_t* #define wchar_t unsigned short unsigned short занимает 2 байта (16 бит) в памяти, не зависимо от битности операционки. Члены некоторых функций Win32 Api представляют собой UNICODE строки. Но эти строки - на латинице, поэтому - размер символа UNICODE - WORD или двойное слово. Вот пример: в MASM32 для функции BCryptOpenAlgorithmProvider (Ассемблер и Си для Хакера #27. Хэш) вторым параметром задается BCRYPT_MD5_ALGORITHM. Это указатель на Юникод строку. Определяем её так : BCRYPT_MD5_ALGORITHM dw 'M', 'D', '5', 0 В результате прога работает корректно. Юникод строка в ассемблере вообще всегда задаётся через определение последовательности двойных слов (dw). По поводу языков: для всех славянских, европейских, азиатских языков 2 байт хватает. Так что, система пока работает. На практике как-то так... Огромное спасибо за интерес к каналу!
Прошу помогите пожалуйста. Пытаюсь установить hlp для х64(моей системы) выдает ошибку "Обновление не применимо к вашему компьютеру". У меня система 64-х разрядная.
В readme.txt есть ответ. Не нужно запускать инсталятор, если у Вас 10-ка или 11-ка. Нужно так: После установки необходимо скопировать файл winhlp32.exe (в архиве ...\install_hlp\WinXP-winhlp32.zip) в windows директорию вашей операционной системы, если этого файла нет или заменить указанным файлом одноименный файл вашей операционки. При этом при необходимости нужно выйти в защищенный режим или воспользоваться программой Unlocker. Файл winhlp32.exe - это 32-х битное системное приложение из Windows XP. Он предназначен для чтения разнообразных файлов помощи (*.hlp) среды разработки RadAsm (в основном для masm32). Если не работает сразу - перегрузите систему.
@@firststepsforward Благодарю за ваш ответ, но вы уверены что я должен именно х32 скопировать туда, ведь у меня 64х разрядная система? Я попробовал так сделать и у меня слетела винда, сейчас я её уже восстановил
Как то стремно устанавливать программы, скаченные не с официальных сайтов, завернутые в инсталлятор человеком который знает assembler. Может все же лучше видос как все скачать с официальных источников и установить и настроить в рукопашную?
Если есть необходимость - могу без установщика архив выложить. В таком случае Вам вручную нужно будет править файлы настроек RadAsm. Инструкция в корневой директории.
@@firststepsforward Ну я понимаю, что удобно выложить свой тулчейн, дабы потом не закидали вопросами, что не работает то или другое. Но выглядит это как-то бестактно что ли, не этично. Уж лучше запилить видос где вся настройка будет показана и пояснено, что и зачем. Потом по ходу уроков показывать где какие плагины да библиотеки надо добавить. И зачем все это нужно. Есть ли необходимость в архиве без установщика? Да зачем. Весь этот набор завернутый в инсталлятор можно прекрасно разархивировать. Кстати, в какой системе этот инсталлятор создан?
-Во-первых, я Вас не заставляю ничего делать. Не хотите - не качайте. Ищите сами. Проекты отдельных программ, включая RadAsm. Давно не поддерживаются. В интернете вы найдёте варианты не от разработчиков. -Во-вторых, Installer.exe я не декомпилировал. Код файла написан мной. -В-третьих, я периодически обновляю пакет программ и делаю корректировку ini файлов RadAsm, чтобы утилиты удобно вызывались из среды разработки. Я думаю, что для вас это может вызвать затруднение. -В-четвёртых, на канале будут видео о реверс-инжиниринге, методах отладки, способах защиты от взлома и детекту вирусных угроз. Вы сами сможете убедиться в безопасности архива. -В-пятых, я Вас не оскорбляю.
@@firststepsforward ну если вы и ligecss1928 одно и тоже лицо то тогда вы ответили мне не зря про декомпиляцию. Но и я пользователю ligecss1928 на его высмеивание моих навыков ответил соответственно, тем более после моего самого первого комментария делать такой выпад явно неуместно. Я прекрасно понимаю что install написан вами. Что вы там написали известно только вам. Я вас не обвиняю, что вы подламываете своих зрителей, но и обратного никто не доказал. Те кто учится по этим видео проверить не умеют. Тот кто умеет не будет тратить свое время. Совершить установку на виртуальную машину вы тоже не предложили. По поводу вашего третьего. А почему бы и нет? Предложите и покажите зрителям сделать все своими руками с чистой установки. По поводу первого. Ну этим софтом пользуется относительно мало людей, но достаточно для того чтобы задетектить скам и опубликовать это. У вас же под этим видео всего 390 просмотров. И скорей всего эти просмотры повторны. Когда учишься, часто пересматриваешь. А парой и с разных устройств. Вот если бы канал существовал уже давно и на нем давно были бы видео о реверс-инжиниринге, методах отладки, способах защиты от взлома и детекту вирусных угроз-то может доверия и было бы больше. Не обижайтесь и поставьте себя на место своих зрителей. Не уровня хомячок которые слепо повторят за вами все что покажите, а тех кто уже врубается какой силой вы обладаете. Вы не публичная анонимная личность. Вы можете как научить так и уничтожить личность. Зачем вам просто так учить других остается под вопросом. По поводу пятого. Я вас тоже не оскорблял только если вы не ligecss1928
Пока только Windows. Позже посмотрю. Актуальность у ассемблера для Юникс систем не такая высокая. В особенности по Ютубу. Возможно, я чего-то пока не разглядел...
Нда, вот тебе и раз... Выложу сегодня на Яндекс. Установщик - 12.0 версия (setup.exe). Это на март 2024 года. Позже я не проверял. Ссылка будет на: assembler-code.com/programmnoe-obespechenie
Спасибо за годный контент! На 10ке при установке Windows8.1-KB917607-x64 пишет, что обновление не применимо к вашему компьютеру. Хелп в редасме не работает, что делать?
Благодарю за положительную оценку моего творчества:). Решение вопроса по чтению хелпов описано в readme.txt файле, который в директории FASM64: ... 2. ... После установки необходимо скопировать файл winhlp32.exe (в архиве ...\install_hlp\WinXP-winhlp32.zip) в windows директорию вашей операционной системы, если этого файла нет или заменить указанным файлом одноименный файл вашей операционки. При этом при необходимости нужно выйти в защищенный режим или воспользоваться программой Unlocker. Файл winhlp32.exe - это 32-х битное системное приложение из Windows XP (файл можно найти на установочной дискете). Он предназначен для чтения разнообразных файлов помощи (*.hlp) среды разработки RadAsm (в основном для masm32). ... То есть: - разархивируйте файл WinXP-winhlp32.zip, результат - файл winhlp32.exe - скопируйте winhlp32.exe в windows директорию Вашей операционки. Если операционка установлена на диск С:\, то путь: c:\Windows\ - перезагрузите комп - при необходимости действия проводить с правами админа
Ассемблер - язык, который зависит от операционки. Никак поставить нельзя. Можно отдельно Pelles C, но код работать не будет. Плейлист "Ассемблер и Си для хакера" этого канала только для Windows.
Нет. Процессор вы не "спалите" это однозначно, но синий экран организовать нечаянно можно :). Обычно боятся того, чего не понимают. Я думаю, нужно попробовать понять. Если знать, как работает вирус - антивирусы вам точно не понадобятся. Никакие! И вообще, нужно стремиться не зависеть от антивирусов, фреймворков, и модных языков. Ведь согласитесь - неизвестно кто их пишет... Кто их продвигает... И зачем их пишут и продвигают:). Информация предопределяет выбор.
Ошибка при запуске RadASM cannot open file c:/user... ascciiTab.dll( А курс очень крутой, хочется его прям от начала до конца пройти и делать читы на майнкрафт
Ответ на это где-то уже был... asciiTab.dll - это дополнение а RadAsm для удобной работы с таблицей ASCII символов (такая маленькая радужная полосатенькая кнопочка на главной панели элементов управления RadAsm). На длл-ку ругается Windows Defender, так как дополнение использует хуки. Просто внесите в исключения антивира asciiTab.dll или директорию FASM64\RadAsm2\AddIns\. Если чего-то опасаетесь, то отключите этот плагин через настройки RadAsm (Главное меню->Option->AddIn Manager->asciiTab , снемите галочку ->Apply) и можете удалить файлы asciiTab.dll и asciiTab.emf из директории ...\FASM64\RadAsm2\AddIns\ Всё! Благодарю за отзыв!
О, на гитхабе? Я сам не знал, поэтому просто удалил ascciiTab.dll из сборки. Поищу и посмотрю. Я в сборке использую RadAsm 2.2 есть версия 3, но она мне кажется сырой. Пусть будет RadAsm 2.2
Это два разных языка. Как говорил Страуструп: "Си - это ассемблер для ленивых". Masm32 при использовании макросов для упрощения на 80% похож на Си по исходникам. Остальные 20% - только в пользу ассемблера. Язык - это не только код. Это компиляторы, линкеры, у скриптовых языков - целые виртуальные машины. При взгляде через отладчик - Сишный код очень чистый и не раздутый. Ничего лишнего. При некоторых настройках компилятора разницы с ассемблером не будет ВООБЩЕ. Программированные процедурное, очень приближено к ядру системы - функции Win32 Api. С++ - язык классов. Там все функции и данные обёрнуты в подфункции и подмножества, они в свою очередь в классы, к функциям прибавлен как минимум - один член this и так далее. Код в отладчике не чистый - куча мусора, не нужного хлама, много лишнего, которое практически невозможно убрать настройками компилятора. С++ язык классов, игры современные на 90% пишутся на С++ . Классы упрощают разработку, уменьшают времязатратность. Несмотря на кучу минусов, недоработок и других минусов минусов, С++ считается быстрым и лёгким. Но к копанию в коде Си очень близок, а С++ - очень далёк. С++ не приведёт к пониманию работы операционки. Он ограничит возможность понять как всё работает своим Классовым подходом. Он для геймдева. Для кодокопателей - Си. Примеры - смотрите в видосах по ревёрсингу. Поймёте всё при анализах Си-шных или ассембллерных программ и программ на С++ Си - считается подмножеством С++, поэтому переход на язык более высокого уровня (высокий не значит более хороший, высокий - подразумевает уровень абстракции) достаточно прост. Как-то так... Благодарю за интерес.
Категорически не согласен! Одна из целей канала - показать возможность создания с помощью ассемблера полноценных современных приложений для Windows. Быстро, просто и эффективно. Кодокопание в смысле реверсинга, вирусологии, патчинга - это вторые 50% возможностей ассемблера для Windows. По-моему, их не стоит рассматривать в отрыве от создания ассемблерных программ. -Без IDE реализация полноценного проекта, в особенности, если он состоит из нескольких частей, будет очень затратна по времени и силам. -Вероятность неочевидных ошибок вырастет. -Разработка Фронтенда пользовательской части проекта превращается в трату сил и средств. -Отсутствие подсказок членов Win32 Api функций приведёт к постоянному обращению к хелпу, что отнимает время. -Ассемблер с использованием только Ноутпада отталкивает потенциальных желающих его изучать, что уже привело к катастрофе - язык крайне не популярен, его возможности в полном объёме не известны начинающим программистам и т.п. -И ещё куча всего. Ваше утверждение верно при одном условии : сильная предрасположенность к языку. Даже, если основная цель - не программирование, а реверсинг, вирусология, русификация и патчинг программ, без IDE существенно сложнее. Рекомендую посмотреть видео 6 и 7 (как выйдет) . Благодарю за интерес.
Если музыки нет, можно поставить свою. Если не предрасположен к музыкальному фону, тогда лучше - тишина. Выбор сложен... Исхожу из субъективных ощущений и мнений публики. Всем не угодишь, а субъективно - музыкальный фон заполняет пустоту текста. Природа не терпит пустоты:).
Очень по кайфу такое смотреть.
Благодарю, уважаемый!
Я Pelles C пользовался - очень хорошая штука. Удобно для прототипирования на чистом си.
Да. Просто и функционально.
Большое спасибо!
Благодарю!
обожаю лоу левел кодинг. Написал свой яп на чистом си со своим асемблером и компилятором но пора и реальный асм выучить. Лайк подписка
Благодарю!
золотой человек, спасибо большое!
Благодарю!
🔥просто шик
Спасибо!
отличные видосья. подписался. спасибо
Благодарю!
ваще круто!
Благодарю!
Спасибо за видео!!)
Пожалуйста.
Спасибо!
Пожалуйста!
9:26 Директива “option casemap: none” работает как раз наоборот: определённые или описанные в зоне её действия идентификаторы сравниваются буквально так, как указаны. Есть ещё “casemap: notpublic”, тогда регистрозависимы только публичные/внешние (это значение по умолчанию), и “casemap: all” - все переводятся в верхний регистр.
16:50 Код очень похож, но лучше было бы показать именно тот ассемблерный исходник, что был ранее. 😉
Да, всё верно. Надо было вообще убрать option casemap: none. В опциях - ML.EXE /Cp.
@@firststepsforward Не-не, notpublic и all для других целей; в 16-битной винде были паскалевские соглашения о вызове, значит внешние имена в верхнем регистре (тогда и локальные различать не стоит). Если внимательно присмотреться, четверть (если не половина) опций ассемблера/линкера - костыли различной степени корявости. Чего одна секретная /KnowEAs у 16-битного линкера стоит. 😉
Покрутил на досуге прогу по-разному: сразу из-под ML 512 байт; если руки приложить (но не слишком) - 454 (прибил ILT, приклеил IAT к IDT и использовал то, что менеджер памяти NT+ выдаёт новые страницы занулёнными). Чтобы сильно меньше - надо изгаляться: стаб 64 плюс заголовки PE 24+224 плюс одна секция 40, итого те же самые 352. Код и строки 60 (если без ExitProcess, ретом), ещё импорт… не разгуляешься. Разве что сделать импорт по ординалу.
По ординалу не надёжно, никто не знает о намерениях Microsoft - могут переделать библиотеки. Лучше по именам, мне кажется.
А вот и мой комментарий. Пригодится))
Благодарю! Конечно пригодится!
Скачивать exe с неизвестного сайта от анонимного автора в серии видео Ассемблер и Си для ХАКЕРА (!), устанавливать от имени администратора запароленный exe, содержащий WinSpy, Spy++ - звучит как анекдот.
Возможно пароль установлен для дальнейших уроков дизасемблирования, в результате которых найдется пасхалка, например в виде имени автора, пусть будет Сергей Валериевич Л, но за видеоуроки - спасибо
Сапсибо!
Я уже неоднократно пояснял: можно скачать обыкновенный архив, а не самораспаковывающийся exe-шник. Внутри подробная инструкция по ручной настройке.
Мне кажется, что я экономлю время пользоватилям - ничего искать не нужно.
В RadAsm-e много темплейтов: как макросов, так и блоков кода.
Время от времени я увеличиваю их количество, добавляю утилиты.
Pelles C тоже можно скачать отдельными официальными установщиками.
Я веду канал и мне не нужно ради своего же интереса за кем-то шпионить.
Есть целые операционки целевые (Kali Linux) - многие пользуются и вроде никто не в обиде!
Кстати, Spy++ - официальная утилита Microsoft, входящая в состав MS VS...
Как-то так...
06:00 все таки не называют транслятор компоновщиком, линкер это компоновщик. Трнаслятор или компилятор создают объектный код в одном или нескольких файлах и компоновщик принимая их на вход создает исходный исполняемый файл или библиотеку
Да, Вы правы.
Спасибо за исправление.
1:09 В лицензии грамматические ошибки встречаются: "Международным Длибо (без д) национальным", "За любое подобное незЕконное использование", "ни какие (нужно без пробела), прИтензии (правильно через Е)", ближе к концу 2 пробела после точки.
Благодарю! Буду перезаливать - исправлю.
6:20 Пока сидел и делал записи, столкнулся вроде как с противоречием, записал его так:
Есть логический нюанс, суть которого в том, что по определению `реализация ассемблера (MASM, FASM, ...) и есть *программа ассемблер*` (если Я правильно понял). Одновременно с этим, реализация задаёт, сколько проходов нужно для компиляции с использованием **программы ассемблера**.
Из этого Я сделал вывод, что определение не совсем верно, ведь **ассемблер** не может задавать, сколько раз в компиляции **он сам** и сопутствующие программы (линковщик) будут использованы. Следовательно MASM, FASM и прочие - более широкое абстрактное понятие реализации Языка Ассемблера, а не конкретный исполняемый файл трансляции машинного кода. Только так он может описывать весь процесс реализации компиляции с различиями в разных реализациях и включать саму программу ассемблер внутри.
Вроде слишком заумно получилось, короче если Я правильно понял, ML.exe - Ассемблер. И MASM - Ассемблер, который задаёт, сколько проходов с использованием Ассемблера (ML.exe) будет происходить. Тут есть противоречие терминов, или Я что-то не правильно понял?
В англоязычной среде примерно так:
- Assembly Language представляет собой язык программирования.
- Assembly часто используется в качестве сокращенной формы для обозначения языка ассемблера (сокращённо от Assembly Language).
- Assembler - это программа, выполняющая трансляцию исходного кода на языке ассемблера в машинный код (ml.exe - в masm).
В русскоязычной среде примерно так:
- Язык ассемблера - язык программирования, который использует мнемоники и команды, соответствующие инструкциям процессора. То есть, то же, что Assembly Language или сокращённо Assembly в англоязычной среде. Так же, как и у англоговорящих, словосочетание "Язык ассемблера" часто сокращается до "Ассемблер".
- Ассемблер - это программа, которая преобразует исходный код, написанный на языке ассемблера, в машинный код, понятный компьютеру(ml.exe - в masm).
Сложилось так, что слово Assembly не прижилось в русскоговорящей среде, поэтому как программу, так и язык часто называют словом "Ассемблер".
Нужно обращать внимания на контекст информации, чтобы не ошибиться в значениях.
Язык ассемблера - это общее понятие, однако существуют различные реализации и варианты этого языка, включающие различные инструменты для работы с ним, такие как FASM, MASM, TASM и т.п. Каждый из них имеет свои особенности и возможности, что делает их подходящими для различных задач и целей разработки программного обеспечения.
Как-то так...
@@firststepsforward Понял, спасибо за развёрнутый ответ по этому вопросу.
Выпавшее при заимствовании слово объясняет, почему программу и Язык называют Ассемблером. Теперь стало в разы понятнее.
все классно, только я рассчитывал увидеть баре метал как говориться) чтоб понять а как же рисуется окно в ассемблере. через либы это похоже на работу языков высокого уровня
Ассемблер и Си для Windows приложений подразумевает работу с Win32 Api как в консольных, так и оконных приложениях и многое другое - смотрите соответствующие ролики.
Вопрос написания операционки, где есть необходимость исходников окон и т.п. пока не рассматриваем.
Пока здесь - Ring 3 програмирование, отладка, дизассемблирование и т.п.
@@firststepsforward понял, спасибо. буду знать в какую сторону гуглить
Пожалуйста.
Если Вас сильно интересует отрисовка окон на низком уровне - начинайте с MS DOS, а затем ищите литературу по Windows 1.0 - 3.1. Будет практически всё на английском.
Но вообще исходники операционки Мелкомягкие никогда не выкладывали. Для доса - оконный интерфейс будет скорее всего, для винды - врядли.
invoke, как я понял, это инструкция ассемблеру, что бы он понял, что мы используем "функции" в ассемблере? Ну, функций в ассемблере нет, есть только метки как я понял(как start метка), к которой мы переходим с помощью invoke, так ведь?
invoke - это директива masm и masm32. Используется совместно с оператором addr. Также для совместимости это всё и в тех же целях используется в fasm.
Очень подробно о функциях и процедурах в видео:
17. Стек без push и pop
18. Регистр ebp и кадр стека
19. Соглашения о вызове функций
При стандартном подходе в языках высокого уровня понятие функция и процедура различаются тем, что функция может возвращать значение, а процедура значения не возвращает.
На практике - эти понятия используются как полные синонимы.
Когда говорят: "В ассемблере всё, что имеет имя - это метка", то ошибаются. Это не совсем так. Это делают для того, чтобы упростить понимание указателя (или адреса памяти) - очень важного понятия.
Нужно понимать, что если рассматривать ассемблер как чистый машинный код (как мы это видим в отладчике и дизассемблере), то тогда - это только регистры, код (комманды ассеблера), данные (байты, биты, слова ...), и указатели на код и данные. В таком случае не будет даже меток.
А если мы рассматриваем какой-нибудь конкретный ассемблер в качестве языка программирования (masm, masm32, fasm и т.д.), то это полноценный язык со своими особенностями и синтаксисом. Есть в ассемблерах и функции и структуры и объединения и строки - всё, что есть в Си (ну почти всё) будет и в ЯЗЫКЕ ассемблера. Часто это выражено в виде макросов, часто встроено в ассемблер в виде директив.
Реально ассемблер очень похож на Си, а где-то даже проще и понятнее. Страуструп называл Си "Ассемблером для ленивых". Теперь fasm или masm32 можно назвать "Си для ленивых" :)
Ну, ASM для меня "китайская грамота", а под Линукс программирую на C, так что разберусь. Интересную информацию даёте!
Благодарю!
Спасибо, единенное юникод не использует 2 байта на символ, он для разных символов использует разное количество байт.
А именно если байт начинается с нулевого бита, то он использует один (то-есть этот) байт для кодирование ascii символа (точнее 7 бит, потому что первый бит это 0). Если байт начинается с бит 110, а после него идет байт который начинается на биты 01, то он использует два байта для кодирования символа (точнее те 11 бит которые от них остались). Так же есть вариант когда байт начинается на 1110 и на 11110.
Или другими словами в юникоде есть 4 вида символов:
[0.......] - обычный английский ASCII символ
[110.....] [10......] - символы занимающие 2 байта (и имеющие 11 бит для кодирования)
[1110....] [10......] [10......] - 3 байта (16 значащих бит)
[11110...] [10......] [10......] [10......] 4 байта (21 значащих бит)
Например эмоджи пиццы 🍕 состоит из четырёх байт: [11110]000 - [10]011111 - [10]001101 - [10]010101
Да, Вы правы, это так. Я упоминал в видео "Ассемблер и Си для Хакера #13. Функции работы со строками", что в Unicode строке один символ занимает от 2 до 4-х байт.
Но...
В Windows функции, использующие UNICODE, такие как MessageBoxW, принимают строки в формате UTF-16. В кодировке UTF-16 один символ представлен как последовательностью из 2 байт (16 бит). Однако, для кодовых точек, которые находятся за пределами т.н. базовой многоязычной плоскости (BMP), требуется две пары байтов (или 4 байта - т.н. суррогатные пары).
В таких случаях один символ UNICODE может занимать 4 байта.
Честно сказать, я не пробовал использовать MessageBoxW и подобные W-функции c 4 байтным Юникодом. Очень сомневаюсь, что они будут работать с "суррогатными парами", хотя - чем Microsoft не шутит:).
На практике...
В заголовочных файлах для Win Api для членов той же MessageBoxW (..., LPCWSTR lpText, ...) :
#define LPCWSTR const wchar_t*
#define wchar_t unsigned short
unsigned short занимает 2 байта (16 бит) в памяти, не зависимо от битности операционки.
Члены некоторых функций Win32 Api представляют собой UNICODE строки. Но эти строки - на латинице, поэтому - размер символа UNICODE - WORD или двойное слово.
Вот пример: в MASM32 для функции BCryptOpenAlgorithmProvider (Ассемблер и Си для Хакера #27. Хэш) вторым параметром задается BCRYPT_MD5_ALGORITHM. Это указатель на Юникод строку. Определяем её так :
BCRYPT_MD5_ALGORITHM dw 'M', 'D', '5', 0
В результате прога работает корректно.
Юникод строка в ассемблере вообще всегда задаётся через определение последовательности двойных слов (dw).
По поводу языков: для всех славянских, европейских, азиатских языков 2 байт хватает.
Так что, система пока работает.
На практике как-то так...
Огромное спасибо за интерес к каналу!
Прошу помогите пожалуйста. Пытаюсь установить hlp для х64(моей системы) выдает ошибку "Обновление не применимо к вашему компьютеру". У меня система 64-х разрядная.
В readme.txt есть ответ. Не нужно запускать инсталятор, если у Вас 10-ка или 11-ка.
Нужно так:
После установки необходимо скопировать файл winhlp32.exe (в архиве ...\install_hlp\WinXP-winhlp32.zip) в windows директорию вашей операционной системы,
если этого файла нет или заменить указанным файлом одноименный файл вашей операционки. При этом при необходимости нужно выйти в защищенный режим или воспользоваться
программой Unlocker. Файл winhlp32.exe - это 32-х битное системное приложение из Windows XP. Он предназначен для чтения разнообразных файлов помощи (*.hlp) среды разработки RadAsm (в основном для masm32).
Если не работает сразу - перегрузите систему.
@@firststepsforward Благодарю за ваш ответ, но вы уверены что я должен именно х32 скопировать туда, ведь у меня 64х разрядная система? Я попробовал так сделать и у меня слетела винда, сейчас я её уже восстановил
Почему нет нумерации строк кода в RADAsm. Если компилятор указывает на ошибки в той или иной строке, как найти эту строку тогда?
Внизу слева главного окна программы есть маленькая кнопочка с рисуночком "123" (Show\Hide Linenumbers)...
Как то стремно устанавливать программы, скаченные не с официальных сайтов, завернутые в инсталлятор человеком который знает assembler. Может все же лучше видос как все скачать с официальных источников и установить и настроить в рукопашную?
Я думал, что если вам нужна инструкция по установке программ из экзешников, то вам слегка рановато учить ассемблерные языки низкое программирование :)
Если есть необходимость - могу без установщика архив выложить. В таком случае Вам вручную нужно будет править файлы настроек RadAsm. Инструкция в корневой директории.
@@firststepsforward Ну я понимаю, что удобно выложить свой тулчейн, дабы потом не закидали вопросами, что не работает то или другое. Но выглядит это как-то бестактно что ли, не этично. Уж лучше запилить видос где вся настройка будет показана и пояснено, что и зачем. Потом по ходу уроков показывать где какие плагины да библиотеки надо добавить. И зачем все это нужно.
Есть ли необходимость в архиве без установщика? Да зачем. Весь этот набор завернутый в инсталлятор можно прекрасно разархивировать. Кстати, в какой системе этот инсталлятор создан?
-Во-первых, я Вас не заставляю ничего делать. Не хотите - не качайте. Ищите сами.
Проекты отдельных программ, включая RadAsm. Давно не поддерживаются. В интернете вы найдёте варианты не от разработчиков.
-Во-вторых, Installer.exe я не декомпилировал. Код файла написан мной.
-В-третьих, я периодически обновляю пакет программ и делаю корректировку ini файлов RadAsm, чтобы утилиты удобно вызывались из среды разработки. Я думаю, что для вас это может вызвать затруднение.
-В-четвёртых, на канале будут видео о реверс-инжиниринге, методах отладки, способах защиты от взлома и детекту вирусных угроз. Вы сами сможете убедиться в безопасности архива.
-В-пятых, я Вас не оскорбляю.
@@firststepsforward ну если вы и ligecss1928 одно и тоже лицо то тогда вы ответили мне не зря про декомпиляцию. Но и я пользователю ligecss1928 на его высмеивание моих навыков ответил соответственно, тем более после моего самого первого комментария делать такой выпад явно неуместно. Я прекрасно понимаю что install написан вами. Что вы там написали известно только вам. Я вас не обвиняю, что вы подламываете своих зрителей, но и обратного никто не доказал. Те кто учится по этим видео проверить не умеют. Тот кто умеет не будет тратить свое время. Совершить установку на виртуальную машину вы тоже не предложили.
По поводу вашего третьего. А почему бы и нет? Предложите и покажите зрителям сделать все своими руками с чистой установки.
По поводу первого. Ну этим софтом пользуется относительно мало людей, но достаточно для того чтобы задетектить скам и опубликовать это. У вас же под этим видео всего 390 просмотров. И скорей всего эти просмотры повторны. Когда учишься, часто пересматриваешь. А парой и с разных устройств.
Вот если бы канал существовал уже давно и на нем давно были бы видео о реверс-инжиниринге, методах отладки, способах защиты от взлома и детекту вирусных угроз-то может доверия и было бы больше.
Не обижайтесь и поставьте себя на место своих зрителей. Не уровня хомячок которые слепо повторят за вами все что покажите, а тех кто уже врубается какой силой вы обладаете. Вы не публичная анонимная личность. Вы можете как научить так и уничтожить личность. Зачем вам просто так учить других остается под вопросом.
По поводу пятого. Я вас тоже не оскорблял только если вы не ligecss1928
Уважаемый, может я что-то пропустил, как к скратым видео доступ получить?
Нет скрытых видео пока. Выкладываю по-очереди.
Курс подойдет пользователям unix?
Пока только Windows. Позже посмотрю. Актуальность у ассемблера для Юникс систем не такая высокая. В особенности по Ютубу. Возможно, я чего-то пока не разглядел...
Сайт pelles c не работает, может выложите.
Нда, вот тебе и раз...
Выложу сегодня на Яндекс. Установщик - 12.0 версия (setup.exe). Это на март 2024 года. Позже я не проверял. Ссылка будет на: assembler-code.com/programmnoe-obespechenie
Загрузил. Можете качать.
@@firststepsforward Нашел, спс.
@@andreysh4882 :)
Спасибо за годный контент! На 10ке при установке Windows8.1-KB917607-x64 пишет, что обновление не применимо к вашему компьютеру. Хелп в редасме не работает, что делать?
Благодарю за положительную оценку моего творчества:).
Решение вопроса по чтению хелпов описано в readme.txt файле, который в директории FASM64:
...
2. ...
После установки необходимо скопировать файл winhlp32.exe (в архиве ...\install_hlp\WinXP-winhlp32.zip) в windows директорию вашей операционной системы, если этого файла нет или заменить указанным файлом одноименный файл вашей операционки. При этом при необходимости нужно выйти в защищенный режим или воспользоваться программой Unlocker. Файл winhlp32.exe - это 32-х битное системное приложение из Windows XP (файл можно найти на установочной дискете). Он предназначен для чтения разнообразных файлов помощи (*.hlp) среды разработки RadAsm (в основном для masm32).
...
То есть:
- разархивируйте файл WinXP-winhlp32.zip, результат - файл winhlp32.exe
- скопируйте winhlp32.exe в windows директорию Вашей операционки. Если операционка установлена на диск С:\, то путь: c:\Windows\
- перезагрузите комп
- при необходимости действия проводить с правами админа
а как это всё на macOS поставить?
Ассемблер - язык, который зависит от операционки. Никак поставить нельзя.
Можно отдельно Pelles C, но код работать не будет. Плейлист "Ассемблер и Си для хакера" этого канала только для Windows.
parallels desktop
Вам не кажется, что лучше установить его на виртуальную машину, чтобы не спалить процессор?
Нет. Процессор вы не "спалите" это однозначно, но синий экран организовать нечаянно можно :).
Обычно боятся того, чего не понимают. Я думаю, нужно попробовать понять.
Если знать, как работает вирус - антивирусы вам точно не понадобятся. Никакие!
И вообще, нужно стремиться не зависеть от антивирусов, фреймворков, и модных языков. Ведь согласитесь - неизвестно кто их пишет... Кто их продвигает... И зачем их пишут и продвигают:).
Информация предопределяет выбор.
Спасибо, это как бальзам по сути. Непонятно, кто пишет и чего там ещё есть такого о чем молчат.
Ошибка при запуске RadASM cannot open file c:/user... ascciiTab.dll( А курс очень крутой, хочется его прям от начала до конца пройти и делать читы на майнкрафт
Ответ на это где-то уже был... asciiTab.dll - это дополнение а RadAsm для удобной работы с таблицей ASCII символов (такая маленькая радужная полосатенькая кнопочка на главной панели элементов управления RadAsm).
На длл-ку ругается Windows Defender, так как дополнение использует хуки.
Просто внесите в исключения антивира asciiTab.dll или директорию FASM64\RadAsm2\AddIns\.
Если чего-то опасаетесь, то отключите этот плагин через настройки RadAsm (Главное меню->Option->AddIn Manager->asciiTab , снемите галочку ->Apply) и можете удалить файлы asciiTab.dll и asciiTab.emf из директории ...\FASM64\RadAsm2\AddIns\
Всё!
Благодарю за отзыв!
можно скачать с гитхаба проект RadASM2 и оттуда взять ascciiTab.dll. На неё ругаться не будет, просто добавит его в папку RadAsm2\AddIns
О, на гитхабе? Я сам не знал, поэтому просто удалил ascciiTab.dll из сборки. Поищу и посмотрю.
Я в сборке использую RadAsm 2.2 есть версия 3, но она мне кажется сырой.
Пусть будет RadAsm 2.2
почему C, а не C++?
Это два разных языка. Как говорил Страуструп: "Си - это ассемблер для ленивых". Masm32 при использовании макросов для упрощения на 80% похож на Си по исходникам. Остальные 20% - только в пользу ассемблера.
Язык - это не только код. Это компиляторы, линкеры, у скриптовых языков - целые виртуальные машины.
При взгляде через отладчик - Сишный код очень чистый и не раздутый. Ничего лишнего. При некоторых настройках компилятора разницы с ассемблером не будет ВООБЩЕ.
Программированные процедурное, очень приближено к ядру системы - функции Win32 Api.
С++ - язык классов. Там все функции и данные обёрнуты в подфункции и подмножества, они в свою очередь в классы, к функциям прибавлен как минимум - один член this и так далее.
Код в отладчике не чистый - куча мусора, не нужного хлама, много лишнего, которое практически невозможно убрать настройками компилятора.
С++ язык классов, игры современные на 90% пишутся на С++ . Классы упрощают разработку, уменьшают времязатратность. Несмотря на кучу минусов, недоработок и других минусов минусов, С++ считается быстрым и лёгким.
Но к копанию в коде Си очень близок, а С++ - очень далёк. С++ не приведёт к пониманию работы операционки. Он ограничит возможность понять как всё работает своим Классовым подходом.
Он для геймдева. Для кодокопателей - Си.
Примеры - смотрите в видосах по ревёрсингу. Поймёте всё при анализах Си-шных или ассембллерных программ и программ на С++
Си - считается подмножеством С++, поэтому переход на язык более высокого уровня (высокий не значит более хороший, высокий - подразумевает уровень абстракции) достаточно прост.
Как-то так...
Благодарю за интерес.
@@firststepsforward спасибо за ответ :)
:)
Зачем вообще использовать IDE при программировании на ассемблере?
жто не только не нужно но и вредно
Категорически не согласен!
Одна из целей канала - показать возможность создания с помощью ассемблера полноценных современных приложений для Windows. Быстро, просто и эффективно. Кодокопание в смысле реверсинга, вирусологии, патчинга - это вторые 50% возможностей ассемблера для Windows. По-моему, их не стоит рассматривать в отрыве от создания ассемблерных программ.
-Без IDE реализация полноценного проекта, в особенности, если он состоит из нескольких частей, будет очень затратна по времени и силам.
-Вероятность неочевидных ошибок вырастет.
-Разработка Фронтенда пользовательской части проекта превращается в трату сил и средств.
-Отсутствие подсказок членов Win32 Api функций приведёт к постоянному обращению к хелпу, что отнимает время.
-Ассемблер с использованием только Ноутпада отталкивает потенциальных желающих его изучать, что уже привело к катастрофе - язык крайне не популярен, его возможности в полном объёме не известны начинающим программистам и т.п.
-И ещё куча всего.
Ваше утверждение верно при одном условии : сильная предрасположенность к языку.
Даже, если основная цель - не программирование, а реверсинг, вирусология, русификация и патчинг программ, без IDE существенно сложнее.
Рекомендую посмотреть видео 6 и 7 (как выйдет) .
Благодарю за интерес.
@@firststepsforwardспасибо за ваш труд
Спасибо за ясность ума
Я бы предпочёл NASM.
Соглашусь с Вами - NASM тоже хорош. Мне кажется, что здесь больше дело вкуса и привычки, основа одна и разница не фатальная.
если все так серьезно, думаю музыку над вообще убрать
Может Вы и правы...
либо трекерную поставить 💀
не надо убирать, зачем?
@@firststepsforward она всегда только мешает в разговорных видео
тем более учебных
Если музыки нет, можно поставить свою. Если не предрасположен к музыкальному фону, тогда лучше - тишина. Выбор сложен... Исхожу из субъективных ощущений и мнений публики. Всем не угодишь, а субъективно - музыкальный фон заполняет пустоту текста.
Природа не терпит пустоты:).