본문 바로가기

Mobile/Android

[연습1] 루팅 탐지(exec 방식) 을 Frida를 사용하여 우회.


[1. 클래스 호출을 통한 우회]


대상코드



package tuto.knowryu.tutorial;

import android.content.DialogInterface;
import android.os.Process;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
boolean rst = false;
setContentView(R.layout.activity_main);
/*
try{
Runtime.getRuntime().exec("su");
rst = true;
}catch(Exception e){
rst = false;
}
*/
}

public void RootClick(View v){
boolean rst = false;
TextView rootresult = (TextView) findViewById(R.id.rootresult);
try{
Runtime.getRuntime().exec("su");
rst = true;
}catch(Exception e){
Log.d("Rooting device",e.toString());
rst = false;
}
if(rst){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this);
alertDialogBuilder.setTitle("경고");
alertDialogBuilder.setMessage("루팅된 단말에서는 사용하실수없습니다.");
alertDialogBuilder.setPositiveButton("종료", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(),"종료됩니다.",Toast.LENGTH_LONG).show();
int pid = Process.myPid();
Process.killProcess(pid);
}
});
//메시지 박스 추가 필요
alertDialogBuilder.show();
}
rootresult.setText(String.valueOf(rst));
}
}


RootClick 이라는 버튼을 선택하면 Runtime.getRuntime().exec 를 사용하여 su 명령어를 호출하게 된다.


실행화면은 다음과 같다.



버튼을 누른 후 이미지는 다음과 같다.





사용할 프리다 코드의 기본 템플릿은 다음과 같다.





'Mobile > Android' 카테고리의 다른 글

[연습3]JNI 디버깅  (0) 2018.12.05
[연습1] 루팅 탐지(exec 방식)  (0) 2018.11.12