Годится ли паллельное программирование как способ усложнения отладки и реверса кода

Тема в разделе "WASM.RESEARCH", создана пользователем piece, 18 фев 2023.

  1. piece

    piece New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2023
    Сообщения:
    1
    где-то читал, что параллельное программирование сильно усложняет отладку и реверс готового бинаря. Это действительно работает или просто выдумка анона?
     
  2. q2e74

    q2e74 Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    998
    подумай логически, отладка конкретного пида, а пид где? кто может точку останова подвинуть на инструкцию дальше? есди пид стоит, то какая разница сколько программистов накидывают. А бинарь есть бинарь. Если бинарь - интерпретатор, а программы для исполнения внутри бинаря нет, он у какого то будущего типапрограммиста то... а что ты тогда реверсишь? вот интерпретатор пустой и отреверсишь.
     
  3. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    конечно, усложняет - доступ к общим данным нужно разграничивать, а с ростом колва потоков начинают перемешиваться софтварные и хардварные ошибки. при этом код разграничения доступа должен быть предельно облегчённым, чтобы не росли лаги (кои сами по себе легко могут становиться ошибкой).
     
  4. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.738
    Да работает.
     
  5. Ahimov

    Ahimov Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    72
    Пример бы глянуть, это как параллельное ?

    Имеется процедура в памяти, как ее синхронно выполнить на разных потоках ?

    Пока первый тред исполняет инструкцию, второй ждет и далее свапконтекст между ними.. для этого имеются фиберы в нт. Имхо бред какой то.

    Задача(состояние задачи) существует как совокупность контрол/дата флоу, переключения между частями это обычная виртуализация кода, та самая выгрузка контекста. Месье не поняв захотел изобрести велосипед :sarcastic:
     
  6. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.477
    Адрес:
    Россия, Нижний Новгород
    А почему бред? Такое сплошь и рядом используют даже в контексте обычного программирования - грин-треды, фиберы, корутины, асинки, как ни назови.
    Их даже без протектора сложно дебажить (особенно нативные, и особенно если отладчик их не понимает), что уж говорить, если всё это сверху ещё запротекчено.
     
  7. Ahimov

    Ahimov Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    72
    HoShiMin

    Параллельное прог-е это тс видимо имеет ввиду, не обычный синхрон между задачами. Это лютый академический матан по теме компиляторной оптимизации, схождение условий и тп анализ флоу. В данном случае имеется ввиду(я думаю так) разграничение контекста(task state) для защиты, а это тривиальная вирта.
     
  8. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.009
    Реверс усложняет перпендикулярное, а также касательное к окружности программирование. О большей части хитрожопых приемов противодействия реверсёр скорей всего даже не узнает, просто отметит, что оно как-то странно устроено.
     
    mantissa и Ahimov нравится это.
  9. Ahimov

    Ahimov Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    72
    Нужно немного более абстрактно понимать, распарал. можно сделать на этапе сборки, это работа компилера. На этапе же исполнения распар. достигается через последовательное переключение контекста, это дает одновременное исполнение нескольких задач. Интерпретатор/транслятор исполняет грубо говоря некоторую задачу, он может так же транслироваться поверх. Но назвать такое пар прг. врядле возможно.

    Мну довольно много лет потратил на разбор всяких хитрожопых поделок(виксы, протекторы), автоматикой. Там решение такое - taint propagation, вводимые данные/событие задается как датасет для наследования(taint). Далее никакие манипуляции не приведут к утери потока их(dataflow) и все приложение покрывается. Для всяких вирт и прочих извратов пишется обработка, так что врядле это анализ усложняет.