Dreamhack 24

[C++] 가상함수(Virtual Function)

#C++ #가상함수 C++ 에는 가상함수라는 개념이 있다. 같은 OOP 언어인 자바의 가상함수와 유사한데, 기본 클래스에서 가상 함수를 정의하여, 해당 기본 클래스를 상속 받는 파생 클래스가 해당 가상함수를 재정의하여 사용하도록 유도하여 Runtime 에 함수의 다형성을 높이기 위한 문법이라고 한다. 실행타임에 함수를 재정의해서 유용하게 사용할 수 있다는 것은 이해했는데, 의문점이 그냥 가상함수말고 일반적으로 함수 정의한 다음에 상속받은 클래스 단에서 오버라이드(재정의) 하여 사용하면 되지않나??? 라는 의문이었다. 정말 원론(?) 적인 이유는 다른 게시글 에 설명이 되어있었는데 엉뚱한 소멸자를 호출시키지않게 하기 위해서이다. C++ 개발 경험이 많이 없기 때문에 이러한 세세한 부분에 대해서는 생각해볼 ..

<C++ study> 2023.01.02

안드로이드 디컴파일러에서 리소스 찾기

#안드로이드 #리소스 #리버싱 대단한 지식은 아닙니다. 가끔 디컴파일러로 보면 위처럼 string 을 가져오는데 뭔지 궁금할 때가 있다. 함수 원형에 따르면 string 인자가 아닌 int 값이 올 경우 리소스 id 를 가리킨다고 하는데 어디에 있는지 찾아보면 해당 넘버가 있는 곳이 있다. C와 R 사이에 이상한 넘버가 적혀있는 클래스 파일인데, 해당 클래스는 어플에서 쓰는 모든 리소스에 대한 id 가 적혀있는 파일이다. 보통 안드로이드 어플 코딩을 할 때, R 이라는 객체를 선언 후, 참조를 하면서 리소스를 다룬다고 한다. 그래서 이처럼 디컴파일러에서 R 객체를 참조하는 구문을 잘 보여줄 때도 있지만, 맨 처음 사진 처럼 리소스 id 만 딱 보여주고 알아맞혀봐라는 식의 dex 난독화가 걸려있는 경우에는..

반응형