개발/안드로이드 rooting 13

Reversing DexGuard’s String Encryption

Reversing DexGuard’s String Encryption의 변역본입니다. 이 취약점은 개선되었다고 합니다. DexGuard is a commercial tool used for protecting android binaries (APK) mainly from reversing and tampering. It provides features like code obfuscation, class encryption, string encryption, asset/resource encryption, tamper protection, anti-debugger checks, VM/Environment checks, SSL pinning etc. This blog post explains the decr..

루팅 어플 체크

루팅 된 디바이스 탐지하는 방법 중, 루팅 어플 체크하는 방법도 있습니다. 아래와 같이 패키지와, 앱 이름을 확인할 수 있습니다. --참고 https://superwony.tistory.com/16 [안드로이드/Android] 설치된 어플 확인 안녕하세요 요번 포스팅에서는 간단한 사항에 대해 다뤄보도록 하겠습니다. 앱을 개발하다보면 사용자 단말기에 sns등의 타앱 설치 유무를 체크해, 해당 앱을 실행하거나 설치를 유도할 경우가 있습니다. 수정내용.. superwony.tistory.com

root detection in android device

Root Detection in Android device 의 번역본입니다. Root Access is the process of allowing users smartphones, tablets and other devices running the Android mobile operating system to attain privileged control (known as root access). 루트 어세스는 스마트폰의 관리자 권한(루트 엑세스)를 얻는 프로세스입니다. “Rooting” is the process by which one gains access to the administrative commands and functions of an operating system. "루팅"은 운영 체제의..

코드 난독화

코드 난독화에 대해 알아봅니다. 안드로이드 코드 난독화에 대해서는 proguard dexguard 이렇게 2가지가 있습니다. proguard는 무료고 dexguard는 유료인데 당연히 돈 내고 쓰는게 더 좋습니다. 프로가드 같은 경우는 여기( http://apk-deguard.com/ ) 들어가면 복호화 시킬 수 있습니다. 이럴꺼면 왜 쓰는거지..? 하여튼 돈 내고 쓰는 dexgurad 로 컴파일을 하면, 코드를 추적하기 어려워, 복호화 시키기 어렵습니다. ( 이것도 리버싱 하는 방법이 있기는 하네요 - https://ajinabraham.com/blog/reversing-dexguard-string-encryption ) 여하튼 그러면 일단 프로가드를 한번 적용해보겠습니다. 전, 후 비교입니다. 뭔가 ..

후킹(hooking)

루팅 탐지를 우회하는 방법에 대해 알아봅니다. 프로그래머는 디바이스가 루팅되었나 알아보기 위해 다향한 탐지 방법을 적용해놓습니다. ex) "su"탐지, 폴더권한 확인 등 그렇게 이 탐지하는 부분을 찾아서, 값을 가로채서 "이게 루팅된 기기가 아닙니다" 라고 메세지를 던져주면 루팅 우회가 가능합니다. 이 것을 후킹이라고 합니다. 그러면 루팅 탐지하는 부분부터 찾아야겠죠? 그럴러면 코드를 한번 까봐야 합니다. 디컴파일을 통해 코드를 깝니다. (저는 맥이기 때문에 맥에서 까는 방법을 해봅니다.) 일단 2개를 다운받아 주는데 dex2jar - https://sourceforge.net/projects/dex2jar/ JD-GUI - http://java-decompiler.github.io/ dex2jar ->..

루팅 프로세스, 어플 탐지

현재 루팅이 되어있는지 여부는, 루팅 관련 프로세스 존재 여부로 확인할 수 있습니다. Runtime.getRuntime().exex("ps")로 루팅 관련 프로세스들을 확인할 수 있습니다. (ps는 현재 작동하고 있는 프로세스를 보는 명령어입니다.) 또한, 루팅 관련 어플 kongo root, framaroot, one click root 등을 찾아서 탐지할 수도 있는데 아래와 같은 코드로 찾을 수 있습니다.

rooting su

자 일단 "su" 라는 것이 무엇인지 알아보겠습니다. sudo는 root가 아닌 사용자가 root권한으로 무엇인가를 실행시키는 것입니다. sudo는 리눅스를 다뤄보셨다면 많이 보셨을텐데 그렇다면 su는 무엇일까요? su는 현재 계정에서 root계정으로 전환하는 것입니다. 루팅으로 인해 su가 실행이 되었는데, 이 부분을 탐지해보겠습니다. 루팅을 하면 su라는 파일이 생기는데 이 부분을 탐지하는 방법은 /system/bin/su /system/xbin/su /system/su 와 같은 다양한 경로에 su 라는 파일이 있나 조회해봅니다. 여기 있는 경로 말고도, 의심이 되는 경로들을 일일이 체크하면서 su라는 파일을 찾으면 루팅이 되어 있기 때문에, 이 부분에서 루팅 여부를 확인할 수 있습니다. 자, 그러면..

루팅환경 만들기

데스크탑에서 루팅 환경을 구현해보겠습니다. 루팅 관련 세팅을 하려고 하는데, 그 때 마다 핸드폰을 루팅하는 것은 귀찮고 피곤한 일입니다. 그러면 nox라는 것을 사용하는데 https://kr.bignox.com/ 녹스 앱플레이어 모바일 게임을 키보드와 마우스로? 클릭 한 번으로 가상키보드 실행이 가능하며 PC버전의 게임도 간편하게 체험할 수 있습니다. 키보드와 마우스로 컨트롤하여 뛰는 자에서 나는 자가 되어볼 수 있는 절호의 기회! kr.bignox.com 얘를 데스크탑에서 설치한 후에 오른쪽 톱니바퀴를 누르면 팝업이 띄는데 2번째의 ROOT 부분을 끄기 켜기로 rooting 상태를 정의할 수 있습니다. 그러면 루팅 관련 코딩도 해보겠습니다.