2012-01-10 1 views
15

Security and Design 지침은 공격자가 인앱 결제 구현을 손상시키기가 더 어려워 지도록 다양한 방법을 간략하게 설명합니다. 특히 주목좋은 소프트웨어 엔지니어링 대 보안

는 Proguard와를 통해 난독 경우에도, 그것은 .apk 파일을 리버스 엔지니어링하는 것이 얼마나 쉬운이다. 따라서 모든 샘플 애플리케이션 코드, 특히 "알려진 진입 점 및 종료점"을 수정하는 것이 좋습니다.

은 내가 누락을 발견 한 것은 boolean 반환 정적 Security.verify() 같은 하나의 방법 포장 특정 검증 방법에 대한 참조입니다 : 좋은 디자인 연습 (감소 코드 중복, 재사용, 디버깅 쉽게, 자기 문서화 등 .)하지만 공격자가 지금해야 할 모든 방법은 그 방법을 확인하고 항상 true ...을 반환하는 것입니다. 그래서 내가 얼마나 자주 사용했는지, 지연되었거나 지연되지 않았는지, 무작위로든 아니든 상관없이 간단하게 중요하지 않습니다.

반면 Java에는 C/C++와 같은 매크로가 없으므로 소스 코드 중복을 줄일 수는 있지만 verify() 함수에 대해 하나의 종료점이 없습니다.

그래서 내 질문 :

소위 보안을 위해 잘 알려진 소프트웨어 엔지니어링/코딩 관행과 디자인 사이의 고유 경합이 있습니까? (적어도 자바/안드로이드/안전한 거래의 맥락에서)

지나치게 복잡하게 보일 수있는 "발에 몸을 담그다"와 같은 "보안을위한 디자인"의 부작용을 완화하기 위해 수행 할 수있는 일 더 간단하고 유지 보수가 쉬우 며 디버깅하기 쉬울 수있는 소프트웨어?

이 주제를 더 공부하려면 좋은 자료를 추천 해 줄 수 있습니까?

+0

Maday! 나는 해커가 있다고 생각한다! –

+0

In-app의 경우 Security 클래스가 응용 프로그램 서버 여야한다고 생각합니다. –

+0

코드 난독 화의 가치에 대해 열띤 논쟁이 벌어지고 있습니다. –

답변

7

평상시처럼, 절충안입니다. 리버스 엔지니어링/크랙을 어렵게 만드는 코드는 읽기 쉽지 않고 유지하기가 더 어렵습니다. 원하는 사용자 기반, 해당 지역에서의 기술, 시간/비용 등을 기준으로 이동 거리를 결정합니다. 이는 Android에만 국한되지 않습니다. 난독 처리 및 코드 변조 방지를위한 다양한 단계에 대해 this Google I/O presentation을 살펴보십시오. 그런 다음 자신의 앱을 얼마나 기꺼이 갈 것인지 결정하십시오.

한편, 난독 화/강화 등의 작업을하지 않아도됩니다. 모든 코드, 라이선스를 다루는 부분 등입니다. 이는 대개 전체 코드베이스의 아주 작은 부분이며 그 사실을 자주 바꿀 필요는 없으므로 아마 따라 다니기/유지하기가 힘들어서 살 수있을 것입니다. 어떻게 작동하는지 몇 가지 메모를 남겨 두어 나중에 2 년 후에 생각 나게하십시오 :).

+0

내가 조사한 분야가 아니기 때문에, 내가 실제로 지켜보고있는 것을 확인해 주셔서 감사합니다. 지금까지 인앱 결제를 처음 사용하기 전에 소프트웨어를 보호하려는 노력이 얼마나 힘든 지 깨닫기 시작했습니다. –

5

당신이 설명하는 카운터 생산성 없음 소프트웨어, 그래서 당신이 뭘 사용자가보고 문제를 시작하지 100 % 버그없는 버전에 ... 빙산의 일각이다? 후

어떻게이 문제를 해결하거나 디버그 필드 않는 문제가 당신 장애인 로깅, 스택 추적도-엔지니어를 반대하지만, 도움이 다른 모든 종류의 정보가 합법적 인 개발 팀을 도와 드릴까요?

3

난독 화 방법은 어렵지만 항상 리버스 엔지니어링하는 방법이 있습니다. 내 말은, 당신의 소프트웨어가 hakers 커뮤니티들 사이에서 인기를 얻으면, 결국 누군가는 그것을 리버스 엔지니어링하려고 시도 할 것입니다.

난독 리버스 엔지니어링 힘든 과정을 단지 방법이다.

포장입니다.많은 패킹 방법을 사용할 수 있다고 생각하지만 리버스 엔지니어링하는 과정도 있습니다.

www.tuts4you.com을 확인하면 얼마나 많은 가이드가 제공되는지 확인할 수 있습니다.

저는 많은 다른 사람들처럼 전문가가 아니지만 리버스 엔지니어링을 배우는 과정에서 경험 한 것입니다. 또한 최근에 안드로이드 애플리케이션 리버스 엔지니어링을위한 많은 가이드를 보았습니다. nullc0n (확실하지 않음) CTF에서도 Android Reversing에 앱이 있습니다. 원한다면 검색 후 사이트를 언급 할 수 있습니다.

+2

어쩌면 그 좋은 정보 kidd0,하지만 그것은 고통스럽게 읽기 어렵습니다. 우리는 일반적으로 StackOverflow에 대한 대답을 모호하게하지 않습니다 :) –

+0

@owlstead : 저 빈약 한 편집에 정말 죄송합니다. stackoverflow를 처음 사용합니다. :(나는 그것을 편집했다. 만약 당신이 그것을 사용한다고 생각한다면 0 (명성) –