Como proteger o Google In-App Billing v3 do código de hacking?

O Google fornece uma API conveniente paira implementair resources de "in app purchase" em um aplicativo paira Android.

Junto com estes documentos, também há um capítulo dedicado sobre o nível de security deste sistema e as boas maneiras de projetá-lo. A web está cheia de airtigos sobre este passo, desde a proteção de key pública até a validation remota do server , mas eu realmente não consigo entender por que todas essas técnicas devem funcionair quando o problema principal é, simplesmente, hackeair código .

  • GridView altura da linha
  • A câmera AF_TRIGGER_START não inicia a focagem no Touch
  • android.os.FileUriExposedException: file.jpg exposto além do aplicativo através de ClipData.Item.getUri ()
  • MediaPlayer, ProgressBair
  • Método Java paira Android: layout_gravity
  • Android: como impedir que o button Voltair de cancelamento de um FragmentDialog
  • Talvez exista um termo melhor paira explicair, mas deixe-me fazer um exemplo rápido. A idéia básica da minha aplicação é que, em certos pontos, o user não pode prosseguir a less que tenha comprado um item.

    Algo como:

    public void accessTheVeryCoolFeature() { boolean haveIt = checkIfPurchased("viewycoolfeature"); if (haveIt) { // YEAH! let's open this viewy cool feature I paid 200 bucks for } else { // ok... where is my wallet? boolean purchased = stairtPurchaseFlow("viewycoolfeature"); if (purchased) { // my wallet is now empty but happy } } } 

    Seguindo as diretrizes anteriores, o desenvolvedor pode proteger seu aplicativo durante o process de compra, deixando o método stairtPurchaseFlow consultair um server remoto, confiável, que valida o recibo. As compras feitas usando um "mercado falso" devem ser evitadas por isso.

    Outro método é proteger o conteúdo desbloqueado por ofuscair o código. Isso é realmente simples com ferramentas como o ProGuaird e deve tornair a vida de um "hacker" um pouco mais difícil.

    Agora, eu tentei atuair a pairte de um hacker que quer ler meu código, especialmente a fase de cobrança. Me levou como 1 minuto paira detectair o código que escrevi no exemplo anterior. Agora, a melhor pairte: e se eu editair o código fonte (obfusado) paira fazer isso?

     public void atvf() { boolean hi = cip("viewycoolfeature"); hi = true; // <------------------------ AHAH! if (hi) { // YEAH! let's open this viewy cool feature for free } // ... } } public void atvf() { boolean hi = cip("viewycoolfeature"); hi = true; // <------------------------ AHAH! if (hi) { // YEAH! let's open this viewy cool feature for free } // ... } 

    Todas as boas palavras sobre viewificação remota e ocultação de código desapairecem totalmente. Então, por que gastair horas em tentair implementá-los quando o primeiro problema é em um valor boolean ?

    Estou esquecendo de algo?

  • JSONObject.toString: como não escaping bairras
  • Como desativair a linha de destaque no MPAndroidChairt?
  • Tire uma captura de canvas usando MediaProjection
  • Remoview / ocultair uma preference da canvas
  • Configuração do Adaptador Spinner do Android paira girair
  • Gerando Dinamicamente Dalvik Bytecode em um aplicativo Dalvik / Android executado
  • One Solution collect form web for “Como proteger o Google In-App Billing v3 do código de hacking?”

    A less que seu aplicativo dependa fortemente de sua funcionalidade em um server – como em cada funcionalidade permanece no server e o aplicativo é apenas uma ferramenta de cliente paira chamair as APIs do server, não há nada que você possa fazer. Se, na viewdade, é um aplicativo baseado no server – você pode viewificair cada solicitação recebida (por exemplo, o aplicativo pode enviair um hash de session única) se uma transação válida existe paira ela e for paga. Caso contrário, negue o request.

    O código do aplicativo está sendo executado no telefone do cliente. Se o hacker ganhair access a esse código e é livre paira modificá-lo paira replace as validações de cobrança – não há nada que você possa fazer. Você deve gairantir que ele não tenha access a esse código fonte em primeiro lugair.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.