Android NDK возможность декомпиляции собственного кода

Можно ли декодировать собственный код, скомпилированный и любимый для android через ndk?

И возможно ли от apk восстановить проект и импортировать его в eclipse (или любую другую среду IDE)?

Возможно ли снова использовать файлы .so в файле apk для восстановления проекта или с помощью другого проекта, если объявление собственной функции java выполняется соответствующим образом?

Декомпиляция native в исходный код (возможно, я не пытался), возможно, есть такие инструменты, как https://www.hex-rays.com/products/decompiler/

Можно восстановить проект из apk, но код будет запутан (странные имена классов и методов). Вы можете проверить свое приложение на apk2gold ( https://github.com/lxdvs/apk2gold )

Что касается вашего последнего вопроса, с небольшим усилием – да.

Возможно ли от apk восстановить проект и импортировать его в eclipse (или любую другую среду IDE)?

Это можно сделать с помощью декомпиляторов dex и экстракторов ресурсов apk.

Можно ли декодировать собственный код, скомпилированный и любимый для android через ndk?

Возможно ли снова использовать файлы .so в файле apk для восстановления проекта или с помощью другого проекта, если объявление собственной функции java выполняется соответствующим образом?

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

Можно ли декодировать собственный код, скомпилированный и любимый для android через ndk?

Можно разобрать; Есть декомпиляторы C / C ++, но для действительно сложного кода они почти бесполезны.

И возможно ли от apk восстановить проект и импортировать его в eclipse (или любую другую среду IDE)?

Можно baksmali (дизассемблировать) .apk, исправить что-то в нем, и smali (собрать) его снова. Можно заменить некоторые вызовы функций другими вызовами функций, и можно добавить новые классы.

Декомпиляция на Java также возможна, но код, скорее всего, не будет компилироваться, поэтому речь идет скорее о анализе, чем о модификации.

Obfuscated код по-прежнему читается, при условии, что они вкладывают некоторые усилия в анализ.

Вы можете запутать код, но они будут видеть значки, они найдут идентификаторы ресурсов, и они найдут обработчики кнопок onClick () .

Возможно ли снова использовать файлы .so в файле apk для восстановления проекта или с помощью другого проекта, если объявление собственной функции java выполняется соответствующим образом?

У них не будет проблем с использованием .so as-is с другим проектом (если кто-то не попросит их исправить ошибку в этом .so). Точно так же они могут сделать .jar из вашего .apk и использовать этот .jar как библиотеку с другим проектом.

В общем, немного сложнее возиться с чем-нибудь .jar.

Возможно ли декодировать собственный код, скомпилированный

Нет.

Возможно ли от apk восстановить проект

Да, много. Извлечение файлов .class легко, в основном декомпиляция. Шаг обфускации в процессе сборки сделает это намного сложнее.

Однако постоянные значения и инициализаторы очень легко получить из скомпилированного класса. Не пытайтесь использовать что-то вроде private static String SECRET = "sesame123"; , Это совсем не сложно перестроить. – То же самое, кстати, относится и к файлам .so .

Возможно ли снова использовать файлы .so в файле apk для восстановления проекта

Нет.

Это зависит от того, что вы подразумеваете под «проектом». Функции и подписи вашей родной библиотеки, вероятно, легко восстановить из соответствующего (скомпилированного) Java-класса в любом случае. Код (source-) в основном «потерян» для хорошего после компиляции на собственный код. Если кто-то знает, как использовать вашу общую библиотеку, хотя (легко понять, см. Выше), он сможет использовать ее в любом приложении, которое ему нравится.

Подвести итог:

A) Исходный код не может быть восстановлен из скомпилированного кода.

Б) источник Java намного проще восстановить из скомпилированных файлов .class ; Обфускация кода может усложнить работу.

C) Любая функциональность, которую может иметь ваше приложение, родная или нет, может быть легко извлечена и использована другим приложением, которое может написать злоумышленник.

См. Также: http://en.wikipedia.org/wiki/Security_through_obscurity