Jump to content
Korean Random
ribbed

Портал модов от WG

Recommended Posts

1 minute ago, StranikS_Scan said:

Это за тех поди, кто чужие моды тырит, за них беспокоишься? Как же они бедненькие то код-то сопрут, если моды обфусцированы везде будут.

Скорее беспокоюсь за ЧСВ тех, кто это авторство защищает :) Главное качество, а не спрятанный говнокод.

1 minute ago, night_dragon_on said:

Ну это ты от своих способностей отталкиваешься, не всем кто там обитает (думаю, возможно могу ошибаться), это легко дастся.

Так это вообще автоматизировать можно одним маленьким питон-скриптом.

Share this post


Link to post

Short link
Share on other sites
Только что, SkepticalFox сказал:

Скорее беспокоюсь за ЧСВ тех, кто это авторство защищает :) Главное качество, а не спрятанный говнокод.

 

Да у нас тут обострение шизоидального альтруизма наблюдается. Скажи какая связь между качеством кода и правом автора кода на единоличное распоряжение им? Ты поди и на работе, всё сделанное тобой коллегам раздаешь, зарплату от того не получаешь, а утешаешь себя сказками о том, что главное - качество!

Share this post


Link to post

Short link
Share on other sites
5 minutes ago, StranikS_Scan said:

правом автора кода на единоличное распоряжение им

у него этого права быть не должно, кмк

ну по крайней мере не в рамках официального портала WG

6 minutes ago, StranikS_Scan said:

Да у нас тут обострение шизоидального альтруизма наблюдается

да поспокойнее)))

мне просто интересно, будут ли подвижки в рамках портала

Edited by SkepticalFox

Share this post


Link to post

Short link
Share on other sites
47 minutes ago, SkepticalFox said:

@ribbed кстати, нет мыслей по решению вопроса с обфусцированными модами?

Я бы никогда такое себе не поставил, может метку какую-нибудь для них?

Премодерация ведь не сможет даже поверхностно проверить такие моды, а значит они могут и аккаунт угнать.

Проблема есть, мыслей по решению нет. :)

 

Я довольно негативно отношусь к обфускации как из-за возможных вредоносных закладок, так и из-за влияния на танковое мододельство в целом. В скайриме, например, я при написании скриптов могу посмотреть сорцы других модов и подглядеть полезные приемы - речь даже не о копировании функционала, а о нюансах взаимодействия с движком игры или работы папируса (местный скриптовый язык). В танках начинающий мододел такой возможности зачастую лишен, потому что многие моды обфусцированы, и ему приходится изобретать велосипеды.

 

Пару лет назад была идея вообще запретить обфускацию модов в популярных модпаках, но после обсуждения с мододелами я от нее отказался.

 

Даже если бы запрет обфускации был на модпортале, ситуацию с безопасностью он бы сильно не улучшил - модераторы ведь не делают code review. Это было бы очень долго и невероятно дорого.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
1 minute ago, ribbed said:

Даже если бы запрет обфускации был на модпортале, ситуацию с безопасностью он бы сильно не улучшил - модераторы ведь не делают code review. Это было бы очень долго и невероятно дорого.

но скрипт рекурсивно обходящий все pyc-файлы с вызовом dis.dis для них и отловом EXEC_STMT

Вроде не сложно же?

Share this post


Link to post

Short link
Share on other sites
5 минут назад, ribbed сказал:

В танках начинающий мододел такой возможности зачастую лишен, потому что многие моды обфусцированы, и ему приходится изобретать велосипеды.

 

Нет. Ему приходится приобщаться к комьюнити мододелов путем посещения и общения на соответствующих форумах и порталах. Только и всего. Ни какого вреда начинающему мододелу от этого нет. Только одна польза.

 

3 минуты назад, SkepticalFox сказал:

но скрипт рекурсивно обходящий все pyc-файлы с вызовом dis.dis для них и отловом EXEC_STMT

Вроде не сложно же?

 

Ты похоже новые обфускации не видел ))))

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites
1 minute ago, SkepticalFox said:

но скрипт рекурсивно обходящий все pyc-файлы с вызовом dis.dis для них и отловом EXEC_STMT

Вроде не сложно же?

Так вредоносные закладки могут быть и без exec. Код может быть реализован и в самом моде, просто глубоко и неочевидно запрятан. А делать ручную инспекцию кода каждого мода - это оооочень дорого и долго.

Либо мод вообще может скачивать бинарь с удаленного сервера и выполнять его.

Share this post


Link to post

Short link
Share on other sites
14 минут назад, ribbed сказал:

