본문 바로가기

모바일

(25)
Frida : 쓸만한 스크립트 모음 클래스 추출 import frida, sys def on_message(message, data): if message['type'] == 'send': print("[*] {0}".format(message['payload'])) else: print(message) PACKAGE_NAME = sys.argv[1] jscode = #""" Java.perform(function(){ var pattern = #\""""+sys.argv[2]+"""\" Java.enumerateLoadedClasses({ onMatch:function(aClass) { if (aClass.match(pattern)) { console.log(aClass); } }, onComplete: function() {} }); ..
안드로이드 쉘 스크립트 : 작성방법 안드로이드에서 스크립트 작성 안드로이드에서는 기본적으로 vi 명령어가 없기 때문에 외부에서 쉘스크립트를 작성 후 adb push 로 올려야 한다. 외부에서 작성 후 업로드하고 스크립트를 실행하려하면 쉘이 파일이나 디렉터리를 찾을 수 없다고 하는 경우가 있다. 1) 외부에서 작성 후 push 에러를 발생시켜보면 sh 프로그램이 /system/bin/sh 위치에 있는걸 확인할 수 있는데 그에 맞춰서 첫줄을 #!/system/bin/sh 로 작성해야 한다. 또한 윈도우(CRLF)와 리눅스(LF)의 개행문자가 다르기 때문에 에디터에서 작성할 때 변경해줘야 한다. (맥은 CR) 2) 내부에서 작성 cat 명령어와 Redirect를 통해 vi처럼 사용할 수 있다. # cat > test.sh 명령어를 사용하면 te..
Frida : 앱에 정의된 클래스, 호출된 메소드 출력 enumerateLoadedClasses 앱 실행 중 로드된 클래스를 전부 출력하는 함수. 결과값을 모두 출력하면 로드되는 안드로이드 내장 클래스까지 전부 출력하기 때문에 보기 불편하다. 실행 패키지의 내장 클래스만 추출. App Id는 2번째, 패키지명에 포함되는 단어는 3번째 인자로 입력하면 된다. 여러개의 단어를 입력받을 수 있도록 | 로 스플릿 한뒤 for문으로 정규식 규칙을 생성한다. frida-ps 의결과에서 나오는 App Id 값과 패키지명은 다를 수 있다. PACKAGE_NAME = sys.argv[1] jscode= """ Java.perform(function(){ var pattern = \""""+sys.argv[2]+"""\"; var pattern_list = pattern.sp..
smali : 변조 시 삽입할 수 있는 간단한 코드 1. so 라이브러리 로드 const-string v0, "so_file_name" invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V 2. 로그 출력 .local v0, "Log":Ljava/lang/String; const-string v1, "hack" //출력할 문자열 혹은 레지스터 invoke-static {v1, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I 3. sleep const-wide/16 v2, 0xa // 0xa = 10 invoke-static {v2, v3}, Ljava/lang/Thread;->sleep(J)V 4. 토스트 메시..
Frida : 기본 사용법 준비 easy_install-3.7 를 이용해서 frida, frida-tools 설치 frida 버전 && 기기의 아키텍쳐 버전에 맞는 frida-server 다운로드 및 기기 내부로 복사 > frida.exe --version > adb shell getprop ro.product.cpu.abi 버전 arm 32bit arm 64bit x86 x86-64 MEMU 4.4 O MEMU 5.1 O MEMU 7.1 NOX 5.1.1 O NOX 기기에서 frida-server 권한을 777로 변경 후 실행하고 frida-ps 를 이용해 연결됐는지 확인한다. 프로세스 리스트가 출력되면 연결 완료 > frida-ps.exe -U > frida-ps.exe -D 192.168.111.222:5555 (원격) > ..
Frida : 안티디버깅 우회 ptrace lib.so에서 export하고 리눅스, 유닉스 환경에서 프로세스 디버깅에 사용되는 함수이다. (gdb도 ptrace 이용함) ptrace라는 이름의 26번 커널 시스템콜이 내부적으로 사용된다. # cat /usr/include/asm/unistd.h | grep ptrace #define __NR_ptrace 26 ptrace(PTRACE_ATTACH, ... ); // process에 Attach해서 작업. Dettach 하기 전까진 타겟은 STOP 상태이다. ptrace(PTRACE_GETREGS, ... ); // 대상 process의 레지스터 목록 가져오기 return 값은 ptrace(PTRACE_PEEKDATA, ... ); // 데이터 쓰기 (레지스터 크기만큼씩 읽고 쓰기가 가..
프로세스간 통신 https://androidyongyong.tistory.com/8
Build.prop https://blog.neonkid.xyz/6 Build.prop 주무르기 (삼성 갤럭시S2) ※ 이 내용은 안드로이드 디바이스 내에서도 루팅 (최고 권한 습득)을 필요로 하는 글입니다. 루팅에 대한 지식이 전혀 없으신 분이나 처음 접하시는 분들은 이 포스트에 있는 내용을 절대 따라하지 마세요. 따라.. blog.neonkid.xyz NOX Android 5 /system/build.prop # begin build properties # autogenerated by buildinfo.sh ro.build.id=LYZ28N ro.build.display.id=A5CN51C ro.build.version.incremental=500190710 ro.build.version.sdk=22 ro.build...