Избегайте декомпиляции андроида APK [дубликат]

Отсутствует «extern» в объявлениях / определениях переменной const (только для C ++)

Для людей, прибывающих с C, может показаться неожиданным, что в C ++ глобальные переменные const имеют внутренние (или статические) связь. В C это не так, поскольку все глобальные переменные неявно extern (т.е. когда отсутствует ключевое слово static).

Пример:

// file1.cpp
const int test = 5;    // in C++ same as "static const int test = 5"
int test2 = 5;

// file2.cpp
extern const int test;
extern int test2;

void foo()
{
 int x = test;   // linker error in C++ , no error in C
 int y = test2;  // no problem
}

correct would использовать файл заголовка и включить его в file2.cpp и file1.cpp

extern const int test;
extern int test2;

. В качестве альтернативы можно было бы объявить переменную const в файле file1.cpp с явным extern

17
задан user2330561 18 January 2014 в 04:53
поделиться

3 ответа

Proguard - это инструмент, который поможет вам обфузировать ваш код. Это входит в состав ваших инструментов для Android, и вам просто нужно его активировать. Эта ссылка и этого помогут в дальнейшем.

Конфигурация по умолчанию Proguard (в proguard.cfg) будет достаточной, чтобы достаточно запутать ваш код. Однако вы можете настроить свою конфигурацию proguard, когда у вас есть методы / классы, которые динамически доступны.

  1. Например, для доступа к классам / методам с Reflection вам понадобится, чтобы код был неповрежденным , Иногда вы можете столкнуться с ClassNotFoundException, если proguard запутывает его.
  2. Если у вас есть классы, к которым обращаются в файлах AndroidManifest / Layout, вам следует запретить их пропуски.

Это можно сделать, добавив

-keep public class <MyPackage.MyClass> 

к вашему proguard.cfg.

16
ответ дан Siddharth N 26 August 2018 в 00:07
поделиться

Вы не можете предотвратить декомпиляцию android apk, вы можете просто увеличить сложность декомпиляции, proguard - лучший вариант.

7
ответ дан handrenliang 26 August 2018 в 00:07
поделиться

DexGuard обеспечивает еще лучшую защиту, чем ProGuard, но НЕ БЕСПЛАТНО: https://www.saikoa.com/dexguard

DexGuard может даже обфускать строковые константы.

3
ответ дан zatziky 26 August 2018 в 00:07
поделиться
Другие вопросы по тегам:

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