private boolean checkRootMethod1() {
for (String str : new String[]{"/system/app/Superuser.apk", "/sbin/su", "/system/bin/su", "/system/xbin/su", "/data/local/xbin/su", "/data/local/bin/su", "/system/sd/xbin/su", "/system/bin/failsafe/su", "/data/local/su"}) {
if (new File(str).exists()) {
return true;
}
}
return false;
}
exist() -> /apex/com.android.art/lib64/libjavacore.so에서 access()를 호출함
access() 후킹 코드 작성으로 우회 가능
int (*Org_access)(const char* __path, int __mode);
int hook_access(const char* __path, int __mode)
{
register uint64_t result;
__asm volatile ("MOV %0, LR\n" : "=r" (result));
LOG("access path - %s %lx", __path, result);
if (strstr(__path, "su"))
{
return -1;
}
return Org_access(__path, __mode);
}
A64HookFunction((void*)access, (void*)hook_access, (void**)&Org_access);
'Android Linux > Hooking & Injection' 카테고리의 다른 글
(안드로이드) IDA 동적 디버깅 (0) | 2022.06.24 |
---|---|
so injection 성공기 (android 11) (0) | 2021.05.04 |
android so injection 시 주의사항 (0) | 2019.12.11 |