Проблема есть, мыслей по решению нет. :)

 

Я довольно негативно отношусь к обфускации как из-за возможных вредоносных закладок, так и из-за влияния на танковое мододельство в целом. В скайриме, например, я при написании скриптов могу посмотреть сорцы других модов и подглядеть полезные приемы - речь даже не о копировании функционала, а о нюансах взаимодействия с движком игры или работы папируса (местный скриптовый язык). В танках начинающий мододел такой возможности зачастую лишен, потому что многие моды обфусцированы, и ему приходится изобретать велосипеды.

 

Пару лет назад была идея вообще запретить обфускацию модов в популярных модпаках, но после обсуждения с мододелами я от нее отказался.

 

Даже если бы запрет обфускации был на модпортале, ситуацию с безопасностью он бы сильно не улучшил - модераторы ведь не делают code review. Это было бы очень долго и невероятно дорого.

Костыль решение - рисуем жёлтый восклицательный знак вместо зелёного проверено (что сейчас чистая профанация) и предупреждаем при скачивании.

Share this post


Link to post

Short link
Share on other sites

 

Только что, Mixaill сказал:

Костыль решение - рисуем жёлтый восклицательный знак вместо зелёного проверено (что сейчас чистая профанация) и предупреждаем при скачивании.

 

Чисто технический вопрос, как определить что код не обфусцирован? Ведь как известно даже просто декомпиляция оригинального кода - до сих пор не является поддерживаемой официально питоном. А исключительно инициатива тех, кто занимается реверсом. Поправьте если не прав.

Share this post


Link to post

Short link
Share on other sites
3 minutes ago, Mixaill said:

Костыль решение - рисуем жёлтый восклицательный знак вместо зелёного проверено (что сейчас чистая профанация) и предупреждаем при скачивании.

Как автоматически определить, что код обфусцирован?

Как быть с модпаками?

Share this post


Link to post

Short link
Share on other sites
9 minutes ago, ribbed said:

Как автоматически определить, что код обфусцирован?

Ну я не говорю, чтобы полностью отсечь все моды.

Я про то, чтобы отсечь те, которые невозможно открыть через dis.dis (или marshal.load, я не помню уже)

9 minutes ago, ribbed said:

Как быть с модпаками?

Надо просто начать с чего-то)

Edited by SkepticalFox

Share this post


Link to post

Short link
Share on other sites
1 hour ago, SkepticalFox said:

а значит они могут и аккаунт угнать

Для некоторых мододелов плагиат является весьма серьезной проблемой, а обфускация зачастую единственное адекватное средство противодействия.

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

Сами моды если и целесообразно проверять, то исключительно на работоспособность и стабильность.

59 minutes ago, SkepticalFox said:

Главное качество, а не спрятанный говнокод.

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

42 minutes ago, SkepticalFox said:

у него этого права быть не должно, кмк

Насчет прав на использование, если это касается опубликованных вещей, тут еще можно философствовать. Но насчет прав на авторство, тут все однозначно. Если система не может обеспечить автору защиту от плагиата, автор обеспечивает ее сам, обфусцируя код.

34 minutes ago, ribbed said:

В танках начинающий мододел такой возможности зачастую лишен, потому что многие моды обфусцированы, и ему приходится изобретать велосипеды.

Так было пару лет назад, когда обфускацию только начинали использовать массово. Сейчас все на порядок проще - как минимум не менее пяти известных мододелов давно уже используют гитхаб. Правда там публикуются в основном большие и достаточно известные моды, которые плагиатить бессмысленно, но тем не менее, неплохие примеры в открытом доступе все же имеются.

29 minutes ago, StranikS_Scan said:

Нет. Ему приходится приобщаться к комьюнити мододелов путем посещения и общения на соответствующих форумах и порталах. Только и всего. Ни какого вреда начинающему мододелу от этого нет. Только одна польза.

Однозначно могу сказать, что за последние пару лет получить помощь на форумах при создании модификаций стало значительно проще.

34 minutes ago, ribbed said:

Даже если бы запрет обфускации был на модпортале, ситуацию с безопасностью он бы сильно не улучшил - модераторы ведь не делают code review. Это было бы очень долго и невероятно дорого.

Это было бы нереально для модификаций по размеру сравнимых, например, с XVM. Для такого веселья им пришлось бы поднимать свой репозиторий как минимум.

13 minutes ago, ribbed said:

Как автоматически определить, что код обфусцирован?

try: decompile; except -> obfuscated.

Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites
12 минут назад, GPCracker сказал:

