프리다 실무활용 -Level2 암호 복호화

2023. 5. 10. 14:54구축/Mobile Hack

아무거나 입력 후 애러 구문 확인 -> 애러구문 텍스트 검색

 

 

ctrl 누르고 a클릭하면 a들어옴 암호화된 구문 확인

 

 

 

2가지 풀이 방법에 

 

풀이 1.

setImmediate(function(){
	Java.perform(function(){
		var exit_bypass = Java.use("java.lang.System");
		exit_bypass.exit.implementation = function(arg){
			console.log("\n [*] Exit Bypass");
		}
		var trueClass = Java.use("sg.vantagepoint.uncrackable1.a");
		trueClass.a.implementation = function(arg){
			console.log("\n [*]True");
			return true;
		}
	})
})

 

풀이2.

 

a를 ctrl누르고 들어감

다시 a method에 들어감

setImmediate(function(){
	Java.perform(function(){
		var exit_bypass = Java.use("java.lang.System");
		exit_bypass.exit.implementation = function(arg){
			console.log("\n [*] Exit Bypass");
		}
		var decrypteClass = Java.use("sg.vantagepoint.a.a")
		decrypteClass.a.implementation = function(arg1,arg2){ //bArr, bArr2 두개 인자값
			var secret_string = this.a(arg1,arg2); //method 실행을 반환값(secret_string)에 출력
			console.log(secret_string);
			return secret_string;
		}
	})
})

byte가 객체기 때문에 object라고 출력 ->  그럼 배열 안에 있는 값을 확인 하기 위해 코드 수정

 

setImmediate(function(){
	Java.perform(function(){
		var exit_bypass = Java.use("java.lang.System");
		exit_bypass.exit.implementation = function(arg){
			console.log("\n [*] Exit Bypass");
		}
		var decrypteClass = Java.use("sg.vantagepoint.a.a")
		decrypteClass.a.implementation = function(arg1,arg2){
			var secret_string = this.a(arg1,arg2);
			for(var i=0; i<secret_string.length;i++) //배열의 값을 빼오기 위해 반복문 사용 i변수 선언, 0으로 초기화 후 secret_string length를 1씩 늘림
			{
				console.log(secret_string[i]); //배열에서 값을 하나씩 빼옴
			}
			return secret_string;
		}
	})
})

실행 결과 아스키값으로 문자열 확인 (아스키 값을 1:1 매칭 할 수 있지만 그 수가 많아질 수도 있어서 코드 수정으로 확인)

 

setImmediate(function(){
	Java.perform(function(){
		var exit_bypass = Java.use("java.lang.System");
		exit_bypass.exit.implementation = function(arg){
			console.log("\n [*] Exit Bypass");
		}
		var decrypteClass = Java.use("sg.vantagepoint.a.a")
		decrypteClass.a.implementation = function(arg1,arg2){
			var secret_string = this.a(arg1,arg2);
			var secret_S = ''
			for(var i=0; i<secret_string.length;i++){ //배열의 값을 빼오기 위해 반복문 사용 i변수 선언, 0으로 초기화 후 secret_string length를 1씩 늘림
				secret_S += String.fromCharCode(secret_string[i]) // 아스키 값으로 치환
			}
			console.log(secret_S += String.fromCharCode(secret_string[i])); 
			return secret_string;
		}
	})
})

 

코드 확인

 

 

값 입력하면 확인 가능

'구축 > Mobile Hack' 카테고리의 다른 글

apk-tool 설치  (0) 2023.05.16
프리다 실무활용 -Level3-4 로그인 우회 브루트포스  (0) 2023.05.11
Uncrackable -Level1 루팅탐지  (1) 2023.05.10
Frida설치(feat. anaconda)  (0) 2023.05.06