allora stavo guardando un po' l'apk decompilato... io cambierei la funzione che richiama 3 funzioni per controllo del root con un ritorno sempre falso.
"\smali\it\mediaset\premiumplay\utils\security\Sec urityUtils.smali"
codice:
.method public isDeviceRooted()Z
const/4 v0, 0x0
return v0
.locals 1
.prologue
.line 137
invoke-direct {p0}, Lit/mediaset/premiumplay/utils/security/SecurityUtils;->checkRootMethod1()Z
move-result v0
if-nez v0, :cond_0
invoke-direct {p0}, Lit/mediaset/premiumplay/utils/security/SecurityUtils;->checkRootMethod2()Z
move-result v0
if-nez v0, :cond_0
invoke-direct {p0}, Lit/mediaset/premiumplay/utils/security/SecurityUtils;->checkRootMethod3()Z
move-result v0
if-nez v0, :cond_0
const/4 v0, 0x0
:goto_0
return v0
:cond_0
const/4 v0, 0x1
goto :goto_0
.end method
poi ho notato che nel seguente file ci sono delle richieste sul tipo di sistema operativo etc etc... forse modificando questi si può fare andare l'apk anche su cyano...
"\smali\it\mediaset\premiumplay\utils\security\Aut henticateUtils.smali"
codice:
.method public getDeviceIdentifiers()Ljava/lang/String;
.locals 5
.prologue
.line 48
const/4 v1, 0x0
.line 50
.local v1, deviceIdentifiers:Ljava/lang/String;
const/4 v3, 0x0
.line 52
.local v3, sb:Ljava/lang/StringBuilder;
sget v4, Landroid/os/Build$VERSION;->SDK_INT:I
invoke-static {v4}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object v0
.line 53
.local v0, androidVersion:Ljava/lang/String;
invoke-virtual {p0}, Lit/mediaset/premiumplay/utils/security/AuthenticateUtils;->getMACAddress()Ljava/lang/String;
move-result-object v2
.line 55
.local v2, macAddress:Ljava/lang/String;
if-eqz v0, :cond_0
if-eqz v2, :cond_0
.line 56
new-instance v3, Ljava/lang/StringBuilder;
.end local v3 #sb:Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
.line 58
.restart local v3 #sb:Ljava/lang/StringBuilder;
const-string v4, "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 59
const-string v4, "<deviceIdentifiers xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 60
const-string v4, "<Element>"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 61
const-string v4, "<Name>ANDROID</Name>"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 62
const-string v4, "<Value>"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 63
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 64
const-string v4, "</Value>"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 65
const-string v4, "</Element>"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 66
const-string v4, "<Element>"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 67
const-string v4, "<Name>MAC</Name>"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 68
const-string v4, "<Value>"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 69
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 70
const-string v4, "</Value>"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 71
const-string v4, "</Element>"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 72
const-string v4, "</deviceIdentifiers>"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 74
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
.line 77
:cond_0
return-object v1
.end method
codice:
public AuthenticateUserResponse AuthenticateUser(String _username, String _password) {
String username = _username;
String password = _password;
String deviceIdentifiers = AuthenticateUtils.getInstance().getDeviceIdentifiers();
String iPadId = AuthenticateUtils.getInstance().getIpadID();
Log.d("deviceIdentifiers", deviceIdentifiers);
Log.d("iPadId", iPadId);
String applicationId = AuthenticateUtils.getInstance().getApplicationVersionCode() != null ? AuthenticateUtils.getInstance().getApplicationVersionCode() : ;
try {
applicationId = URLEncoder.encode(applicationId, "UTF-8");
if((!TextUtils.isEmpty(username)) && (!TextUtils.isEmpty(password))) {
username = URLEncoder.encode(username, "UTF-8");
password = URLEncoder.encode(password, "UTF-8");
}
} catch(UnsupportedEncodingException e) {
return null;
}
url = "action=AuthenticateUser";
url = "&channel=IPAD";
url = "&applicationId=" + applicationId;
url = "&androidDecriptFlag=Y";
if((!TextUtils.isEmpty(username)) && (!TextUtils.isEmpty(password))) {
url = "&username=" + username;
url = "&password=" + password;
}
ArrayList<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("action", "AuthenticateUser"));
parameters.add(new BasicNameValuePair("channel", "IPAD"));
parameters.add(new BasicNameValuePair("applicationId", applicationId));
parameters.add(new BasicNameValuePair("deviceIdentifiers", deviceIdentifiers));
parameters.add(new BasicNameValuePair("ipadId", iPadId));
if((!TextUtils.isEmpty(username)) && (!TextUtils.isEmpty(password))) {
parameters.add(new BasicNameValuePair("username", username));
parameters.add(new BasicNameValuePair("password", password));
}
HttpHelper httpHelper = new HttpHelper(url);
try {
JSONObject jsonObj = HttpHelper.readServerAnswer(httpHelper.post(parameters, true));
return AccountJSONHelper.getInstance().json2AuthenticateUserResponse(jsonObj);
} catch(JSONException localJSONException1) {
}
return new AuthenticateUserResponse(PPError.JSONError());
}
però non so che valori sostituire, qualche programmatore a cui funziona sa dirmi che valori corretti di rom stock restituire?