

addListenerOnButton() 메소드에서 "남은계단" 과 "현재위치" 의 value를 설정해주는 듯 한 코드를 발견
- aView : 남은계단 (랜덤 값 생성 수 setText() 메소드로 value 설정)
- bView : 현재위치 (setText() 메소드dml 인자로 "0"을 사용해 초기 value(0) 설정)
그 이후 stairs, myStairs 변수를 선언하여 각각 a.View, b.View의 값으로 초기화 해주는 것을 볼 수 있다
변수의 이름과 코드의 구성을 보았을 때, 각각의 변수가 "남은계단"과 "현재위치"를
의미한다는 것이 거의 확실하다
해당 메소드 아래에 비교문을 발견
남은계단 -1 != 현재위치 일 경우 현재위치 값을 +1 해주는 것을 확인할 수 있다
그 아래에 복호화 코드도 확인했지만 해당 코드가 실행되기 위해선 if 문 조건을 만족하지 않아야 한다
import frida, sys
jscode = """
setImmediate(function() {
Java.perform(function() {
console.log("[*] Hooking start()");
var onclick_hooking = Java.use("com.namdaehyeon.findkey3.MainActivity$1");
onclick_hooking.onClick.implementation = function() {
var security_hooking = Java.use("com.namdaehyeon.findkey3.Security");
var decrypt = security_hooking.$new()
console.log(decrypt.DecryptStr("2736f6055dbad2d42f6d5b0135395cb29e0d0
86b67e1fa266a0a0d277f151e5b00000000000000000000"));
}
})
});
"""
process = frida.get_usb_device(1).attach("FindKey3")
print(process)
script = process.create_script(jscode)
script.load()
sys.stdin.read()

키 값이 콘솔에 정상적으로 출력되는 것을 확인할 수 있었다