[Java] [SMALI] Reverse Engineering der CRC Funktion aus einer APK

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von teqnix, 18. November 2012 .

  1. 18. November 2012
    [SMALI] Reverse Engineering der CRC Funktion aus einer APK

    Moin,

    suche jemanden, der sich mit Java/SMALI auskennt und mir hilft die CRC Funktion aus einer APK Datei zu verstehen und zu "uebersetzen".

    Es geht um diese App: https://play.google.com/store/apps/details?id=com.jiuzhangtech.arena
     
  2. 18. November 2012
    AW: [SMALI] Reverse Engineering der CRC Funktion aus einer APK

    Poste halt die Funktion hier rein, wenn du sie extrahiert hast. Habe gerade keine Zeit die APK auseinanderzunehmen.
     
  3. 18. November 2012
    AW: [SMALI] Reverse Engineering der CRC Funktion aus einer APK

    Also die Funktion ist diese:
    Code:
     protected static String a(String s, int l, JSONObject jsonobject)
     {
     com/jiuzhangtech/c/i;
     JVM INSTR monitorenter ;
     Object obj;
     Object obj1;
     long l1;
     String s1;
     obj = new HttpPost((new StringBuilder(String.valueOf(bb.a().b()))).append(s).toString());
     obj1 = new ArrayList();
     ((List) (obj1)).add(new BasicNameValuePair("ACT", String.valueOf(l)));
     s1 = "";
     if (bh.V().q() != null)
     s1 = bh.V().q().k();
     l1 = bh.V().o();
     ((List) (obj1)).add(new BasicNameValuePair("CRC", dg.a((new StringBuilder(String.valueOf(l1))).append(s1).append("ZMLM601").toString())));
    _L1:
     ((List) (obj1)).add(new BasicNameValuePair("CTT", jsonobject.toString()));
     ((HttpPost) (obj)).setEntity(new UrlEncodedFormEntity(((List) (obj1)), "UTF-8"));
     if (c == null)
     {
     obj1 = new BasicHttpParams();
     ((BasicHttpParams) (obj1)).setIntParameter("http.connection.timeout", 20000);
     ((BasicHttpParams) (obj1)).setIntParameter("http.socket.timeout", 20000);
     c = new DefaultHttpClient(((org.apache.http.params.HttpParams) (obj1)));
     }
     obj = c.execute(((org.apache.http.client.methods.HttpUriRequest) (obj)));
     obj1 = EntityUtils.toString(((HttpResponse) (obj)).getEntity(), "UTF-8");
     if (((HttpResponse) (obj)).getStatusLine().getStatusCode() != 200)
     {
     Log.e("Error", ((String) (obj1)));
     throw new cb(((HttpResponse) (obj)).getStatusLine().getStatusCode());
     }
     break MISSING_BLOCK_LABEL_307;
     Exception exception;
     exception;
     com/jiuzhangtech/c/i;
     JVM INSTR monitorexit ;
     throw exception;
     NoSuchAlgorithmException nosuchalgorithmexception;
     nosuchalgorithmexception;
     nosuchalgorithmexception.printStackTrace();
     goto _L1
     com/jiuzhangtech/c/i;
     JVM INSTR monitorexit ;
     return ((String) (obj1));
     }
    
    Und es geht um diese Funktion genau:
    Code:
    ((List) (obj1)).add(new BasicNameValuePair("CRC", dg.a((new StringBuilder(String.valueOf(l1))).append(s1).append("ZMLM601").toString())));
    _L1:
    Das ganze ist auch etwas umfangreicher, wie ich das gelesen habe.
    Ich werde nachher nochmal den gesamten Quellcode bzw. das gesamte Projekt mit allen Klassen ranhaengen.
     
  4. 19. November 2012
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: [SMALI] Reverse Engineering der CRC Funktion aus einer APK

    Hier die dekompilierte APK:
    Download: Arena4.0.7z.001 | www.xup.in
    Download: Arena4.0.7z.002 | www.xup.in
    Download: Arena4.0.7z.003 | www.xup.in

    Die Funktion ist unter com/jiuzhangtech/c/i.class Zeile 64 (Java-Code).
    Ich benutze uebrigens Virtuous Ten Studio
     
  5. 30. Oktober 2015
    AW: [SMALI] Reverse Engineering der CRC Funktion aus einer APK

    Push please

    Funktion:

    Code:
     protected static synchronized String m9870a(String str, int i, JSONObject jSONObject) {
     String entityUtils;
     synchronized (C1149i.class) {
     HttpUriRequest httpPost = new HttpPost(new StringBuilder(String.valueOf(bi.m10006a().m10011b())).append(str).toString());
     List arrayList = new ArrayList();
     arrayList.add(new BasicNameValuePair("ACT", String.valueOf(i)));
     String str2 = "";
     if (bp.ak().m10224u() != null) {
     str2 = bp.ak().m10224u().m8104L();
     }
     try {
     arrayList.add(new BasicNameValuePair("CRC", dt.m10512a(new StringBuilder(String.valueOf(bp.ak().m10172s())).append(str2).append("ZMLM601").toString())));
     } catch (NoSuchAlgorithmException e) {
     e.printStackTrace();
     }
     arrayList.add(new BasicNameValuePair("CTT", jSONObject.toString()));
     httpPost.setEntity(new UrlEncodedFormEntity(arrayList, "UTF-8"));
     HttpResponse execute = C1149i.m9877k().execute(httpPost);
     entityUtils = EntityUtils.toString(execute.getEntity(), "UTF-8");
     if (execute.getStatusLine().getStatusCode() != 200) {
     Log.e("Error", entityUtils);
     throw new co(execute.getStatusLine().getStatusCode());
     }
     }
     return entityUtils;
     }
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.