try: decompile; except -> obfuscated.

 

Официального декомпилятора нет. Значит есть только самопальные, а они все кривые и всегда можно сочинить такой оригинальный код при котором будет крашится декомпилятор. Пример тому Uncompile6 уже не первый код его правят и правят, а до сих косячит. Это значит ВГ нуно свой декомпилятор писать ))))

 

16 минут назад, SkepticalFox сказал:

Я про то, чтобы отсечь те, которые невозможно открыть через dis.dis

 

Господа, да вы что. Обфускация сегодня многоуровневая и многофакторная. Первый уровень может отлично dis-сится после чего ты увидишь дизасм загрузчика и больше ни чего. Кроме того, если даже байт-код не обфусцирован, то вполне может быть офусцирован питон-код, извращенные конструкции, скрытые стринги, обфусцированные имена, константы содержащение байткод в текстовой форме и т.д. и т.п.

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites
2 minutes ago, StranikS_Scan said:

Значит есть только самопальные, а они все кривые и всегда можно сочинить такой оригинальный код при котором будет крашится декомпилятор.

Так и в самом питоне регулярно находят и исправляют баги... куда же без них. Вообще, как по мне, борьба с обфускацией в данном контексте бессмысленна. Все равно проверять моды порядка одной килостроки и более в каждой версии никто не будет - долго и дорого. А следовательно, никакого положительного результата эта полумера не даст. Одни только проблемы и безрезультатный расход ресурсов.

7 minutes ago, StranikS_Scan said:

Господа, да вы что. Обфускация сегодня многоуровневая и многофакторная.

Старая басня про щит и меч. На любой чих со стороны контроля будет эхо со стороны зайцев. 

Технические методы борьбы без серьезной идеологической поддержки малоэффективны.

Share this post


Link to post

Short link
Share on other sites
Только что, SkepticalFox сказал:

примеры!)

 

А может тебе сразу исходник обфускатора и унвраппер к нему, а рыжий и усатый? ))))

 

Только что, GPCracker сказал:

Старая басня про щит и меч. На любой чих со стороны контроля будет эхо со стороны зайцев.

 

Если обобщать и округлять, то да, это бесконечное противостояние. Однако в конкретных случаях, на конкретных временных промежутках и с достаточной долей приемлемости, можно вполне добиться однозначной победы как со стороны щита так и меча. Именно так оно и работает.

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites
4 minutes ago, StranikS_Scan said:

А может тебе сразу исходник обфускатора и унвраппер к нему, а рыжий и усатый? )))

мы же про определение обфускации начали.

а все бесплатные обфускаторы на выходе выдают одинаковый результат

тут хоть нейросетку обучай, хоть dis.dis/marshal.load делай, а определить обфускацию плевое дело.

 

Share this post


Link to post

Short link
Share on other sites
Только что, SkepticalFox сказал:

мы же про определение обфускации начали.

а все бесплатные обфускаторы на выходе выдают одинаковый результат

тут хоть нейросетку обучай, хоть dis.dis/marshal.load делай, а определить обфускацию плевое дело.

 

 

Дизас крашится сейчас потому что его специально крашат фейковыми опкодами. Однако если завтра потребуется его не крашить, то достаточно убрать фейки с первого загрузчика заменив их на другие виды запутывания. Только и всего. 

Share this post


Link to post

Short link
Share on other sites
5 minutes ago, StranikS_Scan said:

Однако в конкретных случаях, на конкретных временных промежутках и в достаточной долей приемлемости, можно вполне добиться однозначной победы как со стороны щита так и меча. Именно так оно и работает.

По крайней мере "вариант запилить и забить" однозначно не прокатит. А значит в долгосрочной перспективе вся эта затея с автоматическим отслеживанием обфускации превращается в дыру, бесконечно поглощающую ресурсы. Следовательно, автоматически возникает вопрос о целесообразности таких расходов. И в данном случае, как говорится, "ответ отрицательный". Жаль что наш коллега этого не понимает :(

Share this post


Link to post

Short link
Share on other sites


import dis
import marshal
import types


def recurseCodeObjects(code_obj):
    dis.disassemble(const)
    for const in code_obj.co_consts:
        if isinstance(const, types.CodeType):
            recurseCodeObjects(const)

with open('E:/Desktop/dev/d2/simple.pyc', 'rb') as f:
    f.seek(8)
    c_obj = marshal.load(f)
    try:
        recurseCodeObjects(c_obj)
    except:
        print 'maybe obfucated'


я считаю, что для начала нужно такое считать обфусцированным

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...