Google은 convenient API을 제공하여 Android 앱에서 '인앱 구매'기능을 구현합니다.코드 해킹에서 Google 인앱 결제 v3를 보호하려면 어떻게해야하나요?
이 문서와 함께이 시스템의 보안 수준과 좋은 방법을 고려하여 dedicated chapter도 있습니다. 웹에는 public key protection에서 remote server validation까지이 단계에 대한 기사가 가득합니다. 그러나 주요 문제가 단순히 코드 해킹 일 때 이러한 모든 기술이 작동해야하는 이유를 이해할 수 없습니다.
아마도 더 나은 용어가 있지만 설명해 보겠습니다. 내 응용 프로그램의 기본 아이디어는 특정 시점에서 사용자가 항목을 구입하지 않으면 진행할 수 없다는 것입니다. 같은
뭔가 :
public void accessTheVeryCoolFeature() {
boolean haveIt = checkIfPurchased("verycoolfeature");
if (haveIt) {
// YEAH! let's open this very cool feature I paid 200 bucks for
}
else {
// ok... where is my wallet?
boolean purchased = startPurchaseFlow("verycoolfeature");
if (purchased) {
// my wallet is now empty but happy
}
}
}
이전 지침에 따라, 원격, 신뢰, 영수증을 검증 서버를 조회 할 startPurchaseFlow
방법을시키는, 구매 과정에서 자신의 응용 프로그램을 보호 할 수있는 개발자. "가짜 마켓 플레이스"를 사용하여 수행 한 구매는이 작업을 통해 피해야합니다.
다른 방법은 코드를 난독 화하여 잠금 해제 된 내용을 보호하는 것입니다. ProGuard와 같은 도구를 사용하면 정말 간단하며 "해커"의 삶을 좀 더 어렵게 만들어야합니다.
이제는 코드, 특히 청구 단계를 읽고 싶어하는 해커의 일부분을 행동으로 보려고했습니다. 이전 예제에서 작성한 코드를 찾는데 1 분이 걸렸습니다. 이제 가장 중요한 부분은 : (난독 화 된) 소스 코드를 편집하면 어떻게 될까요?
public void atvf() {
boolean hi = cip("verycoolfeature");
hi = true; // <------------------------ AHAH!
if (hi) {
// YEAH! let's open this very cool feature for free
}
// ...
}
원격 확인 및 코드 난독 화에 대한 모든 좋은 단어는 완전히 사라졌습니다. 그렇다면 첫 번째 문제가 부울 값에있을 때 구현하는 데 왜 시간을 투자해야합니까?
내가 누락 된 항목이 있습니까?
일반적으로 설명하는 문제는 플랫폼과 독립적 인 런타임 라이선스가있는 앱에 대해 발생합니다. Java를 사용하면 기본 Windows 응용 프로그램에 C++을 사용하는 것보다 Android 응용 프로그램을 쉽게 해킹 할 수 있지만 둘 다 해킹 할 수 있습니다. 적어도 미국에서는 이러한 수정이 불법입니다. –