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

Discussion in 'WASM.RESEARCH' started by piece, Feb 18, 2023.

  1. piece

    piece New Member

    Blog Posts:
    0
    Joined:
    Feb 18, 2023
    Messages:
    1
    где-то читал, что параллельное программирование сильно усложняет отладку и реверс готового бинаря. Это действительно работает или просто выдумка анона?
     
  2. q2e74

    q2e74 Well-Known Member

    Blog Posts:
    0
    Joined:
    Oct 18, 2018
    Messages:
    1,004
    подумай логически, отладка конкретного пида, а пид где? кто может точку останова подвинуть на инструкцию дальше? есди пид стоит, то какая разница сколько программистов накидывают. А бинарь есть бинарь. Если бинарь - интерпретатор, а программы для исполнения внутри бинаря нет, он у какого то будущего типапрограммиста то... а что ты тогда реверсишь? вот интерпретатор пустой и отреверсишь.
     
  3. UbIvItS

    UbIvItS Well-Known Member

    Blog Posts:
    0
    Joined:
    Jan 5, 2007
    Messages:
    6,242
    конечно, усложняет - доступ к общим данным нужно разграничивать, а с ростом колва потоков начинают перемешиваться софтварные и хардварные ошибки. при этом код разграничения доступа должен быть предельно облегчённым, чтобы не росли лаги (кои сами по себе легко могут становиться ошибкой).
     
  4. asmlamo

    asmlamo Well-Known Member

    Blog Posts:
    0
    Joined:
    May 18, 2004
    Messages:
    1,743
    Да работает.
     
  5. Ahimov

    Ahimov Active Member

    Blog Posts:
    0
    Joined:
    Oct 14, 2024
    Messages:
    202
    Пример бы глянуть, это как параллельное ?

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

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

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

    HoShiMin Well-Known Member

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

    Ahimov Active Member

    Blog Posts:
    0
    Joined:
    Oct 14, 2024
    Messages:
    202
    HoShiMin

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

    f13nd Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 22, 2009
    Messages:
    2,031
    Реверс усложняет перпендикулярное, а также касательное к окружности программирование. О большей части хитрожопых приемов противодействия реверсёр скорей всего даже не узнает, просто отметит, что оно как-то странно устроено.
     
    mantissa and Ahimov like this.
  9. Ahimov

    Ahimov Active Member

    Blog Posts:
    0
    Joined:
    Oct 14, 2024
    Messages:
    202
    Нужно немного более абстрактно понимать, распарал. можно сделать на этапе сборки, это работа компилера. На этапе же исполнения распар. достигается через последовательное переключение контекста, это дает одновременное исполнение нескольких задач. Интерпретатор/транслятор исполняет грубо говоря некоторую задачу, он может так же транслироваться поверх. Но назвать такое пар прг. врядле возможно.

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

    M0rg0t Well-Known Member

    Blog Posts:
    0
    Joined:
    Oct 18, 2010
    Messages:
    1,604
    ООП усложняет. Адово.
    С++ это ад, разбираю бинарник, причем там нет спец. анти обфускации- просто обычное наследование в стиле С++98.
    Страшно представить, что можно сделать на каком-то С++22 , с намеренной обфускацией всего и вся.
     
  11. aa_dav

    aa_dav Active Member

    Blog Posts:
    0
    Joined:
    Dec 24, 2008
    Messages:
    550
    ООП упрощает разработку _сложных_ программ, поэтому неудивительно, что ООП идёт рука об руку со сложностью внутреннего содержания программы.
    Потому что программы изначально сложные. В них потребовался полиморфизм - ООП-нутые объекты содержат таблицу какой кусок кода выдать по специальному селектору метода.
    Можно и на чистом Си такое делать, просто неудобно будет без синтаксического сахара, многословно и неудобно.
     
  12. M0rg0t

    M0rg0t Well-Known Member

    Blog Posts:
    0
    Joined:
    Oct 18, 2010
    Messages:
    1,604
    Линукс как-то написали на чистом Си, а тут люди хелловорд пишут с фабриками и неймпейсами
     
  13. HoShiMin

    HoShiMin Well-Known Member

    Blog Posts:
    5
    Joined:
    Dec 17, 2016
    Messages:
    1,496
    Location:
    Россия, Нижний Новгород
    Так что ж теперь, если линукс написан на си, страдать вместе с ними?
     
  14. M0rg0t

    M0rg0t Well-Known Member

    Blog Posts:
    0
    Joined:
    Oct 18, 2010
    Messages:
    1,604
    HoShiMin, каждому своё, мы уже обсуждали. Я предпочитаю чистый код, а не этот треш