• 카테고리

    질문 & 답변
  • 세부 분야

    보안

  • 해결 여부

    미해결

-f 옵션으로 실행시 Java.choose가 인스턴스를 잡아내지 못합니다.

20.03.29 01:38 작성 조회수 578

0

강의 FridaLab 예제 문제 2번에서 아래와 같은 스크립트로  frida를 실행하였습니다.

frida -U --no-pause -f uk.rossmarks.fridalab -l test.js

Java.perform(function(){
	var chall02
	Java.choose("uk.rossmarks.fridalab.MainActivity",{
	onMatch : function(instance){
		send("[*] instance : " + instance)
		chall02 = instance
	},
	onComplete : function(){
		send("[*] chall 02 complete!!")
	}
	})
	chall02.chall02()
})
TypeError: cannot read property 'chall02' of undefined
    at [anon] (../../../frida-gum/bindings/gumjs/duktape.c:56618)
    at /ever.js:12
    at frida/node_modules/frida-java-bridge/lib/vm.js:11
    at frida/node_modules/frida-java-bridge/index.js:389
    at frida/node_modules/frida-java-bridge/index.js:374
    at we (frida/node_modules/frida-java-bridge/lib/class-factory.js:598)
    at frida/node_modules/frida-java-bridge/lib/class-factory.js:581

실행 하면 이러한 오류가 발생합니다. 

-f옵션 없이 앱이 실행 중인 상태에서 frida를 실행하면 인스턴스를 잡아 문제는 풀 수 있었으나, -f 옵션에서는 왜 인스턴스를 잡아내지 못하는지 궁금합니다.

답변 1

답변을 작성해보세요.

0

김태영님의 프로필

김태영

2020.03.29

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

아래 에러는 정의되지 않은 chall02 객체의 property를 읽어내거나 method를 호출했을 때 발생합니다.

TypeError: cannot read property 'chall02' of undefined

질문주신 코드와 명령어로 실행한 결과, Process terminated가 발생하여 setImmediate 코드를 추가하여 작성하였습니다.

코드 추가 후 아래 명령어로 진행한 결과 정상 동작하였습니다.

다시 한번 테스트 부탁드립니다. 프리다 버전도 강의와 동일한 12.6.11인지 확인 부탁드립니다.

frida -U --no-pause -f uk.rossmarks.fridalab -l qna1.js

setImmediate(function() {
	Java.perform(function(){
		var chall02
		Java.choose("uk.rossmarks.fridalab.MainActivity",{
		onMatch : function(instance){
			send("[*] instance : " + instance)
			chall02 = instance
		},
		onComplete : function(){
			send("[*] chall 02 complete!!")
		}
		})
		chall02.chall02()
	})
})