|
| [ANDROID] lire une Adresse mémoire. | |
| | Auteur | Message |
---|
antoineh2 Jeune bricoleur
Nombre de messages : 200 Age : 32 Localisation : belgium Emploi/loisirs : patator, démontage Humeur : normal( parfois diabolique) Date d'inscription : 19/12/2010
| Sujet: [ANDROID] lire une Adresse mémoire. Lun 16 Juin - 11:09 | |
| Salut salut la compagnie, Alors voila, ça fait quelques mois maintenant que je fais de l'achat de téléphones endommagés et que je les répare. Jusque la rien d'anormal, je commande les pièces, je démonte et remonte, on a un gsm tout neuf prêt à l'emploi et à la revente. Mais voila, ma seule ressource de gsm endommagé étant ebay, je me retrouve parfois à acheter des téléphones dans d'autre pays. Donc la j'ai acheté un Xperia Neo à un trés bon prix, digitizer brisé. Je l'ai trés vite réparé, mais ensuite est venu un autre problème, le smartphone est bloqué sur un réseau autrichien (3AT). Donc bon, je me dis, j'envoie un mail au service client (je fais des gros efforts sur mon anglais (et je leur propose même de réécrire en Allemand via un ami). Ils me répondent que si je veux le faire débloquer, non seulement c'est payant, mais en plus je dois me rendre dans un de leur points de vente... en Autriche . Bref, j'abandonne l'idée d'avoir le code pars eux, et me tourne vers les autres options de déblocages, pour vite me rendre compte que payer 15 euros pour une connerie pareil c'est inacceptable. Dernière solution, décompilller la bonne application dans le téléphone afin de trouver la ligne de code contenant le petit code (qui porte d'ailleurs plusieurs noms, ndp, depersonalization, dck, nck ...). Bref, j'ai facilement trouvé la bonne application -> SemcPhone.apk dans mon cas, contenant le code pour la depersonalization du téléphone (qui apparait que lorsque l'on active une nouvelle carte sim). Je décompille l'application sur mon ordi avec APKTOOL, pour avoir tous les répertoires de l'appli (le but n'étant pas de la recompiler aprés, j'ai des erreurs dans l'appli, mais pas grave). Je fini par trouver le .xml qui contient les valeurs appelé "public.xml" dedans on y trouve toutes les valeurs utilisée par l'appli, et la c'est le drame pour le pauvre informaticien noob que je suis (vive python :D) Parce que au lieu d'avoir la correspondante noté en clair genre simlock-ndp="nombre quelconque" On à un truc comme ça: Donc toute les valeurs font référence à une adresse mémoire particulière... C'est la que j'ai besoin de vous, parce que j'ai aucune connaissance en Java, et donc pour moi, arriver à lire une adresse mémoire, c'est comme tirer sur un lapin à 200m sans lunette. Donc j'en appelle au dévloppeur Java ou android (si il y en a) pour m'aider. J'aurais juste besoin d'un bout de code pour lire cette fichue adresse mémoire. Ha oui, je précise que je suis root sur mon android, que j'ai acces au terminal , que busybox est installé, donc si y a moyen par la, je suis preneur. Voila, merci d'avoir tout lu :D, et à bientot. | |
| | | zangdar-64 Jeune bricoleur
Nombre de messages : 151 Age : 36 Localisation : Tarbes Emploi/loisirs : Ingénieur/ Tout ce qui est +/- technique Humeur : Non? Date d'inscription : 29/11/2010
| Sujet: Re: [ANDROID] lire une Adresse mémoire. Lun 16 Juin - 13:20 | |
| Si tu as rooté la bestiole tu doit avoir possibilité de flasher la ROM "radio" il me semble que c'est elle qui subi le blocage à un opérateur. | |
| | | Biduleohm Modérateur
Nombre de messages : 8851 Age : 33 Localisation : 77 Seine-et-Marne Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie Humeur : Date d'inscription : 25/03/2009
| Sujet: Re: [ANDROID] lire une Adresse mémoire. Lun 16 Juin - 15:08 | |
| Perso je posterais sur stackoverflow pour ce genre de pb critique insoluble (attention à bien lire les règles sinon tu vas te faire jeter). Désolé, je ne peux pas t'aider plus que ça vu que je hais le java :p | |
| | | antoineh2 Jeune bricoleur
Nombre de messages : 200 Age : 32 Localisation : belgium Emploi/loisirs : patator, démontage Humeur : normal( parfois diabolique) Date d'inscription : 19/12/2010
| Sujet: Re: [ANDROID] lire une Adresse mémoire. Lun 16 Juin - 16:04 | |
| @Zangdar-64: Non non, tu peux changer tout ce que tu veux dans la ROM, ça n'enlevera jamais le simlock, je crois que c'est pour cette raison que SemcPhone va lire directement la valeur à une adresse bien précise, sinon ce serait trop facile à trouver.
@Bidule: Ok, je vais poster ça la dessus en masquant un peu l'affaire :p (bien que je sents les questions qui vont fuser "Pourquoi tu veux faire ça?"). Meme si au final, rooter le téléphone fait déja perdre la garantie, et donc le desimlocker ensuite ça ne change rien, puisque tu es déja hors garantie, ça ne releve pas du hack dés lors.
Bon si quelqu'un qui voit ce post veux m'aider il est toujours le bien venu, je prend toute les infos :D
| |
| | | Biduleohm Modérateur
Nombre de messages : 8851 Age : 33 Localisation : 77 Seine-et-Marne Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie Humeur : Date d'inscription : 25/03/2009
| Sujet: Re: [ANDROID] lire une Adresse mémoire. Lun 16 Juin - 16:10 | |
| T'inquiète pas, donne tous les détails, pose la question clairement (i.e. ne la noie pas au milieu d'un paragraphe) et balance le code en question (regarde dans l'help pour la syntaxe, c'est pas du bbcode sur SO) et ça devrait aller | |
| | | antoineh2 Jeune bricoleur
Nombre de messages : 200 Age : 32 Localisation : belgium Emploi/loisirs : patator, démontage Humeur : normal( parfois diabolique) Date d'inscription : 19/12/2010
| Sujet: Re: [ANDROID] lire une Adresse mémoire. Lun 23 Juin - 10:41 | |
| Alors, je me suis trompè en faite . Comme j'y connais rien en programmation android et java, j'ai considéré que un truc comme 0x80000 c'était une adresse mémoire, sans penser aux hexadécimaux. Bref, il se trouve que le code n'est pas stocké en clair dans le téléphone, donc qu'il faut décrypter tout le code relatif au simlock. Du coup je me retrouve à essayer de décoder du java sans même connaitre les classes et les méthodes de bases. Ca me prend donc beaucoup de temps, mais on avance. Voila pour l'avancée. PS: j'ai pas posté sur stackoverflow, j'ai préféré d'abord réfléchir sur tout ça :D.
Dernière édition par antoineh2 le Mar 24 Juin - 23:04, édité 1 fois | |
| | | Biduleohm Modérateur
Nombre de messages : 8851 Age : 33 Localisation : 77 Seine-et-Marne Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie Humeur : Date d'inscription : 25/03/2009
| Sujet: Re: [ANDROID] lire une Adresse mémoire. Lun 23 Juin - 15:25 | |
| Oui, tu peux écrire en hexa, en binaire, ... sans que ce soit une adresse mémoire et inversement, tu peux écrire une adresse mémoire en décimal, ça change rien.
T'as quoi actuellement ? du code machine ? de l'assembleur ? du java désassemblé à partir de l'exe ?
| |
| | | antoineh2 Jeune bricoleur
Nombre de messages : 200 Age : 32 Localisation : belgium Emploi/loisirs : patator, démontage Humeur : normal( parfois diabolique) Date d'inscription : 19/12/2010
| Sujet: Re: [ANDROID] lire une Adresse mémoire. Mar 24 Juin - 23:10 | |
| Du java, décompilé à partir de l'apk qui gère la fenêtre d'entrée du code de desimlock. En gros tu décompiles une première fois l'apk vers du smali, un language pour la machine virtuelle android. Ensuite du smali tu vas au java. Le code en java c'est ça: - Code:
-
/** * Generated by smali2java 1.0.0.558 * Copyright (C) 2013 Hensence.com */
package com.android.phone;
import android.widget.Button; import android.view.View; import android.widget.LinearLayout; import android.os.Handler; import android.widget.TextView; import com.android.internal.telephony.Phone; import android.widget.EditText; import android.text.TextWatcher; import android.content.Context; import android.os.Bundle; import android.text.method.DialerKeyListener; import android.text.method.KeyListener; import android.text.Editable; import android.text.Spannable; import android.content.res.Resources; import com.android.internal.telephony.PhoneFactory; import android.view.KeyEvent; import java.nio.ByteBuffer; import java.nio.ByteOrder; import android.util.Log; import android.os.Message;
public class IccNetworkDepersonalizationPanel extends IccPanel { private Button mDismissButton; private LinearLayout mEntryPanel; private int mPersoSubtype; private TextView mPersoSubtypeText; private Phone mPhone; private EditText mPinEntry; private LinearLayout mStatusPanel; private TextView mStatusText; private Button mUnlockButton; private final String mOemIdentifier = "QUALCOMM"; private final int mHeaderSize = ("QUALCOMM".length() + 0x8); int OEMHOOK_BASE = 0x80000; int OEMHOOK_ME_DEPERSONALIZATION = (OEMHOOK_BASE + 0x4); private TextWatcher mPinEntryWatcher = new TextWatcher(this) { **mPinEntryWatcher obtient la valeur du texte entré dans le cadre, le code pin** public void beforeTextChanged(CharSequence buffer, int start, int olen, int nlen) { } public void onTextChanged(CharSequence buffer, int start, int olen, int nlen) { } public void afterTextChanged(Editable buffer) { if(SpecialCharSequenceMgr.handleChars(getContext(), buffer.toString())) { mPinEntry.getText().clear(); } } }; private Handler mHandler = new Handler(this) { public void handleMessage(Message msg) { if((msg.what == 0x64) || (msg.what == 0x65)) { AsyncResult res = msg.obj; if(res.exception != null) { postDelayed(new Runnable(this) { public void run() { mPinEntry.getText().clear(); mPinEntry.requestFocus(); } }, 0xbb8); return; } postDelayed(new Runnable(this) { public void run() { dismiss(); } }, 0xbb8); } } }; public IccNetworkDepersonalizationPanel(Context context) { String localString1 = "QUALCOMM"; super(context); mPersoSubtype = 0x1; } public IccNetworkDepersonalizationPanel(Context context, int subtype) { String localString1 = "QUALCOMM"; super(context); mPersoSubtype = subtype; } protected void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(0x7f030026); **(sim-ndp) mPinEntry = (EditText)findViewById(0x7f0700e9); **récupère la valeur entrée (pin_entry) mPinEntry.setKeyListener(DialerKeyListener.getInstance()); mPinEntry.setOnClickListener(mUnlockListener); ** on a fait des modifications sur pin_entry en lui ajoutant ce que l'on écrit dans le champ. CharSequence text = mPinEntry.getText(); ** text contient pin_entry (dont on ne connait pas encore la classe) CharSequence span = (Spannable)text; **span est un texte modifiable span.setSpan(mPinEntryWatcher, 0x0, text.length(), 0x12); **on modifie, span en lui ajoutant pin_entry (qui prend toute la place) mEntryPanel = (LinearLayout)findViewById(0x7f0700e7); ** = entry_panel soit le paneau d'entrée mPersoSubtypeText = (TextView)findViewById(0x7f0700e8); **= perso_subtype_text ? setPersoPanelTitle(); mUnlockButton = (Button)findViewById(0x7f0700ea); **= ndp_unlock mUnlockButton.setOnClickListener(mUnlockListener); ** mUnlockButton soit ndp_unlock qui devient ce que on a écrit mDismissButton = (Button)findViewById(0x7f0700eb); ** ajoute le bouton d'annulation if(getContext().getResources().getBoolean(0x7f080001)) { ** tout ce qui ce passe si on clique sur le bouton dissmiss mDismissButton.setVisibility(0x0); ** éfface l'activité (bien qu'elle existe toujours) mDismissButton.setOnClickListener(mDismissListener); } else { mDismissButton.setVisibility(0x8); **garde la fenêtre ouverte } mStatusPanel = (LinearLayout)findViewById(0x7f0700ec); **= statu_panel mStatusText = (TextView)findViewById(0x7f0700ed);**=statu_text mPhone = PhoneFactory.getDefaultPhone(); ** =0x0 } protected void onStart() { super.onStart(); } public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == 0x4) { return true; } return super.onKeyDown(keyCode, event); } View.OnClickListener mUnlockListener = new View.OnClickListener(this) { public void onClick(View v) { String localString1 = "PhoneApp"; **localString1="QUALCOMM" maintenant ="PhoneApp" String pin = mPinEntry.getText().toString(); **pin est = à mPinEntry soit ce que l'on a écrit dans le champ en string if(TextUtils.isEmpty(pin)) { **Si on écrit rien dans le champ, la fonction ne retourne rien. return; } if(mPersoSubtype == 0x1) { Log.d("PhoneApp", "requesting network depersonalization with pin:" + pin); ** dans le cas où persoSubtype=1 on log "PhoneApp requesting network depersonalization with pin: le pin entré". mPhone.getIccCard().supplyNetworkDepersonalization(pin, Message.obtain(mHandler, 0x64)); ** ici ont fait la vérificatiion. } else { ** ne joue jamais, j'ai pas vu dans les logs Log.d("PhoneApp", "requesting depersonalization with subtype " + mPersoSubtype + " with pin:" + pin); sendDepersoOemRilRequestRaw(pin); } } }; private void indicateBusy() { // Parsing error. Please contact me. } private void indicateError() { // Parsing error. Please contact me. } private void indicateSuccess() { // Parsing error. Please contact me. } private void hideAlert() { **efface la visibilité du paneau d'entrée, et montre le résultat mEntryPanel.setVisibility(0x0); mStatusPanel.setVisibility(0x8); } View.OnClickListener mDismissListener = new View.OnClickListener(this) { public void onClick(View v) { dismiss(); } }; private void setPersoPanelTitle() { ** ?? // Parsing error. Please contact me. } void sendDepersoOemRilRequestRaw(String pin) { **ici on fait vérif du code via dernière ligne en initialisant tout le reste avant. Request int requestSize = pin.length() + 0x4; byte[] request = new byte[((mHeaderSize + requestSize) + 0x1)]; byte termChar = 0x0; ByteBuffer reqBuffer = ByteBuffer.wrap(request); reqBuffer.order(ByteOrder.nativeOrder()); try { reqBuffer.put("QUALCOMM".getBytes()); reqBuffer.putInt(OEMHOOK_ME_DEPERSONALIZATION); reqBuffer.putInt(requestSize); reqBuffer.putInt(mPersoSubtype); reqBuffer.put(pin.getBytes()); reqBuffer.put(termChar); Exception e = ; Log.e("PhoneApp", "Skipping Depersonalization because of exception " + e); dismiss(); } mPhone.invokeOemRilRequestRaw(request, Message.obtain(mHandler, 0x65)); } }
| |
| | | Biduleohm Modérateur
Nombre de messages : 8851 Age : 33 Localisation : 77 Seine-et-Marne Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie Humeur : Date d'inscription : 25/03/2009
| Sujet: Re: [ANDROID] lire une Adresse mémoire. Mar 24 Juin - 23:38 | |
| Ok, bon bah ça va, t'as de la chance, bien souvent on ne peut pas aller plus loin que désassembler le bin en assembleur...
| |
| | | antoineh2 Jeune bricoleur
Nombre de messages : 200 Age : 32 Localisation : belgium Emploi/loisirs : patator, démontage Humeur : normal( parfois diabolique) Date d'inscription : 19/12/2010
| Sujet: Re: [ANDROID] lire une Adresse mémoire. Jeu 26 Juin - 12:49 | |
| Bin c'est de l'android, pas un os propriétaire. Sur mes vieux Sony ericsson, il y avait des bin dans tous les sens, c'était une horreur pour voir un peu le code. | |
| | | Contenu sponsorisé
| Sujet: Re: [ANDROID] lire une Adresse mémoire. | |
| |
| | | | [ANDROID] lire une Adresse mémoire. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |