• 카테고리

    질문 & 답변
  • 세부 분야

    보안

  • 해결 여부

    미해결

두가지 함수가 들어간 프리다 스크립트 작성 질문

20.08.14 11:29 작성 조회수 294

0

자바스크립트 파일은 프리다에 딱 한개 밖에 로드할 수 없는것 같은데, 만약에 두개의 함수 - 예를 들어서 ssl pinning 이랑 root detection 두가지 코드를 bypass 하고자 한다면요. 어떻게 두가지 함수를 한개의 프리다 자바스크립트 코드에 작성해야 하나요? 샘플코드를 좀 보여주시면 너무 너무 좋겠습니다. (죄송합니다 제가 자바스크립트에 서툴러서 한참동안 혼자 애쓰다가 결국 막혔습니다)

답변 3

·

답변을 작성해보세요.

1

정영선님의 프로필

정영선

질문자

2020.08.17

거의 즉답 수준으로 빠른 답변 너무 감사드립니다. 보여주신 예문을 참고해서 파이썬 바인딩을 만들수 있었습니다. 다른 방법도 있는지 찾아보다가 frida-compile 을 사용하여 두가지 스크립트를 하나로 묶을 수도 있었습니다. 감사합니다. 

1

김태영님의 프로필

김태영

2020.08.14

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

.

두 가지 기능을 우회하기 위해선 아래와 같이 jscode에 작성 가능합니다.

아래 코드는 "FRIDA 활용-루팅 탐지 우회"와 "FRIDA 활용-암호 복호화" 기능을 한번에 묶은 것입니다. Java.perform()안에 각 기능을 하는 코드를 추가해주시면 사용 가능합니다.

.

추가적인 질문이 있으시다면 언제든 해주세요. 감사합니다.

import frida, sys

jscode= """
setImmediate(function(){
	Java.perform(function() {
		console.log("[*] Hooking System.exit()");
		var exitBypass = Java.use("java.lang.System");
		exitBypass.exit.implementation = function () {
			console.log("[*] Hooking Success");
		}
    
		console.log("[*] Hooking Decrypted Secret");
		var decrypteClass = Java.use("sg.vantagepoint.a.a");
		decrypteClass.a.overload('[B','[B').implementation = function(arg1, arg2) {
			retval = this.a(arg1, arg2);
			secret = ''
			for(i=0; i<retval.length; i++) {
				secret += String.fromCharCode(retval[i]);
			}
			console.log("[*] Decrypted : " + secret);
			return retval;
		}
	})
})
"""
session = frida.get_usb_device().attach("owasp.mstg.uncrackable1")
script = session.create_script(jscode)
script.load()
sys.stdin.read()

0

김태영님의 프로필

김태영

2020.08.17

frida-compile 이란 것도 있군요. 저도 하나 배워가네요. 알려주셔서 감사합니다.!