모바일 (25) 썸네일형 리스트형 202004~05 플젝 HGIT 보호되어 있는 글입니다. 안드로이드 프레임워크 : Zygote 보호되어 있는 글입니다. ARM 리버싱 https://azeria-labs.com/writing-arm-assembly-part-1/ 안드로이드 프레임워크 : JNI와 NDK JNI(Java Native Interface) 안드로이드 프레임워크는 자바와 C/C++ 기반 모듈이 계층별로 구성되어있고, 중간에 매개체 역할을 하는 JNI가 존재한다. 예를들어 GPS 정보를 얻기 위해서는 애플리케이션 프레임워크의 Location Manager가 제공하는 자바 API를 호출하면 되는데, 이때 JNI를 통해 내부 GPS 라이브러리(libgps.so)를 호출하여 GPS 디바이스 드라이버에 접근할 수 있게 된다. Java 클래스에서 C로 작성된 라이브러리의 함수를 호출하거나 C에서 Java 클래스 라이브러리를 사용할 때 JNI를 이용해야 한다. 1. 빠른 속도를 요구하는 루틴 작성 시 C로 작성하고 Java에서 호출한다. C로 작성하면 달빅 VM을 거치지않고 CPU가 직접 실행한다. 2. .. 안드로이드 프레임워크 : init 프로세스 init 프로세스 main() 1. 시그널 핸들러 등록 리눅스 프로세스들은 서로 정보를 교환하기 위해 시그널을 주고 받는다. 각 프로세스는 다른 프로세스에서 발생하는 시그널을 처리하기 위해 시그널 핸들러를 등록한다. init 프로세스는 sigaction() 함수를 통해 자신이 생성한 자식 프로세스가 종료될때 발생하는 SIGCHLD 시그널을 처리할 핸들러를 등록하는데, 이때 등록되는 sigchld_handler는 signal_fd 소켓에 SIGCHLD 시그널이 발생했음을 알리는 핸들러이며 시그널에 대한 실제 처리는 init의 마지막단계인 이벤트처리 루프에서 이뤄진다. static int signal_fd = -1; static void sigchld_handler(int s){ write(signal_fd.. 안드로이드 쉘 스크립트 : 쓸만한 스크립트 빠르게 종료되는 프로그램 메모리 맵 추출 # cat /proc/`ps | awk '/com.test.app/{print $2}'`/maps > /data/local/tmp/maps ps 출력을 awk의 입력으로 받고 com.test.app이 포함된 라인의 두번째 필드를 출력하여 cat /proc/[output]/maps 로 넣고 그 출력을 > /data/local/tmp/maps 파일로 저장한다는 뜻 -> com.test.app 앱의 메모리맵을 /data/local/tmp/maps에 저장 *awk usage: awk 'pattern_reg{action}' file #!/system/bin/sh while [ 1 ] ; do tmp=`ps | awk '/com.test.app/{print $2}'` if .. frida : 앱 분석 1. *.*.fido.ha* 보호되어 있는 글입니다. 안드로이드 네이티브 라이브러리 분석 네이티브 라이브러리 함수 찾기 네이티브 라이브러리는 안드로이드 소스코드 상에서 loadLibrary 하는 부분이 존재한다. 이 때 라이브러리의 이름은 lib*.so 이며 jadx 상에서 Resources/lib/[아키텍쳐]/lib*.so 경로에 존재한다. 라이브러리 파일은 컴파일 시 함께 컴파일되지 않고 따로 보관되기 때문에 그냥 apk 파일을 바로 압축해제 시 원본 파일을 확인할 수 있다. 그리고 내부에 있는 함수는 native로 선언 후 자바단에서 호출하게 된다. IDA 프로그램을 통해 열어보면 Function name에 Java_[패키지명]_[클래스]_[함수명] 형식으로 존재한다. 바로위 사진에 있는 bar native함수 같은 경우에는 Java_sg_vantagepoint_uncrackable2_.. 이전 1 2 3 4 다음