Які переваги примхливого коду випуску?


12

Конкретний приклад, який я маю на увазі, стосується поточної альфа-гри Minecraft, але це загальне питання, яке, на мою думку, вимагає бесіди.

Minecraft написаний на Java, а сліди стека зазвичай виглядають так (реальний приклад):

java.lang.NullPointerException
    at d.a(SourceFile:247)
    at gi.b(SourceFile:92)
    at bd.a(SourceFile:33)
    at bn.a(SourceFile:69)
    at bn.e(SourceFile:115)
    at bn.d(SourceFile:103)
    at net.minecraft.client.Minecraft.i(SourceFile:1007)
    at net.minecraft.client.Minecraft.run(SourceFile:596)
    at java.lang.Thread.run(Unknown Source)

Очевидно, це не справжні назви пакунків та методів, якими розробник користується, коли пише. Оскільки він перебуває в альфа-стадії, здається, що розробнику слід сподобатися, щоб мати змогу зрозуміти його сліди стека, особливо якщо хтось може надати його для звіту про помилку. Оскільки це стоїть, це здебільшого безглуздо.

Яку перевагу можна сподіватися на отримання опустошення такого коду, який подолає недоліки більш важкої ідентифікації помилок?


1
Простіше кажучи, обфускація змінює економіку зворотної інженерії вашого коду, не більше того.
Марк Бут

Відповіді:


22

Ми також замовчуємо наш Java-код ....

Перевага полягає в тому, що це ускладнює реверсивного інженера (якщо ви переживаєте за те, щоб хтось викрав вашу кодову базу і використовував її як базу для створення подібного конкуруючого продукту, наприклад, тощо).

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

Це насправді не має недоліків. :)


3
Цікаво, що я ніколи не знав, що вони приїхали зі «стеженням непритуплення» (ніколи не використовував обфускатора) ... яка акуратна ідея :-)
Дін Хардінг

1
Єдиний недолік, з яким я коли-небудь стикався, - це час від часу обфускатор (.NET в цьому випадку) заплутав його до того моменту, коли джиттер навіть не міг його прочитати (незаконні інструкції). Масивний збій.
vcsjones

@vcsjones: Тоді це не зовсім заплутаність ...
конфігуратор

3
  • захист вас інтелектуальної власності

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


Якщо для таких оптимізацій доводиться використовувати обфускатор, використовуваний компілятор повинен бути дійсно ледачим програмним забезпеченням.
phresnel

@phresnel: Так obfuscator може зробити досить гарну роботу

@phresnel: неповна, напевно, але

Ти правий. Дозвольте мені репостувати.
phresnel

1
Це не те, що я вам не вірю; Я згоден! Але всі ці оптимізації, як правило, здійснюють і сучасні компілятори. Принаймні я знаю, що gcc має їх усі. Тож моя думка така: Якщо обфускатор дійсно дає вам значну швидкість, то або компілятор [постачальник] не намагався достатньо, або йому не було надано відповідних прапор оптимізації.
phresnel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.