{"id":21149,"date":"2025-01-06T19:25:15","date_gmt":"2025-01-06T18:25:15","guid":{"rendered":"https:\/\/www.digitalking.it\/?p=21149"},"modified":"2025-12-25T19:54:17","modified_gmt":"2025-12-25T18:54:17","slug":"how-to-pass-play-integrity-checks-on-android-devices-with-a-custom-firmware","status":"publish","type":"post","link":"https:\/\/www.digitalking.it\/en\/2025\/01\/06\/how-to-pass-play-integrity-checks-on-android-devices-with-a-custom-firmware\/","title":{"rendered":"How to pass Play Integrity checks on Android devices with a custom firmware"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading time:<\/span> <span class=\"rt-time\"> 3<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>\n<p>Uno degli strumenti a disposizione degli sviluppatori Android per garantire la sicurezza delle loro applicazioni \u00e8 il set di controlli di integrit\u00e0 fornito tramite l&#8217;API Play Integrity. Questi controlli consentono agli sviluppatori di verificare se un dispositivo soddisfa determinati standard di sicurezza e integrit\u00e0. I tre principali livelli di controllo sono:<\/p>\n\n<ol class=\"wp-block-list\">\n<li><strong>MEETS_DEVICE_INTEGRITY<\/strong>: Questo controllo verifica se il dispositivo utilizza un firmware Android ufficiale e non modificato, con il bootloader bloccato. Rappresenta il massimo livello di sicurezza, garantendo che il dispositivo sia in uno stato completamente affidabile.<\/li>\n\n\n\n<li><strong>MEETS_BASIC_INTEGRITY<\/strong>: Questo controllo \u00e8 pi\u00f9 generale e verifica se il dispositivo \u00e8 in uno stato ragionevolmente sicuro. Passano dispositivi con firmware ufficiale o custom ROM non rootate, ma con bootloader sbloccato.<\/li>\n\n\n\n<li><strong>MEETS_STRONG_INTEGRITY<\/strong>: Questo controllo \u00e8 il pi\u00f9 rigoroso. Oltre ai requisiti di <strong>MEETS_DEVICE_INTEGRITY<\/strong>, verifica che il dispositivo abbia eseguito la verifica Strong Integrity di Google, che include la conferma della chiave di sicurezza hardware. Passano solo i dispositivi che rispettano gli standard pi\u00f9 elevati di sicurezza, come i dispositivi Android stock con firmware ufficiale e bootloader bloccato.<\/li>\n<\/ol>\n\n<p>Ecco una panoramica di come questi controlli vengono gestiti su diversi tipi di dispositivi:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Dispositivi con firmware Android stock e bootloader bloccato<\/strong>: Passano tutti e tre i controlli (<strong>MEETS_DEVICE_INTEGRITY<\/strong>, <strong>MEETS_BASIC_INTEGRITY<\/strong>, <strong>MEETS_STRONG_INTEGRITY<\/strong>).<\/li>\n\n\n\n<li><strong>Dispositivi con firmware Android stock e bootloader sbloccato<\/strong>: Passano solo <strong>MEETS_BASIC_INTEGRITY<\/strong>. Non soddisfano <strong>MEETS_DEVICE_INTEGRITY<\/strong> e <strong>MEETS_STRONG_INTEGRITY<\/strong> a causa del bootloader sbloccato.<\/li>\n\n\n\n<li><strong>Dispositivi con custom ROM e bootloader sbloccato<\/strong>: Passano generalmente solo <strong>MEETS_BASIC_INTEGRITY<\/strong>, ma potrebbero fallire anche questo controllo se il firmware \u00e8 configurato in modo non conforme agli standard di Google.<\/li>\n\n\n\n<li><strong>Dispositivi con custom ROM, bootloader sbloccato e root<\/strong>: Non passano nessuno dei tre controlli, poich\u00e9 il root rappresenta una modifica significativa che compromette l&#8217;integrit\u00e0 del dispositivo secondo gli standard di Google.<\/li>\n<\/ul>\n\n<p>Questi livelli di controllo aiutano gli sviluppatori a prendere decisioni informate su come gestire l&#8217;accesso alle loro app. Ad esempio, un&#8217;app di pagamento potrebbe richiedere <strong>MEETS_STRONG_INTEGRITY<\/strong> per garantire che sia utilizzata solo su dispositivi completamente sicuri, mentre un&#8217;app di gioco potrebbe accontentarsi di <strong>MEETS_BASIC_INTEGRITY<\/strong> per ridurre il rischio di truffe o modifiche non autorizzate.<\/p>\n\n<h2 class=\"wp-block-heading\">Come verificare quali controlli Play Integrity passa il tuo dispositivo<\/h2>\n\n<p>Per verificare quali controlli Play Integrity passa il tuo dispositivo aprire Play Store \u2192 Impostazioni \u2192 Generali (Informazioni \u2192 tocca il numero di versione 7 volte), ora sei uno sviluppatore.<br \/>Nelle impostazioni di Play Store in Generali \u2192 Opzioni sviluppatore sotto Play Integrity tocca &#8220;Verifica l&#8217;integrit\u00e0&#8221; e controlla la voce Labels.<\/p>\n\n<p>In alternativa, sul Play Store esistono app come Play Integrity API Checker o TB Checker per verificare i controlli Play Integrity.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-dominant-color=\"c3c2c0\" data-has-transparency=\"false\" style=\"--dominant-color: #c3c2c0;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"https:\/\/www.digitalking.it\/wp-content\/uploads\/2024\/12\/PlayIntegrity2.webp\" alt=\"\" class=\"wp-image-21151 not-transparent\" srcset=\"https:\/\/www.digitalking.it\/wp-content\/uploads\/2024\/12\/PlayIntegrity2.webp 1024w, https:\/\/www.digitalking.it\/wp-content\/uploads\/2024\/12\/PlayIntegrity2-300x300.webp 300w, https:\/\/www.digitalking.it\/wp-content\/uploads\/2024\/12\/PlayIntegrity2-150x150.webp 150w, https:\/\/www.digitalking.it\/wp-content\/uploads\/2024\/12\/PlayIntegrity2-768x768.webp 768w\" \/><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\">Passare i controlli con PlayIntegrityFork<\/h2>\n\n<p>PlayIntegrityFork (PIF) \u00e8 un modulo disponibile su <a href=\"https:\/\/github.com\/osm0sis\/PlayIntegrityFork\" target=\"_blank\" rel=\"noopener\">GitHub<\/a> che cerca di sistemare i verdetti di Play Integrity per ottenere un&#8217;attestazione valida.<br \/>Il modulo NON \u00e8 pensato per nascondere il root o evitarne il rilevamento in altre app, serve solo per passare i verdetti del dispositivo nei test Play Integrity e certificare il dispositivo.<br \/>Per utilizzare il modulo \u00e8 necessario avere root (tramite Magisk o KernelSU o APatch) e Zygisk abilitato \/ modulo ZygiskNext installato, leggere la sezione Tutorial.<br \/>Dopo aver flashato il modulo e riavviato il dispositivo \u00e8 possibile verificare i verdetti PlayIntegrity come descritto precedentemente. Il dispositivo dovrebbe passare i controlli <strong>MEETS_DEVICE_INTEGRITY<\/strong>, <strong>MEETS_BASIC_INTEGRITY<\/strong>.<\/p>\n\n<h2 class=\"wp-block-heading\">Come passare anche il controllo MEETS_STRONG_INTEGRITY?<\/h2>\n\n<p>Si tratta del controllo pi\u00f9 stringente, richiede che il dispositivo con Google Play Services abbia una solida garanzia di integrit\u00e0 del sistema, ad esempio una prova dell&#8217;integrit\u00e0 dell&#8217;avvio basata sull&#8217;hardware e per i\u00a0dispositivi con Android 13 o versioni successive\u00a0\u00e8 necessario disporre di un aggiornamento della sicurezza nell&#8217;ultimo anno, \u00e8 necessario che il bootloader sia bloccato.<\/p>\n\n<p>E&#8217; possibile provare a passare questo controllo tramite la procedura descritta in <a href=\"https:\/\/droidwin.com\/how-to-pass-strong-integrity-on-unlocked-bootloader-root\/\" title=\"\" target=\"_blank\" rel=\"noopener\">questo articolo<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading time:<\/span> <span class=\"rt-time\"> 3<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>What are the Play Integrity API checks and a guide to pass them on devices using a custom Android ROM<\/p>\n","protected":false},"author":1,"featured_media":21147,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","footnotes":""},"categories":[359,8],"tags":[3784,3911,3913,3912,3896],"class_list":["post-21149","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile","category-tutorials","tag-android-en","tag-custom-2","tag-play-integrity-2","tag-rom-2","tag-root-3"],"author_meta":{"display_name":"Simone","author_link":"https:\/\/www.digitalking.it\/en\/author\/admin\/"},"featured_img":"https:\/\/www.digitalking.it\/wp-content\/uploads\/2024\/12\/PlayIntegrity-300x300.webp","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/www.digitalking.it\/category\/mobile\/\" class=\"advgb-post-tax-term\">Mobile<\/a>","<a href=\"https:\/\/www.digitalking.it\/category\/tutorials\/\" class=\"advgb-post-tax-term\">Tutorials<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Mobile<\/span>","<span class=\"advgb-post-tax-term\">Tutorials<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/www.digitalking.it\/category\/tutorials\/\" class=\"advgb-post-tax-term\">android<\/a>","<a href=\"https:\/\/www.digitalking.it\/category\/tutorials\/\" class=\"advgb-post-tax-term\">custom<\/a>","<a href=\"https:\/\/www.digitalking.it\/category\/tutorials\/\" class=\"advgb-post-tax-term\">Play Integrity<\/a>","<a href=\"https:\/\/www.digitalking.it\/category\/tutorials\/\" class=\"advgb-post-tax-term\">rom<\/a>","<a href=\"https:\/\/www.digitalking.it\/category\/tutorials\/\" class=\"advgb-post-tax-term\">root<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">android<\/span>","<span class=\"advgb-post-tax-term\">custom<\/span>","<span class=\"advgb-post-tax-term\">Play Integrity<\/span>","<span class=\"advgb-post-tax-term\">rom<\/span>","<span class=\"advgb-post-tax-term\">root<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Posted 2 years ago","modified":"Updated 9 months ago"},"absolute_dates":{"created":"Posted on January 6, 2025","modified":"Updated on December 25, 2025"},"absolute_dates_time":{"created":"Posted on January 6, 2025 7:25 pm","modified":"Updated on December 25, 2025 7:54 pm"},"featured_img_caption":"","series_order":"","_links":{"self":[{"href":"https:\/\/www.digitalking.it\/en\/wp-json\/wp\/v2\/posts\/21149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.digitalking.it\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.digitalking.it\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.digitalking.it\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.digitalking.it\/en\/wp-json\/wp\/v2\/comments?post=21149"}],"version-history":[{"count":0,"href":"https:\/\/www.digitalking.it\/en\/wp-json\/wp\/v2\/posts\/21149\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.digitalking.it\/en\/wp-json\/wp\/v2\/media\/21147"}],"wp:attachment":[{"href":"https:\/\/www.digitalking.it\/en\/wp-json\/wp\/v2\/media?parent=21149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.digitalking.it\/en\/wp-json\/wp\/v2\/categories?post=21149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.digitalking.it\/en\/wp-json\/wp\/v2\/tags?post=21149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}