안드로이드 앱이 디바이스의 루팅 여부를 감지하여 동작을 제한하거나 종료하는 기능을 무력화하는 기술입니다. 이는 프리다(Frida)와 같은 동적 분석 도구를 사용하여 앱의 루팅 탐지 로직을 수정하거나 후외하는 과정을 포함합니다, 이번 포스팅에서는 UnCrackable-Level1.apk 앱의 루팅 탐지 기능을 우회하여 앱 종료를 방지하는 방법을 알아보겠습니다.
루팅 탐지 로직을 분석하기 위해 UnCrackable-Level1.apk를 jadx-gui로 열어 내부 코드를 살펴보겠습니다.
protected void onCreate(Bundle bundle) {
if (c.a() || c.b() || c.c()) {
a("Root detected!");
}
private void a(String str) {
AlertDialog create = new AlertDialog.Builder(this).create();
create.setTitle(str);
create.setMessage("This is unacceptable. The app is now going to exit.");
create.setButton(-3, "OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
System.exit(0);
}
});
}
루팅 탐지로 인한 앱 종료를 방지하기 위해 츠리다 스크립트를 작성하겠습니다. 두 가지 접근법을 시도한 과정을 설명합니다.
setImmediate(function() {
Java.perform(function() {
var exit_pass = Java.use("android.content.DialogInterface.OnClickListener");
exit_pass.onClick.implementation = function(arg, arg2) {
console.log("[*] pass");
};
});
});
setImmediate(function() {
Java.perform(function() {
var exit_pass = Java.use("java.lang.System");
exit_pass.exit.implementation = function(arg) {
console.log("[*] pass");
};
});
});
이번 포스팅에서는 UnCrakable-Level1.apk의 루팅 탐지 기능을 프리다를 사용해 우회하는 방법을 배웠습니다. 첫 번째 시도에서 onClickListener 후킹이 실패했으나, System.exit()를 후킹하여 앱 종료를 방지하는 두 번째 접근법으로 문제를 해결했습니다.
로그인 우회 (0) | 2025.04.22 |
---|---|
암호 복호화 (0) | 2025.04.20 |
FridaLab_08 (0) | 2025.04.18 |
FridaLab_07 (1) | 2025.04.17 |
FridaLab_06 (1) | 2025.04.17 |