package com.github.androiddemo.Activity;
import android.content.Intent;
public class FridaActivity10 extends BaseFridaActivity {
@Override // com.github.androiddemo.Activity.BaseFridaActivity
public String getNextCheckTitle() {
return "目前第10關";
}
@Override // com.github.androiddemo.Activity.BaseFridaActivity
public void onCheck() {
if (new Exception().getStackTrace()[1].getMethodName().equals("FridaClick")) {
CheckSuccess();
startActivity(new Intent(this, FridaActivity10.class));
finishActivity(0);
return;
}
super.CheckFailed();
}
}
function printStackTrace() {
Java.perform(function() {
var Exception = Java.use("java.lang.Exception");
var exception = Exception.$new();
var stackTrace = exception.getStackTrace().toString();
console.log("==========================\r\n" + stackTrace.replaceAll(",", "\r\n")
+ "\r\n==========================");
exception.$dispose();
});
}
function hook_FridaActivity10() {
Java.perform(function() {
var FridaActivity10 = Java.use("com.github.androiddemo.Activity.FridaActivity10");
FridaActivity10.onCheck.implementation = function() {
// printStackTrace();
this.onCheck();
console.log("FridaActivity10.onCheck");
}
var Exception = Java.use("java.lang.Exception");
var StackTraceElement = Java.use("java.lang.StackTraceElement");
console.log(StackTraceElement)
StackTraceElement.getMethodName.implementation = function() {
var result = this.getMethodName();
console.log("StackTraceElement.getMethodName:", result);
return result;
}
Exception.getStackTrace.implementation = function() {
console.log("Exception.getStackTrace:");
var stackTrace = this.getStackTrace();
var element = StackTraceElement.$new("frida", "FridaClick", "frida", 1);
console.log(element);
stackTrace[1] = element;
console.log(stackTrace);
return stackTrace;
}
});
}