1. 안드로이드 보안을 위한 방법들
- 중요한 정보를 저장 하거나 하드코딩 안하면 되지만 어쩔수 없다면
-
아래 내용들은 최대한 지저분하게 여기 저기 막 넣어 둔다.
- 인증서를 확인 한다.
- 자바와 네이티브 양쪽
- 자바 코드는 많으니 네이티브 코드만 추후에 라이브러리를 만들어 볼 생각 입니다.
-
루팅 차단
- 설치 프로그램을 확인한다.
- 플레이스토어 설치 인지, 아마존 설치 인지
- java, c 둘다 추가 해야 한다.
private static final String PLAY_STORE_APP_ID = "com.android.vending"; public static boolean verifyInstaller(final Context context) { final String installer = context.getPackageManager() .getInstallerPackageName(context.getPackageName()); return installer != null && installer.startsWith(PLAY_STORE_APP_ID); }
- 에뮬레이터 동작을 차단 한다.
- 에뮬레이터에서 동작 하면 보안에 더욱 취약 하다.
public static boolean checkEmulator() { try { boolean goldfish = getSystemProperty("ro.hardware").contains("goldfish"); boolean emu = getSystemProperty("ro.kernel.qemu").length() > 0; boolean sdk = getSystemProperty("ro.product.model").equals("sdk"); if (emu || goldfish || sdk) { return true; } } catch (Exception e) { } return false; }
- ndk 통신을 이용한 구글 파이어베이스 서버로 통신
- base.apk md5 비교
- 덱스 로더 활용
- 구 버전 jdgui 버그 코드 추가
- 아래 코드를 추가하면 인터널 에러 발생
-
코틀린의 경우 companion object 이 있으면 해당 객체 안에 넣어야합니다.
- http://www.programering.com/q/MTMyQDMwATc.html
private static final char[] wJ = "0123456789abcdef".toCharArray(); public static String imsi = "204046330839890"; public static String p = "0"; public static String keyword = "Telephone"; public static String tranlateKeyword = "%E7%94%B5%E8%AF%9D";