Восстановить потерянный код из скомпилированного apk
У меня есть проблема здесь... и это заставляет меня нервничать.
Я работал над этой игрой, и она шла отлично, поэтому я взял ее копию на своем ноутбуке, чтобы поработать, не работая на компьютере.
Короче говоря, отказ жесткого диска + плохие резервные копии привели к тому, что я потерял очень важный класс.
Есть ли способ декомпилировать apk, чтобы получить бит кода, который был потерян? Это не слишком сложно или сложно, просто невозможно переписать его, не читая каждый. не замужем. линия. из. код. во всем приложении, поскольку оно инициализирует много классов и загружает кучу вещей определенным образом.
С помощью быстрого поиска в Google я смог найти apktool, который декомпилирует его в набор файлов.smali, которые, как мне кажется, не предназначены для чтения человеком.
Все, что мне нужно для восстановления, это один очень большой метод в классе. Я нашел файл smali, который содержит его, и я думаю, что нашел строку, где он начинается. что-то вроде
.method публичная объявленная синхронизированная загрузка (Lcom/X/X/game/X;)I
Любая помощь будет принята с благодарностью, поскольку мне придется отказаться от всей игры без этого метода.
1 ответ
Быстрый google привел к способу декомпилировать apks ( декомпилировать apk в исходный код java). Однако, даже если это приводит к Java-коду, у вас, вероятно, не будет имен переменных (только те, которые по умолчанию, как param1
), так как они безвозвратно удаляются при компиляции исходного кода в байт-код, также, в зависимости от декомпилятора, циклы for/foreach будут вместо циклов while, если блоки /else могут не представлять ваш исходный поток управления из-за оптимизации компилятора.
В качестве общего совета: используйте какой-либо источник контроля. На вашем собственном сервере платная учетная запись с GitHub не имеет значения, но использовать контроль источников. Даже если вы только один человек, работающий над проектом. Это помогает в этой ситуации, помогает вернуться к предыдущей версии, помогает найти ошибку, которую вы ввели. Когда инструменты доступны, используйте их.