방법을 생각해 보자

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 버그 코드 추가
        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";
    

PyeongHo

즐겁게 또 즐겁게