해당 앱을 실행하면 루팅이 탐지되었다는 경고와 함께 OK를 누르면 앱이 종료된다.
해당 부분의 경우 uncrackable1과 동일한 방법으로 해결해주면 된다.
자세한 내용은 아래 게시글을 참고하도록 하자.
그 후 String 값을 입력해야 한다.
verify 함수를 확인
79번째 줄을 보면 if문을 사용하여 조건을 만족하면 "Success!"를 출력한다.
아래 코드인 AsyncTask를 보면 70번째 줄에 this.m에 CodeCheck() 클래스가 지정되어 있는 것을 확인할 수 있다.
this.m.a(obj)를 알기 위해 CodeCheck로 이동해보면 native 함수에서 확인해야 한다.
이를 해결하기 위해 apk 파일을 decompile 했다.
그리고 앱 후킹을 할 대상 안드로이드 os 버전을 찾기 위해 명령어를 입력합니다.
adb shell getprop ro.product.cpu.abi
해당 폴더의 libfoo.so 파일을 열어준다.
CodeCheck_bar 부분을 확인
해당 코드에서 12번째 줄을 보면 "Thanks for all the fish"라고 하드코딩이 되어 나와있다.
이를 입력해주면 문제가 풀리게 된다.
+하드코딩 되어 있는 방식이 아닌 다른 방식을 이용해자.
onLeave의 ret을 1로 고정
console.log("Script loaded successfully ");
Java.perform(function x() {
console.log("Inside java perform function");
var my_class = Java.use("sg.vantagepoint.a.b");
my_class.a.implementation = function (args) {
console.log("aaa");
return false;
}
my_class.b.implementation = function (args) {
console.log("bbb");
return false;
}
my_class.c.implementation = function (args) {
console.log("ccc");
return false;
};
console.log("[+] Hooking calls to System.exit");
var exit = Java.use("java.lang.System");
exit.exit.implementation = function(){
console.log("[+] Sysetm.exit called");
}
Interceptor.attach(
Module.findExportByName("libfoo.so", "Java_sg_vantagepoint_uncrackable2_CodeCheck_bar"),{
onEnter: function (args){
console.log("CodeCheck");
},
onLeave: function(ret){
ret.replace(1);
}
}
);
});
'Study > App' 카테고리의 다른 글
[App]Uncrackable3 (0) | 2022.10.30 |
---|---|
[App]Fridalab 7 (0) | 2022.10.20 |
[App]Fridalab 5 (0) | 2022.10.20 |
[App]Fridalab 4 (0) | 2022.10.20 |
[App]Fridalab 3 (0) | 2022.10.20 |