Как запутать код Java быстро?

Как запутать код быстро. У меня есть очень маленькое Приложение Java, и я хочу поставить запутываемый код своему клиенту. Я услышал много о ProGuard для запутывания кода и загрузил его, но не знает, как запутать мой "abc.jar" файл.

Я проверил его веб-сайт, но он содержит много материала для чтения. Мне не нужна тяжелая путаница. Мне просто нужно запутывание, которое просто меняет имя переменных, методов и классов к некоторым нечитабельным. Я знаю, что ProGuard предоставляют всему этому тонну других технических возможностей также.

Q1. Так мог любому сказать мне нравятся некоторый простой obfuscators или некоторые простые шаги использовать прозащиту так, чтобы я мог просто ввести "abc.jar", и это производит "obfuscate_abc.jar" или что-то простое как этот.

Q2. Еще одна вещь, поскольку моя программа Java пользуется внешними библиотеками, таким образом, я должен должен быть запутать те библиотеки также?

Q3. Есть ли какой-либо плагин Eclipse или NetBeans availabe к этой путанице?

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

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

18
задан informatik01 28 January 2014 в 19:33
поделиться

7 ответов

Q1. Так что кто-нибудь может сказать мне, пожалуйста, несколько простых игрок или несколько простых шагов, чтобы использовать PROGUARD, чтобы я мог просто ввести «abc.jar», и он выводит «OBFUSCATE_ABC.JAR» или что-то простое.

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

Q2. Еще одна вещь, так как моя программа Java использует внешние библиотеки, поэтому мне нужно также запугивать эти библиотеки?

Нет необходимости IMHO (даже не упомянув, что вы не можете).

Q3. Есть ли плагин Eclipse или NetBeans, доступный к этому запутанию?

Я бы скорее предположил использовать задачу Ant или Proguard-Maven-Plugin . См. Этот вопрос о плагине Maven при необходимости.

Q4. Итак, еще один вопрос, поэтому нам нужно держать этот картографический стол с нами. Мы можем просто сохранить копию непонятного приложения, чтобы внести изменения в этом (если требуется в будущем). Есть ли какие-либо основания сохранить этот файл отображения с нами?

Да, чтобы «Перевести» Stacktrace.

34
ответ дан 30 November 2019 в 06:11
поделиться

Я попробовал это с нуля. Это должно вас начать. Я думаю, что ключ будет понимать «Опции хранения» в файле конфигурации.

Используя этот код:

import java.util.*;

public class Example {

    public static void main(String... args) {
        Example ex = new Example();
        ex.go();
    }

    public void go() {
        String[] strings = { "abc", "def", "ijk" };
        for (String s : strings) {
            System.out.println(s);
        }
    }

}

Я создал пример. Я скопировал Proguard.jar из каталога Proguard lib и запустил эту командную строку

java -jar proguard.jar @myconfig.pro

, где myconfig.pro содержит:

-injars Example.jar
-outjars ExampleOut.jar
-libraryjars <java.home>/lib/rt.jar

-keep public class Example {
    public static void main(java.lang.String[]);
}

это производит imageout.jar, который содержит ту же функциональность и запутана (подтверждено с JAD). Обратите внимание, что я не использовал манифест, чтобы проверить функциональность, я не имеющую и проверил класс. Выполнение входных точек в банках остается на читателю.

Существует много дополнительных вариантов, указанных в разделе в разделе Использование .

13
ответ дан 30 November 2019 в 06:11
поделиться

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

4
ответ дан 30 November 2019 в 06:11
поделиться

Просто отвечая на Q4 ...

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

1
ответ дан 30 November 2019 в 06:11
поделиться

Относительно Q4: сопоставление используется, когда пользователи отправляют ваши отчеты об ошибках, которые содержат Stacktlaces исключения из запутанного кода. Proguard позволяет переводить эти штабел обратно в исходные названия классов и номера строк, если у вас есть сопоставление.

1
ответ дан 30 November 2019 в 06:11
поделиться

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

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

Если вы не поняли о том, как получить муравьев, идущий в Eclipse, вам в значительной степени просто нужно добавить файл build.xml Проект, скопируйте пример сценария, который поставляется с Yguard в нем, измените скрипт для работы с вашим проектом и запустить задачу YGuard с View Ant.

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

0
ответ дан 30 November 2019 в 06:11
поделиться

Я могу ответить на вопрос 4. Вы должны сохранить его для отладки. Скажем, у вас есть ошибка в функции «PrintTheSealphabet ()» в строке 23, после того, как запутывает след стека, может сказать что-то вроде «Ошибка в J6Z9R () в строке 27», что делает его довольно невозможным найти ошибку в исходном коде.

1
ответ дан 30 November 2019 в 06:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: