해킹공주의 일상
[FridaLab] 2번 문제풀이 본문
1. 문제 파악
chall02() 실행시키란다
달려라 챌2야
2. 문제풀이
- 정말 친절하게두 jadx에서 함수 풀경로를 알려준다... 친절한 제덱스쿤
- 그냥 꺼내서 쓰려니 에러난다.. 대충 인스턴스 안만들고 인스턴스 객체를 부르지 말란다
- 확인해보니 이렇게 static 함수가 아니라 인스턴스화 된 객체의 경우에는 선언을 먼저 해주고 써야한다구한다.
- 인스턴스 객체를 쓸 때에는 Java.use 대신 Java.choose를 사용한다. 객체를 선택해서 match 할때 변수에 담아서 인스턴스를 생성해주고, 거기에 있는 함수를 강제 호출하면 된다.
//fridalab.js
setImmediate(function(){
Java.perform(function(){
var main; // MainActivity를 담을 main 변수 선언
Java.choose('uk.rossmarks.fridalab.MainActivity',{
onMatch : function(instance){
main = instance;
},
onComplete : function(){} // 실행된 후
});
main.chall02();
});
});
- 실행! 오류가 나긴하는데... 왜나는지 모르겠지만 일단 성공했다
오류 구문 : TypeError: cannot read property 'chall02' of undefined
+) 아래처럼 새로 변수 할당해서 안주고 그냥 바로 호출하면 오류없이 되긴되는데.. 이상하게 실행시켰을때 바로 안뜨고 실행시킨 다음에 빨간 네모 코드를 삽입했을때 성공한다.. 이유를 찾아봐야게따
//fridalab.js
setImmediate(function(){
Java.perform(function() {
Java.choose("uk.rossmarks.fridalab.MainActivity", {
onMatch: function(chall_02) {
chall_02.chall02();
},
onComplete: function() {
console.log("call chall_02 instance method");
}
});
});
});
'사이드 프로젝트 > CTF & 워게임' 카테고리의 다른 글
[FridaLab] 7번 문제풀이 (0) | 2022.11.28 |
---|---|
[FridaLab] 5번 문제풀이 (0) | 2022.11.22 |
[FridaLab] 4번 문제풀이 (0) | 2022.11.22 |
[FridaLab] 3번 문제풀이 (0) | 2022.11.22 |
[FridaLab] 1번 문제풀이 (0) | 2022.11.22 |