Alex
Актуальна ли статья Ульриха Дреппера о памяти на сегодняшний день?
да, большей части там концепт. Он не изменился
threadedstream
Окей, благодарю
threadedstream
Можно ли в Go делать link-time substitution функции? Допустим, есть метод в рантайме языка mallocgc, я создаю свой метод с идентичным прототипом, определяю его, ну и инструктирую компилятор при вызове рантаймной функции mallocgc вызывать мою версию этой функции.
threadedstream
В языке имеется конструкция go:linkname, позволяющая вызывать internal функции, но она не сработала в моем случае.
egor
А почему ты об этом спрашиваешь в чате по асму?))
Потому что люди пишущие на ассемблере, владеют компьютером так же, как опытный гитарист владеет пальцами. И могут дать ответ на любой вопрос)))
egor
Отчасти)
threadedstream
можно
А как?
Aiwan \ (•◡•) / _bot
А как?
эт гошники наверное скажут
threadedstream
Окей, в следующий раз буду осторожнее с темами вопросов.
threadedstream
Все равно спасибо :)
Aiwan \ (•◡•) / _bot
Окей, в следующий раз буду осторожнее с темами вопросов.
да не, споашивай. просто ты куда то щавернул не туда с вопросом
threadedstream
Этот вопрос был больше на тему поведения линкера в Го. Надеялся, что кто-то тесно работал с ним.
Sergey Boogerwooger
Может кто нибудь знает как в дизассемблере (конкретно x32dbg) найти участки кода где при запуске зараженной программой управление передается вирусу и он выполняет свои деструктивные функции?
Если инфектор простой, то где то возле точки входа переход на тело вируса. Но бывало и похитрее. Часто тело вируса кладут в последнюю исполняемую секцию с кодом, либо в конец кодовой сееции
Sergey Boogerwooger
Так проще править табоицу секций - тупо расширяется последняя и ей ставится флаг исполнения
Sergey Boogerwooger
А если текущий асм поднадоел, и хочется поломать реальные финансовые протоколы, айда к нам в аудиторы смарт контрактов, там низкоуровневый код и понимание асма ценится. Там запись не по тому смещению приводит к прямым взломам на десятки миллионов баксов в одну транзакцию. Такие дела...
Sergey Boogerwooger
Не понял в какой момент аудит безопасности кода стал противозаконным
Sergey Boogerwooger
Еще и опенсорсного кода вдобавок
Aiwan \ (•◡•) / _bot
Не понял в какой момент аудит безопасности кода стал противозаконным
по твоим словам, аудит - это когда "хочется поломать реальные финансовые протоколы", "запись приводит к прямым взломам"
Sergey Boogerwooger
Мы серьезная контора, нам выгоднее открыто найти дыру и заставить ее пофиксить публично, чем тырить крипту. Своровать там не так уж сложно, но если ты нормальный спец, куда надежней просто круто зарабатывать и цениться в открытую крупными проектами
Sergey Boogerwooger
Вон недавно чувак уаел 600млн, потом написал "я и так легенда" и отправил все обратно :)
Sergey Boogerwooger
Sergey Boogerwooger
Кроме того крипта славится тем, что за яйки могут взять и через 10 лет, блокчейн все помнит. Поэтому реально лучше в whitehat сторону
Sergey Boogerwooger
Серьёзная контора ломает протоколы только по заказу владельцев протокола, с их согласия, и по их поручению
Именно так. Тут даже круче - полностью публично и после голосования стейкхолдеров проекта. В децентрализованных системах сказки типа "нас касперский аудировал" без отчета со ссылкой на каждую строчку - не катят вообще
Sergey Boogerwooger
Сорян, все, здесь про асм, ох, люблю я его, но давно на нем писал
threadedstream
А кто-нибудь знает чаты для компиляторных энтузиастов?
threadedstream
Давно уже ищу
threadedstream
Ух ты, премножайше благодарю
­
Всю жизнь.
Eugene
Мне ещё нравится понятие "нормальный уровень" :)
Eugene
Сам асм выучить можно относительно быстро. Но какой толк без практики? Без знания архитектуры процессоров. Без значения операционные систем. Без реверса и прочего. Одно дело выучить асм Z80, а другое - x86 вплоть до AVX512. Короче, всё зависит от цели.
Eugene
И от текущего уровня подготовки. Можно выучить людей язык, но не знать стандартной библиотеки, алгоритмов, паттернов и т.д. Это нормальный уровень?
Eugene
Ну что тут сказать? Чтобы писать небольшие приложения и понимать, как оптимизировать их на нормальном уровне, нужно потратить некоторое кол-во лет, тратя на это несколько часов хотя бы по несколько раз в неделю 😂
Aiwan \ (•◡•) / _bot
самая лучшая оптимизация для простого смертного это это оптимизация алгоритма с тесной взпимосвязью с преимуществами отдельных видов инструкци. обычно даже штатные компили ЯВУ это не используют, ибо "дорого". а всякие подсчеты тактов я даже не смотрю с тех пор как понял, что мне это не подвластно (я же простой смертный, а не бог асма), ибо существует всякие кеши, спекуляции и тд
Eugene
Мне кажется, уровень конкретики моего ответа вполне соответствует конкретике вопроса :)
Aiwan \ (•◡•) / _bot
Мне кажется, уровень конкретики моего ответа вполне соответствует конкретике вопроса :)
мое сообщение это в дополнение к твоему или как альтернативное видение происходящего, имхо
Eugene
Но на самом деле, ответа тут нет и быть не может. Всё зависит от: – твоего уровня подготовки на данный момент – кол-во часов в неделю, которые ты будешь проводить за изучением и практикой – грамотности выбора источников обучения – способностей, наконец – etc. Кому-то будет и 10 лет мало, а кто-то за год будет весьма неплох в этом.
Aiwan \ (•◡•) / _bot
тем более CISC это 1 мнемоника в которой заключено множество действий в подавляющем большинстве стандартных инструкций, который всегда можно закодировать множеством простых/неделимых инструкций
Aiwan \ (•◡•) / _bot
что именно?
Aiwan \ (•◡•) / _bot
напиши это на сишке или питоне и я покажу тебе как это сделать на асме в 2 строки (2е инструкции)
Eugene
Всякие там "пройди курсы за 12 месяцев и стань Middle Java Developer'ом с нуля, а потом ещё 12 месяцев и стань Senior'ом с з/п от 300 т.р." – это всё маркетинговые сказки.
Aiwan \ (•◡•) / _bot
Сейчас
не парься, я это к тому что аптимизация еще зависит от понимания работы КАЖДОЙ инструкции, которую можно использовать НЕ по прямому назначению. таких приемов уйма, чтоб ускорить код, в сравнеии с ЯВУ, ибо эти действия не шаблонны
Eugene
не парься, я это к тому что аптимизация еще зависит от понимания работы КАЖДОЙ инструкции, которую можно использовать НЕ по прямому назначению. таких приемов уйма, чтоб ускорить код, в сравнеии с ЯВУ, ибо эти действия не шаблонны
Вообще, странно обсуждать оптимизацию, не уточняя, какая именно оптимизация имеется в виду. Как минимум есть две: по размеру и по скорости. Что касается скорости то можно вообще дойти до того (и иногда это более чем оправдано), чтобы просто хранить результат в заранее просчитанном массиве. Плюс, есть целесообразность оптимизации в расчёте на потраченное время и, соответственно, стоимость оплаты специалиста.
Aiwan \ (•◡•) / _bot
.loop: xadd rax, rdx loop .loop
Eugene
Вот за это мы и любим асм :)
Eugene
В том числе за это...
Aiwan \ (•◡•) / _bot
а скорость, мы ведь об оптимизации говорим. представь что происходит с памятью, с кодом на уровне CPU, если учесть то что на питоне это все выполняется в первую очередь через VM?
Aiwan \ (•◡•) / _bot
а здесь (на асме) прямая команда процессора сделать то и то, и результат получен
Aiwan \ (•◡•) / _bot
да
Aiwan \ (•◡•) / _bot
😅 наивный
Aiwan \ (•◡•) / _bot
хочешь сказать что у меня на комне, где не стоит питон, заработает твоя прога в 117 байт? что моя оперативка для работы этой проги будет занята на 4 кб минимум (это 1 страница)?
Aiwan \ (•◡•) / _bot
поправочка, в свойствах текстового файла, это даже еще не программа для выполнения, как принято считать "что есть программа"
Aiwan \ (•◡•) / _bot
не унизил, а доказал (по крайней мере высказал свое мнение). а что даказал додумывай сам
Eugene
xadd вроде 4 байта (с rex-префиксом) + loop 2 байта.
­
Молодец. Иди на hh.ru .
Leon
Кроме того крипта славится тем, что за яйки могут взять и через 10 лет, блокчейн все помнит. Поэтому реально лучше в whitehat сторону
Теоретически можно через биржу провести - там входной и выходной адрес общий для всех, если еще и в другие койны конвертнуться да еще и несколько таких циклов - то притется расследователям потом с биржами связываться и инфу запрашивать иначе облом
­
Ты чатом ошибся. Прокси и впны сетевики обсуждают.
Eugene
Волшебный шар, начиненный прокси?
egor
Дмитрий
.loop: xadd rax, rdx loop .loop
А инициализировать регестры, в код не входит?
Дмитрий
rcx, rax, и rdx надо же выставить, чтоб получить правильный результат?
Дмитрий
Это не входит в алгоритм
Ну сам алгоритм, да, в 2 команды...
Anonymous
rcx, rax, и rdx надо же выставить, чтоб получить правильный результат?
RAX и RDX это начальные значения чисел Фибоначчи. Можно 1 и 1 установить, что будет +4 байта. А в RCX (хотя хватит и ECX) - конечное число из списка чисел Фибоначчи. 6 выдаст вроде RAX:RDX=21;13 Для 6 хватит и CL, соотв. будет +2 байта
Anonymous
А нельзя просто thiscall сделать? И надобность устанавливать ecx пропадёт
А thiscall тут причём? Там ECX используется как аргумент, который всё также устанавливается. Но в любом случае речь сейчас вообще не про функции, и не про соглашения о вызовах, а о самом алгоритме.