Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   идеи обусфикации жаваскрипта (https://javascript.ru/forum/offtopic/46715-idei-obusfikacii-zhavaskripta.html)

monolithed 21.04.2014 10:48

Цитата:

Сообщение от kobezzza
GCC advanced mode

И держать пальцы что ничего не сломалось:

Source code:
var foo = {
  bar: true
};

if ('bar' in foo) {
   alert(true)
}


Compiled code:
"bar"in{a:!0}&&alert(!0);

Теперь представим, что у нас используется jQuery:

Source code:
$(document.body).html('404');

Compiled code:
$(document.body).a("404");

Конечно, можно потратить 1000 * n человекочасов чтобы причесать код под этот режим, но как мне кажется оно того не стоит, особенно когда в команде много разработчиков и штат переодически меняется.

monolithed 21.04.2014 10:49

T-sh,

на вскидку:

゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');

monolithed 21.04.2014 10:55

macdack,
Любой код, как бы он не был обфусцирован можно прочитать, например:

%@"%"@,~,%,!`_^[^_^]-;>`_^[^_^]%"!,^,:`_^[^_^]-@{-`{-?:`_[^_^]_-``-``-@@`_^[^_^]-`~-``-@$`_^[^_^]-``-``-@@`_^[^_^]-`~-``-@#`_^[^_^]-+~-/~-?;`_^[^_^]%!~-;-,;`_^[^_^]-"$-@~-@``_^[^_^]-{[-);-@:`_^[^_^]-/*,%`_^[^_^]`_^[^_^]`_^[^_^]`_^[^_^]%@$-@;-?;`_^[^_^]-/~-`&,#`_^[^_^]-`~-`{,*`_^[^_^]-@@-$!`_^[^_^]-:$,[,<`_^[^_^]-!|-.),!`_^[^_^]-@{-@`-/(`_^[^_^]`_^[^_^]`_^[^_^]`_^[^_^]-{!-{.,.`_^[^_^]-~/-/``_^[^_^]%""-}@$"`_^[^_^]%@@-!/,!`_^[^_^]-:*-=%`[[[[[[[[`^^^^^-%+)@@^^^!;@@_!,((,.((-$+)@*+@!!@-,!"(+@@,$-,!"($%&,&,&_&,"@"'%_&"',&$&-@*@$"


После дизасемблирования:

.
    mov     ax, cs
    mov     ds, ax
    mov     ah, 09h
    mov     dx, message
    int     21h
    mov     ax, 4c00h
    int     21h
message:
    db  "Hello, World", 0d, 0a, "$"

kobezzza 21.04.2014 10:58

Цитата:

И держать пальцы что ничего не сломалось:
Ну я и не говорил, что это будет просто :) Но с другой стороны если сразу писать под GCC, то всё не так уж и страшно.

Цитата:

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

monolithed 21.04.2014 11:00

Цитата:

Сообщение от kobezzza
Но с другой стороны если сразу писать под GCC, то всё не так уж и страшно.

Я пробовал, это требует очень больших усилий, и лишает удовольствия писать код.

kobezzza 21.04.2014 11:02

Цитата:

Сообщение от monolithed (Сообщение 308588)
Я пробовал, это требует очень больших усилий, и лишает удовольствия писать код.

Я тоже, и продолжаю эту практику, ибо набил руку:)

monolithed 21.04.2014 11:03

Цитата:

Сообщение от kobezzza
Я тоже, и продолжаю эту практику, ибо набил руку

Видимо ты один работал над проектом :)

kobezzza 21.04.2014 11:04

Цитата:

Сообщение от monolithed (Сообщение 308590)
Видимо ты один работал над проектом :)

Ну это да :)

Дзен-трансгуманист 21.04.2014 11:16

Цитата:

Сообщение от macdack
защита интеллектуальной собственности

Цитата:

Сообщение от macdack
вопрос риторический и философский

Хочешь философии?

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

Допустим, я написал что-то интересное на форуме, а ты спиздил мою мысль и запостил где-нибудь фейсбуке от своего имени. Всё, больше это не моя собственность. Моя остается здесь на форуме, а на фейсбуке уже твоя. Де-факто.

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

Вот тебе философия, простая как банный лист.

Интеллектуальная собственность это та информация, над которой ты имеешь контроль, и до тех пор пока этот контроль никем не нарушен. — (с) Папа Римский Ричард Бенедикт Столлман XVI

А вот тебе риторика:
Харе фигней страдать, иди код пиши! :)

melky 21.04.2014 11:40

Цитата:

Сообщение от monolithed
Теперь представим, что у нас используется jQuery:

для квери есть встроенные в архив экстерны. включается флагом --process_jquery_primitives

Цитата:

Сообщение от monolithed
И держать пальцы что ничего не сломалось:

вообще, редко ломается, если писать код с JSDOC. а писать с ним приходится, если нужен нормальный автокомплит :)

Цитата:

Сообщение от Дзен-трансгуманист
Вот тебе философия, простая как банный лист.

какая философия защиты от кидалова развернулась :)


Часовой пояс GMT +3, время: 05:31.