모바일해킹(2)

Jang Seok Woo·2020년 10월 22일
0

보안

목록 보기
18/19

모바일해킹2

Uncrackable -level1

개발환경 : android, JEB2

Uncrackable1 (2)

이번엔 uncrackable1의 secretkey 입력을 우회해 보도록 하자

다음과 같이 secret string을 입력하라고 한다.

캡처가 자꾸 안되고 팝업창이 사라져서 다음과 같이 폰 자체를 사진찍었다.

입력 값이 틀리면 That’s not it. Try again. 이라는 문구가 나온다.

그럼 이제 JEB로 소스코드를 보도록 하자.

If(a.a(v4)) 로직을 통해 success 혹은 nope…로 나뉜다.

자 그럼 a.a(v4)를 보도록 하자

sg.vantagepoint.a.a.a(a.b(v0), v1); 이라는 함수의 결과 문자열을 v0_2에 저장하고 문자열 비교 equals 를 사용하여 true / false 값을 리턴한다

이번엔 sg.vantagepoint.a.a.a(a.b(v0), v1);를 찾아보도록 하자

a.b()에 8d127684cbc37c17616d806cf50473cc 문자열을 넣고

바이트 쉬프트도 하고 덧셈도 하고

AES 암호화 알고리즘을 적용하는 듯 보인다.

그럼 어떻게 하면 우회가 가능할까

위 암호화 알고리즘을 전부 따라서 역으로 복호화하고 계산해보는 것도 도움이 되겠지만 쉬운 방법은 아마도

앞서 exit함수를 우회하듯이 string.equals() 함수의 리턴 값을 무조건 true로 hooking하면 될 것이다. 한 번 시도해 보도록 하자

Java.perform(function () {
send("hooking start");

var sysexit = Java.use("java.lang.System");
sysexit.exit.overload("int").implementation = function(var_0) {
    send("java.langSystem.exit (I) V");
};

var aa = Java.use("sg.vantagepoint.uncrackable1.a");
aa.a.implementation = function(arg1){
return true;
}

});

이 부분에서 지난번 바로 종료되는 팝업창 우회 말고 var aa 부분을 자세히 보면

Sg.vantagepoint.uncrackable1.a 에서

a.implementation a 함수가 작동하면~ hooking해서 function(arg1) 함수를 대신 작동시켜 리턴 값을 true로 변조한다.

성공하였다!

profile
https://github.com/jsw4215

0개의 댓글