• 카테고리

    질문 & 답변
  • 세부 분야

    보안

  • 해결 여부

    미해결

a 메소드 implementation

20.04.03 00:05 작성 조회수 130

0

안녕하세요. 이번강의를 듣던 중 혹시 다른방법도 가능한지 궁금하여 질문 드립니다.

강의에서는 java.lang.System의 exit 메소드를 변경하였는데

MainActivity의 a메소드 자체를 implementation할수는 없는 건지 궁금합니다.

setImmediate(function(){
	Java.perform(function(){
		var main = Java.use("sg.vantagepoint.uncrackable1.MainActivity")
		console.log(main)
		main.a.implementation = function(arg){
			console.log(arg)
			console.log("a method called!")
		}
	})
})

위와 같은 코드 작성후 frida를 실행하여보았지만 작동하지 않았습니다.

프리다 버전은 강의와 동일하게 설정하였습니다.

답변 1

답변을 작성해보세요.

0

김태영님의 프로필

김태영

2020.04.03

안녕하세요. 보안프로젝트 김태영입니다.

.

UnCrackable-Level1 문제 중 루팅 탐지 문제에 대해 질문주셨습니다.

루팅 탐지하는 앱마다 보여지는 행위는 각각 다릅니다. 그 행위에 기반하여 핵심 부분을 판단하여 우회하는 것이 가장 중요합니다.

.

UnCrackable-Level1 루팅 탐지는 OK 버튼을 클릭하면 앱이 종료되는 문제가 발생하였습니다. 앱이 종료되는 데에도 여러 문제가 존재합니다. 해당 문제에서는 디컴파일 도구로 코드를 확인한 결과, System.exit(0); 을 통해 종료되고 있습니다. 그렇기 때문에 java.lang.System의 exit 메소드를 재작성한 것입니다.

.

MainActivity의 a메소드 자체를 implementation하게 될 경우, 루팅 탐지 우회와 무관한 기존 구현된 코드를 정확히 동작하도록 코드로 표현해야 하기 때문에 상당히 복잡해집니다.

따라서, 앱 마다 우회하고 싶은 부분의 핵심을 파악하여 가장 간단한 방법으로 프리다 우회 코드를 작성하시는 것을 추천드립니다!

.

더 나아가 실사용 앱을 바탕으로 분석해서 우회하는 연습을 해보시는 것을 추천드립니다.  실사용 앱에서도 UnCrackable-Level1 문제와 같이 핵심만 파악하여 간단한 코드로 우회가 가능합니다.

참고로, 분석하신 실사용 앱 내용은 외부에 공개하시면 안됩니다.