
Originariamente inviato da
blknit
Premetto che non sono un esperto di programmazione e potrei scrivere delle inesattezze ma questi sono gli step eseguiti per far funzionare Premium Play 3.1.3 su Cyanogenmod 11 (KK 4.4.4).
Sono passato recentemente sul mio Tablet (KFHD Tate) dal firmware stock a CM11 (kitkat) non sono riuscito a far funzionare nuovamente Premium Play.
Ho ricompilato l'apk (3.1.3) eliminando i vari root check senza successo, in effetti mi sono reso conto che ci sono 2 livelli di verifiche che vengono eseguite.
Le prime sono ormai uno standard nelle applicazioni che tentano di rilevare il root nei nostri device e sono le seguenti :
.method public isDeviceRooted()Z
invoke-direct {p0}, Lit/mediaset/premiumplay/utils/security/SecurityUtils;->checkRootMethod1()Z
Check su rom custom "test-keys"
invoke-direct {p0}, Lit/mediaset/premiumplay/utils/security/SecurityUtils;->checkRootMethod2()Z
Check sulla presenza di /system/app/Superuser.apk
invoke-direct {p0}, Lit/mediaset/premiumplay/utils/security/SecurityUtils;->checkRootMethod3()Z
Check sulla presenza del file "su" attraverso il comando /system/xbin/which su
Oltre a queste 3 verifiche superabili attraverso la modifica dell'apk o l'utilizzo di Cydia+root cloak plus c'e' una ulteriore verifica che viene eseguita dopo il login, quando di tenta di eseguire la visione di un qualsiasi video ed è gestita tramite la libreria libDxDrmDlcCore.so
Quando la libreria viene caricata c'e' una seconda verifica ed in caso di rom custom l'esito è il seguente (estratto del logcat) :
D/dalvikvm: Added shared lib libDxDrmDlcCore.so
D/DxDrmJavaWrap: enter JNI_OnLoad()
E/DxDrmJavaWrap: ERROR: Device is rooted. aborting execution
Ho disassemblato la libreria in questione e sono stato incuriosito da un'altra serie di verifiche sulle proprietà del dispositivo :
GetDeviceUniqueID
GetIMSI
GetDeviceManifacturer
GetDeviceModel
GetDeviceRevision
Fortunatamente non ci sono check specifici per verificare che il tablet in questione sia uno dei device effettivamente supportati ma non ho trovato neanche controlli specifici riguardanti il "root" del dispositivo.
Il problema infatti risiede altrove in quanto le verifiche eseguite dalla libreria non vengono intercettate da root cloak o da root cloack plus.
Nel nostro caso la libreria esce nel momento in cui rileva la rom custom (nel mio caso CM11).
La verifica che fallisce è quella che riguarda un parametro presente nel build.prop, nel mio casi il parametro "ro.build.tags"
Tale parametro viene verificato per capire se l'applicazione viene eseguita su una rom stock (generalmente firmata con le release-keys) o su una rom custom (generalmente firmata con le test-keys)
La soluzione quindi è stata quella di modificare il valore campo ro.build.tags da test-keys a release-keys e riavviare il tablet.
Naturalmente per eseguire la modifica servono i permessi di root ed uno dei tanti build.prop editor presenti nel Play Store.
Se volete stare tranquilli eseguite un backup prima di modificare il file .
Finalmente dopo quasi un giorno di sbattimenti vari Premium Play funziona su CM11.
Le stesse indicazioni sono valide per tutti i tablet che hanno il parametro ro.build.tags=test-keys
RIASSUMENDO :
1) Apk modificato e/o installazione di Cydia substrate+Root Cloak plus
2) Modifica nel file /system/build.prop del parametro ro.build.tags da test-keys a release-keys
Nota : se utilizzate cydia+root cloak plus su KK 4.4 dovete impostare selinux in permissive mode
https://play.google.com/store/apps/d...mrbimc.selinux