지난 글에서는 앱실행 시 수행되는 루팅 탐지를 우회했었다.
이번 글에서는 루팅 탐지 이후, 텍스트 입력에 올바를 값을 입력해서 우회해보자.
다음은 비밀번호 입력 및 검증 부분에 해당하는 함수이다.
findViewById로 가져온 텍스트를 a클래스 a함수에 넣어주면 된다.
가져올 텍스트는 내가 입력해주는 값이므로, 봐야할 것은 하나(a클래스의 a함수)이다.
a 클래스의 a 함수는 다음과 같다.
a함수의 동작
1단계) base64로 인코딩된 값을 base64로 디코딩하여 var1에 저장
2단계) a.a.a(b("무슨 문자열"), 1단계에서 입력한 문자열)
2단꼐에서 오류가 나지 않고, 해당 값의 리턴 값이 참이면 로그인 성공이다.
try문 내에 있는 sg.~의 동작을 분석해보자.
11번째 줄에서 사용된 a함수는 아래와 같다.
b의 리턴값과, 위의 1단계에서 담아준 문자열을 갖고 동작을 수행한다.
a함수의 매개변수로 들어가는 b함수는 다음과 같다.
그.런.데. 현재 우리는 frida를 이용해서, 함수를 후킹할 수 있다.
풀이 단계 1) 저 값들을 계산한 후의 결과로, 참 거짓 판별의 기준이 되는 var1의 값을 출력해주면, a.a.a함수 내에 넣어줘야할 값을 알 수 있다. 그럼 '그 값' == 'b함수에 우리가 입력해준 값을 넣어준 후의 리턴 값'을 알 수 있다.
풀이 단계 2) 그럼 b의 값을 반대로 수행하는 코드를 작성해서 돌려주면 우리가 입력해줘야하는 정답 문자열이 출력된다.
풀이단계 1) 코드작성
중간에 오타가 있어서 아래의 오류가 나왔고, 제대로 고쳐주면 아래의 터미널 창애 "[*] Exit Bypass"가 출력되고, 인증이 우회된다.
'security > reverse engineering' 카테고리의 다른 글
[악성 앱 분석] InsecureBankv2 분석 (0) | 2021.10.28 |
---|---|
[악성 앱 분석] InsecureBankv2 분석 과정 (0) | 2021.10.28 |
[Frida] 안드로이드 앱의 루팅 탐지 우회 (0) | 2021.10.05 |
[Frida] Frida 설치 (0) | 2021.10.04 |
[Reversing] drozer 사용 (0) | 2021.09.26 |