사실 앱 위변조 방지는 프로가드만 잘 적용하면 어느정도 방지할 수 있다. 하지만, 클라이언트 앱을 역컴파일 한다면 서버 API 가 노출되는 것을 쉽게 막을수도 없는일이다. 사실 이 문제에 대하여 당장 떠오르는 해결책은 NDK 를 사용하여 서버와 통신하는 것이다. 하지만 서버의 모든 API 호출을 C/C++ 로 구현하기에는 시간적 인적 비용이 부족한 많은 프로젝트에서는 거의 불가능에 가깝지 않을까 생각한다. 그래서 시간이 없는 상황에서는 다음과 같이 간단한 방법을 이용할 것을 권장한다. 코드상에서 서명 값을 가져와서 서버와 첫 접속시 이 값을 보내준다. 서버에는 앱의 서명 값이 이미 저장되어 있으며 이 것을 클라이언트로부터 받은 서명값과 비교하여 위변조된 앱인지 검출하는 것이다. 즉, 앱 빌드시 다른 인증..
앱의 위변조를 방지하기 위하여 서명 값을 가져와서 서버에 미리 등록된 값과 비교하는 과정이 필요하다.하지만, 안드로이드 Java 코드상으로 제공되는 API 를 활용하는 것은 안전하지 못하다.(안드로이드 자바 코드상에서 서명 값 가져오기 : http://www.dev.re.kr/70) 그렇기 때문에 JNI 를 활용해야 한다. context 를 인자값으로 받아서 jni 에서 제공되는 리플렉션을 사용하여 SHA1 으로 변환된 서명 값을 가져오는 코드를 첨부한다. 주의할 점은 아래 코드는 C++ 로 작성되었기 때문에 C 에서 사용하려면 약간의 수정이 필요하다. 이를테면 env->GetObjectClass(context); 를 C로 표현 하려면 (*env)->GetObjectClass(env, context); ..
- Total
- Today
- Yesterday
- 스마트 무드등
- bluetooth
- noidemcu
- ATtiny85
- activity
- Java
- 아두이노
- ESP8266
- 가습기
- ENC28J60
- 개발
- oled
- NeoPixel
- 블루투스
- 이더넷
- 침블락
- 알리익스프레스
- Cheapduino
- WS2812B
- 병렬 프로그래밍
- Iot
- ndk
- 안드로이드 개발
- HC-06
- json
- 부트로더
- arduino
- 안드로이드
- 칩두이노
- Android
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |