-
카테고리
-
세부 분야
보안
-
해결 여부
미해결
두가지 함수가 들어간 프리다 스크립트 작성 질문
20.08.14 11:29 작성 조회수 294
0
자바스크립트 파일은 프리다에 딱 한개 밖에 로드할 수 없는것 같은데, 만약에 두개의 함수 - 예를 들어서 ssl pinning 이랑 root detection 두가지 코드를 bypass 하고자 한다면요. 어떻게 두가지 함수를 한개의 프리다 자바스크립트 코드에 작성해야 하나요? 샘플코드를 좀 보여주시면 너무 너무 좋겠습니다. (죄송합니다 제가 자바스크립트에 서툴러서 한참동안 혼자 애쓰다가 결국 막혔습니다)
답변을 작성해보세요.
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
답변 3