Android to system operacyjny, który wykorzystuje wiele języków programowania. Najpopularniejszymi językami są Java (lub Android Java, jeśli wolisz), C, XML, Bash i kilka innych. Aplikacje na Androida można dekompilować za pomocą APKTool i kilku podobnych narzędzi, a ich wynikiem jest Smali. Wiem, że wielu z Was się ze mną nie zgodzi, ale Smali to dość skomplikowany język, znacznie bardziej niż Java.
Istnieją dwa narzędzia, które mogą przekonwertować Smali z powrotem na Javę: Dex2Jar i JAD. Są jednak dość trudne w użyciu i wymagają pewnego doświadczenia, aby prawidłowo z nich korzystać. Na szczęście uznany programista XDA lęg 1337 stworzyłem prosty skrypt basha, który wykonuje całą pracę za nas. Ten skrypt może uzyskać wszystkie niezbędne zależności, a także pobrać kod Java bezpośrednio z pliku APK. Działa tylko na Linuksie, ale jestem pewien, że można go używać na systemach innych niż UNIX, takich jak Windows z Cygwin. Deweloper zaleca umieszczenie pliku w ~/bin i uczynienie go wykonywalnym. Dalsze instrukcje znajdziesz w wątku.
Czasami skrypty mogą znacznie ułatwić życie. Jeśli jesteś zainteresowany projektem, udaj się na stronę oryginalny wątek aby uzyskać więcej informacji i dowiedzieć się, jak przekonwertować kod asemblera na Javę.
Uwaga: narzędzi takich jak to należy używać do celów edukacyjnych. „Pożyczanie” kodu z aplikacji (płatnych lub bezpłatnych) jest nieetyczne i nie powinno mieć miejsca. Nie bez powodu są źródłem zamkniętym. Miej to w pamięci.