12- Harcoding Issues - Part 2

En este código parece ser que se crea una instancia de DivaJni y ejecuta el método access, se trata de un método nativo, no está en en este java, está en la librería nativa dentro del apk
java
public class Hardcode2Activity extends AppCompatActivity {
private DivaJni djni;
@Override // android.support.v7.app.AppCompatActivity, android.support.v4.app.FragmentActivity, android.support.v4.app.BaseFragmentActivityDonut, android.app.Activity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hardcode2);
this.djni = new DivaJni();
}
public void access(View view) {
EditText hckey = (EditText) findViewById(R.id.hc2Key);
if (this.djni.access(hckey.getText().toString()) != 0) {
Toast.makeText(this, "Access granted! See you on the other side :)", 0).show();
} else {
Toast.makeText(this, "Access denied! See you in hell :D", 0).show();
}
}
}El código de la clase DivaJni es el siguiente
java
public class DivaJni {
private static final String soName = "divajni";
public native int access(String str);
public native int initiateLaunchSequence(String str);
static {
System.loadLibrary(soName);
}
}Es una clase puente hacia una librería nativa .so en C/C++
El .so está en DIVA/Resources/lib/arm64-v8a/libdivajni.so
Lo subimos a dogbolt.org

La función que nos interesa es Java_jakhar_aseem_diva_DivaJni_access que contiene el vendor key en texto plano:
c
bool Java_jakhar_aseem_diva_DivaJni_access(long *param_1,undefined8 param_2,undefined8 param_3)
{
int iVar1;
char *__s2;
__s2 = (char *)(**(code **)(*param_1 + 0x548))(param_1,param_3,0);
iVar1 = strncmp("olsdfgad;lh",__s2,0xb);
return iVar1 == 0;
}