Notice
Recent Posts
Recent Comments
Link
투케이2K
845. (Android/Java) [기능 보완] isRootingDevice : 휴대폰 루팅 상태 체크 수행 - Runtime exec , rootingFiles check 본문
Android
845. (Android/Java) [기능 보완] isRootingDevice : 휴대폰 루팅 상태 체크 수행 - Runtime exec , rootingFiles check
투케이2K 2024. 8. 22. 20:24[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Java / Kotlin
[소스 코드]
// -----------------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [isRootingDevice] : 휴대폰 루팅 상태 체크 수행
// -----------------------------------------------------------------------------------------
public static Boolean isRootingDevice(Context mContext){
/**
* // -----------------------------------------
* [isRootingDevice 메소드 설명]
* // -----------------------------------------
* 1. 휴대폰 루팅 상태 체크 수행
* // -----------------------------------------
* 2. 호출 방법 :
*
* C_StateCheck.isRootingDevice(A_Main.this);
* // -----------------------------------------
* 3. 리턴 데이터 :
*
* 루팅 인 경우 true / 아니면 false
* // -----------------------------------------
* */
// [리턴 변수 선언 실시]
boolean returnData = false;
// [su 명령이 실행 가능한지 확인]
Process process = null;
try {
// [su 명령 수행]
process = Runtime.getRuntime().exec("su");
// [리턴 변수 삽입]
returnData = true;
} catch (Exception e) {
} finally {
// [Process 종료]
if (process != null) {
try {
process.destroy();
} catch (Exception e) {
}
}
// [내부 프로그램 파일 추가 체크]
try {
if (returnData == false){
String[] rootFilesPath = new String[]{
"/su/bin/su",
"/su/xbin/su",
"/su/bin/.user/.su",
"/system/xbin/su",
"/system/bin/su",
"/system/bin/.user/.su",
"/dev/com.noshufou.android.su",
"/data/data/com.tegrak.lagfix",
"/data/data/eu.chainfire.supersu",
"/data/data/com.noshufou.android.su",
"/data/data/com.jrummy.root.browserfree",
"/system/app/Superuser.apk",
"/data/app/com.tegrak.lagfix.apk",
"/data/app/eu.chainfire.supersu.apk",
"/data/app/com.noshufou.android.su.apk",
"/data/app/com.jrummy.root.browserfree.apk",
"/sbin/su",
"/system/su",
"/system/sbin/su",
"/system/xbin/mu",
"/system/bin/.ext/.su",
"/system/usr/su-backup",
"/system/app/su.apk",
"/system/bin/.ext",
"/system/xbin/.ext",
"/data/local/xbin/su",
"/data/local/bin/su",
"/system/sd/xbin/su",
"/system/bin/failsafe/su",
"/data/local/su"
};
File[] rootingFiles = new File[rootFilesPath.length];
for(int i=0; i < rootFilesPath.length; i++){
rootingFiles[i] = new File(rootFilesPath[i]);
}
for(File rootingFile : rootingFiles){
if(rootingFile != null && rootingFile.exists() && rootingFile.isFile()){
// [리턴 변수 삽입]
returnData = true;
break;
}
}
}
}
catch (Exception ez){
ez.printStackTrace();
}
}
// [로그 출력 실시]
//*
// ===============================================================
S_Log._F_(mContext, "휴대폰 루팅 상태 체크 수행", new String[]{
"RETURN :: " + String.valueOf(returnData)
});
// ===============================================================
// */
// [리턴 반환 실시]
return returnData;
}
[결과 출력]
E///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.javaproject.C_StateCheck.isRootingDevice(C_StateCheck.java:1769)]
I/: ----------------------------------------------------
I/: [LOG :: NOW TIME :: 2024-08-21 16:15:52 수요일]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 휴대폰 루팅 상태 체크 수행]
I/: ----------------------------------------------------
I/: [LOG :: RETURN :: false]
E///===========//: ================================================
반응형
'Android' 카테고리의 다른 글
Comments