2011-06-22 13 views
8

Pracuję na platformie, która uruchamia aplikacje Java. Te aplikacje są często zaciemniane, większość z nich korzysta z ProGuarda, co sprawia, że ​​problemy z debugowaniem na naszej platformie są bardzo trudne.Decompiling obfuscated java bytecode

Obecnie używam JD (http://java.decompiler.free.fr/) do dekompilacji tych aplikacji. JD wykonuje przyzwoitą pracę, ale czasami wygenerowany kod jest zbyt trudny do zrozumienia.

Wydaje się, że dzieje się tak głównie dlatego, że narzędzia obfuskacji wykorzystują mniej ograniczoną specyfikację JVM Bytecode do wygenerowania prawidłowego kodu bajtowego, który nie odwzorowuje z powrotem do poprawnego kodu Java (przykład: agresywne przeciążanie).

Moje pytanie brzmi: czy istnieje specjalnie skonstruowany dekompilator do obsługi zaciemnionego kodu bajtowego?

+0

Czy próbowałeś http://members.fortunecity.com/neshkov/dj.html –

+0

@ anirudh4444 działa tylko w systemie Windows. Potrzebuję czegoś, co działa na Ubuntu. – JoaoHornburg

+0

Możesz użyć wine/mono, aby uruchomić go na ubuntu. –

Odpowiedz

5

Wątpię, żeby to zrobili dekompilatorzy. Można jednak zaimplementować niestandardową transformację kodu bajtowego i zmienić nazwę przeciążonej metody i nazw zmiennych, używając czegoś takiego jak ASM.

5

Istnieje dekompilator znany jako Fernflower opracowany przez członka tutaj. Może być dekompilatorem stworzonym specjalnie do dekompilacji kodu, ale możesz chcieć odebrać to z przymrużeniem oka. To przesłanych tutaj: https://github.com/Zidonuke/Bukkit-MinecraftServer/blob/master/tools/fernflower.jar?raw=true

+0

Fernflower nie jest już oficjalnie dostępny i nadal można go pokonać dzięki dość prostym transformacjom przepływu sterowania. – Antimony

+0

@Antimony care wyjaśnić jakie transformacje? AFAIK może poradzić sobie nawet z nieprzejrzystym wstawieniem predykatu ZKM, co zdarza się (stało się?) Najlepszym zaciemnieniem przepływu w grze. – oldrinb

+0

Fernflower powrócił, dzieci! – thomas

Powiązane problemy