Java.perform(function() {
var Reflect = Java.use('android.app.Dialog');
Reflect.dismiss.implementation = function(){
console.log('test');
this.hide()
};
});
Java.perform(function() {
var Activity = Java.use('android.app.Activity');
Activity.finish.overload().implementation = function(){
console.log('finish() blocked : ' + this.getClass().getName());
// 아무것도 안 하고 그냥 무시 -> 원래 finish() 호출 안 함
};
Activity.finish.overload('int').implementation = function(finishTask){
console.log('finish(int) blocked : ' + this.getClass().getName() + ' arg=' + finishTask);
// 마찬가지로 아무것도 안 하고 무시
};
var ActivityMoveBack = Java.use('android.app.Activity');
ActivityMoveBack.moveTaskToBack.overload('boolean').implementation = function(nonRoot){
console.log('moveTaskToBack() blocked : ' + this.getClass().getName());
return false; // 원래 boolean 리턴 -> 실행 안 됐다는 의미로 false
};
var SystemClass = Java.use('java.lang.System');
SystemClass.exit.implementation = function(code){
console.log('System.exit(' + code + ') blocked');
};
var Runtime = Java.use('java.lang.Runtime');
Runtime.exit.implementation = function(code){
console.log('Runtime.exit(' + code + ') blocked');
};
Runtime.halt.implementation = function(code){
console.log('Runtime.halt(' + code + ') blocked');
};
var Process = Java.use('android.os.Process');
Process.killProcess.implementation = function(pid){
console.log('Process.killProcess(' + pid + ') blocked');
};
Process.sendSignal.implementation = function(pid, signal){
console.log('Process.sendSignal(pid=' + pid + ', signal=' + signal + ') blocked');
};
Activity.finishAffinity.implementation = function(){
console.log('finishAffinity() blocked : ' + this.getClass().getName());
};
Activity.finishAndRemoveTask.implementation = function(){
console.log('finishAndRemoveTask() blocked : ' + this.getClass().getName());
};
});