android2022. 11. 3. 22:03

https://source.android.com/docs/core/media

'android' 카테고리의 다른 글

logger size 변경 관련  (0) 2022.10.25
logcat option 활용  (0) 2022.10.25
dumpsys package 참조  (0) 2022.09.11
Android 12 : cfi check fail 회피 방법  (1) 2022.06.30
sendevent로 Linux keyevent 전송 방법  (0) 2022.04.01
Posted by easy16
android2022. 10. 25. 23:22

 

 

 

persist.logd.size.main (Settings app)?

persist.logd.size.system

https://medium.com/@roperluo.me/android-logd-log-principle-4739bc78cb4b

ro.logd.size(BoardConfig.mk)?

logcat size 관련

http://androidxref.com/9.0.0_r3/xref/system/core/liblog/properties.c#600

 

logcat 버퍼 종류

http://egloos.zum.com/furmuwon/v/11335434

'android' 카테고리의 다른 글

android omx IL architecture  (0) 2022.11.03
logcat option 활용  (0) 2022.10.25
dumpsys package 참조  (0) 2022.09.11
Android 12 : cfi check fail 회피 방법  (1) 2022.06.30
sendevent로 Linux keyevent 전송 방법  (0) 2022.04.01
Posted by easy16
android2022. 10. 25. 22:38

 

/system/bin/logcat -v threadtime -f [출력파일명] -r [파일순환할 크기 kbytes] -n [몇개의 파일로] -s [TAG명]:[출력레벨]...

 

ex)

/system/bin/logcat -v threadtime -f /sdcard/logcat -r 10000 -n 10 -s bt_btif:W bt_a2dp:W bt_btif:W;

 

옵션

다음 표는 logcat의 명령줄 옵션을 설명합니다.

옵션설명
-b <buffer> 보기 위한 대체 로그 버퍼를 로드합니다(예: events 또는 radio). main, system  crash 버퍼 세트가 기본적으로 사용됩니다. 대체 로그 버퍼 보기를 참조하세요.
-c, --clear 선택한 버퍼를 지우고(플러시하고) 종료합니다. 기본 버퍼 세트는 main, system, crash입니다. 모든 버퍼를 지우려면 -b all -c를 사용합니다.
-e <expr>, --regex=<expr> 로그 메시지가 <expr>과 일치하는 줄만 출력합니다. 여기서 <expr>은 정규 표현식입니다.
-m <count>, --max-count=<count> <count>개 줄을 출력한 후 종료합니다. --regex와의 페어링용이지만 자체적으로도 작동합니다.
--print --regex  --max-count와 페어링하면 콘텐츠가 정규식 필터를 우회할 수 있지만, 여전히 올바른 일치 숫자에서 중지합니다.
-d 로그를 화면에 덤프하고 종료합니다.
-f <filename> 로그 메시지 출력을 <filename>에 씁니다. 기본값은 stdout입니다.
-g, --buffer-size 지정된 로그 버퍼의 크기를 출력하고 종료합니다.
-n <count> 순환되는 로그의 최대 수를 <count>로 설정합니다. 기본값은 4입니다. -r 옵션이 필요합니다.
-r <kbytes> <kbytes> 출력마다 로그 파일을 순환시킵니다. 기본값은 16입니다. -f 옵션이 필요합니다.
-s 모든 태그의 우선순위를 'silent'로 설정하는 필터 표현식 '*:S'와 동일하며, 콘텐츠를 추가하는 필터 표현식 목록 앞에 두기 위해 사용합니다. 자세한 내용은 로그 출력 필터링 섹션을 참고하세요.
-v <format> 로그 메시지의 출력 형식을 설정합니다. 기본값은 threadtime 형식입니다. 지원되는 형식의 목록은 로그 출력 형식 제어 섹션을 참조하세요.
-D, --dividers 각 로그 버퍼 간의 구분선을 출력합니다.
-c 전체 로그를 플러시하고(지우고) 종료합니다.
-t <count> 가장 최근의 줄 수만 출력합니다. 이 옵션은 -d 기능을 포함합니다.
-t '<time>' 지정된 시간 이후 가장 최근의 줄을 출력합니다. 이 옵션은 -d 기능을 포함합니다. 공백이 있는 매개변수에 따옴표를 사용하는 방법에 관한 자세한 내용은 -P 옵션을 참조하세요.
 
-T <count> 지정된 시간 이후 가장 최근의 줄 수를 출력합니다. 이 옵션은 -d 기능을 포함하지 않습니다.
-T '<time>' 지정된 시간 이후 가장 최근의 줄을 출력합니다. 이 옵션은 -d 기능을 포함하지 않습니다. 공백이 있는 매개변수에 따옴표를 사용하는 방법에 관한 자세한 내용은 -P 옵션을 참조하세요.
 
-L, --last 마지막 재부팅 전에 로그를 덤프합니다.
-B, --binary 로그를 바이너리로 출력합니다.
-S, --statistics 로그 스패머를 식별하고 타겟팅할 수 있도록 통계를 출력에 포함합니다.
-G <size> 로그 링 버퍼의 크기를 설정합니다. K 또는 M을 끝에 추가하여 KB나 MB를 표시합니다.
-p, --prune 다음과 같이 허용 목록과 차단 목록을 출력(읽기)하고 인수를 사용하지 않습니다.
 
-P '<list> ...'
--prune '<list> ...' -P '<allowlist_and_denylist>'
허용 목록과 차단 목록을 작성(설정)하여 특정 목적에 맞게 로깅 콘텐츠를 조정합니다. 허용 목록과 차단 목록 항목의 혼합 콘텐츠를 제공합니다. 여기서 <allowlist> 또는 <denylist>는 UID, UID/PID 또는 PID가 될 수 있습니다. Logcat 통계(logcat -S)의 안내에 따라 다음과 같은 목적으로 허용 목록 및 차단 목록을 조정할 수 있습니다.
  • UID 선택을 통해 특정 로깅 콘텐츠에 가장 긴 수명을 부여합니다.
  • 사용자(UID) 또는 프로세스(PID)가 이러한 리소스를 사용하지 못하도록 하여 로그 콘텐츠의 범위를 늘리므로 진단 중인 문제를 더 잘 파악할 수 있습니다.
기본적으로 로깅 시스템은 로그 통계에서 최악의 위반자를 자동 차단하여 동적으로 새로운 로그 메시지의 공간을 만듭니다. 휴리스틱이 고갈되면 시스템은 가장 오래된 항목을 잘라내어 새 메시지를 위한 공간을 확보합니다.
허용 목록을 추가하면 AID(Android Identification Number)가 보호되어 프로세스의 AID 및 GID가 위반자로 선언되는 것을 방지하며, 차단 목록을 추가하면 최악의 위반자로 간주되기 전에 공간을 확보할 수 있습니다. 잘라내기를 얼마나 적극적으로 할지 선택할 수 있습니다. 또한, 각 로그 버퍼의 가장 오래된 항목에서만 콘텐츠를 삭제하도록 잘라내기를 해제할 수도 있습니다.
따옴표
adb logcat은 따옴표를 유지하지 않으므로 다음과 같은 구문으로 허용 목록과 차단 목록을 지정합니다.
 
다음 예에서는 PID 32676 및 UID 675로 허용 목록을 지정하고, PID 32677 및 UID 897로 차단 목록을 지정합니다. 더 빠른 잘라내기를 위해 차단 목록의 PID 32677에 가중치가 적용됩니다.
 
허용 목록 및 차단 목록에 사용할 수 있는 다른 명령어 변형은 다음과 같습니다.
 
--pid=<pid> ... 지정된 PID의 로그만 출력합니다.
--wrap 두 시간 동안 절전 모드일 때 또는 버퍼가 래핑하려고 할 때 중 하나가 먼저 발생하는 경우 about-to-wrap wakeup을 제공하여 폴링의 효율성을 높입니다.

출처 : https://developer.android.com/studio/command-line/logcat?hl=ko 

'android' 카테고리의 다른 글

android omx IL architecture  (0) 2022.11.03
logger size 변경 관련  (0) 2022.10.25
dumpsys package 참조  (0) 2022.09.11
Android 12 : cfi check fail 회피 방법  (1) 2022.06.30
sendevent로 Linux keyevent 전송 방법  (0) 2022.04.01
Posted by easy16
android2022. 9. 11. 11:29

 

 adb shell dumpsys package <패키지 이름>

 

 

출처 :  http://sunphiz.me/wp/archives/3025

'android' 카테고리의 다른 글

logger size 변경 관련  (0) 2022.10.25
logcat option 활용  (0) 2022.10.25
Android 12 : cfi check fail 회피 방법  (1) 2022.06.30
sendevent로 Linux keyevent 전송 방법  (0) 2022.04.01
RecyclerView  (0) 2022.03.07
Posted by easy16
android2022. 6. 30. 15:16

Android 12 Wifi driver에서 발생한 cfi_check fail 대한 회피 방법

 

결론부터 살펴보면 아래와 같이 cfi crash 발생하는 모듈의 Android.mk 또는 bp

LOCAL_SANITIZE LOCAL_SANITIZE_BLOCKLIST 등록하시면 됩니다.

(bp 경우, 별도의 방법 참조  : https://source.android.com/devices/tech/debug/cfi )

 

//wpa_blacklist.txt

fun:*driver_cmd*

 

 include $(CLEAR_VARS)
 LOCAL_MODULE := wpa_supplicant
+LOCAL_SANITIZE := cfi
+LOCAL_SANITIZE_BLOCKLIST := wpa_blacklist.txt


 include $(CLEAR_VARS)
+LOCAL_SANITIZE := cfi
+LOCAL_SANITIZE_BLOCKLIST := wpa_blacklist.txt
 LOCAL_MODULE := libwpa_hidl

 

실제로 wpa_supplicant libwpa_hidl 사이에서 따로 빌드된 Realtek static library 특정 함수를 호출(indirect call)하면서 발생하는 것으로 추측됩니다.

로그상의 crash로그를 보면 driver_cmd symbol 나타내고 있습니다.

 

따라서 해당 오류를 회피하기 위해 wpa_blacklist driver_cmd 함수에 대한 예외를 등록하면 컴파일 타임에 참조하게 되어 cfi_check 무사히 넘어갈 있습니다.

 

참조:

#Cfi 관련 포스트 1 (취약점에서 어떻게 cfi 동작하는지 + 컴파일 옵션)

https://www.redhat.com/en/blog/fighting-exploits-control-flow-integrity-cfi-clang

#Cfi 관련 포스트 2 (cfi컴파일 옵션에 대한 설명)

https://clang.llvm.org/docs/ControlFlowIntegrity.html#ignorelist

'android' 카테고리의 다른 글

logcat option 활용  (0) 2022.10.25
dumpsys package 참조  (0) 2022.09.11
sendevent로 Linux keyevent 전송 방법  (0) 2022.04.01
RecyclerView  (0) 2022.03.07
Fragment간 데이터 주고 받기  (0) 2022.03.07
Posted by easy16
android2022. 4. 1. 14:11

 

 

 

#1, 먼저 getevent를 이용하여 원하는 디바이스 및 이벤트 정보를 알아냄 


/dev/input/event1: 0001 00f1 00000001
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0001 00f1 00000000
/dev/input/event1: 0000 0000 00000000

 

/dev/input/event1: 0001 00f1 00000001

/dev/input/event1: 0000 0000 00000000

/dev/input/event1: 0001 00f1 00000000

/dev/input/event1: 0000 0000 00000000

 

#2, 얻어진 값을 16진수에서 10진수로 변경 후, sendevent를 사용하여 전송한다.

adb shell sendevent [DEVICE] [TYPE] [CODE] [VALUE]

 

sendevent /dev/input/event1 1 241 1

sendevent /dev/input/event1 0 0 0

sendevent /dev/input/event1 1 241 0

sendevent /dev/input/event1 0 0 0

 

참조 :

https://easy16.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F 

'android' 카테고리의 다른 글

dumpsys package 참조  (0) 2022.09.11
Android 12 : cfi check fail 회피 방법  (1) 2022.06.30
RecyclerView  (0) 2022.03.07
Fragment간 데이터 주고 받기  (0) 2022.03.07
chcon 예제 (change context)  (0) 2021.01.05
Posted by easy16
android2022. 3. 7. 10:22

https://recipes4dev.tistory.com/168

https://4z7l.github.io/2020/09/12/recyclerview.html

https://min-wachya.tistory.com/171

https://codeburst.io/android-swipe-menu-with-recyclerview-8f28a235ff28?gi=e66a737598eb

'android' 카테고리의 다른 글

Android 12 : cfi check fail 회피 방법  (1) 2022.06.30
sendevent로 Linux keyevent 전송 방법  (0) 2022.04.01
Fragment간 데이터 주고 받기  (0) 2022.03.07
chcon 예제 (change context)  (0) 2021.01.05
Android X란?  (0) 2020.07.23
Posted by easy16
android2022. 3. 7. 10:22

https://kadosholy.tistory.com/20

https://kadosholy.tistory.com/26

'android' 카테고리의 다른 글

sendevent로 Linux keyevent 전송 방법  (0) 2022.04.01
RecyclerView  (0) 2022.03.07
chcon 예제 (change context)  (0) 2021.01.05
Android X란?  (0) 2020.07.23
native service를 aidl로 binding  (0) 2020.07.17
Posted by easy16
android2021. 1. 5. 16:05

adb push 후, 파일의 selinux label이 틀어지는 경우가 종종 있다.

아마 vendor 쪽에 파일을 push하면 system_file label이 자동으로 붙기 때문인 것으로 생각된다.

 

어쨌든, 그럴 경우 chcon 이용하여 아래와 같이 label 수정하면 된다.

 

#chcon u:object_r:vendor_file:s0 hello

 

:/vendor/lib/modules # ls -lZ


-rw-r--r-- 1 root root u:object_r:system_file:s0  2565848 2021-01-05 06:48 hello
total 16084
-rw-r--r-- 1 root root u:object_r:system_file:s0  2565848 2021-01-05 06:48 hello
-rw-r--r-- 1 root root u:object_r:vendor_file:s0   103408 2009-01-01 00:00 foo

:/vendor/lib/modules # chcon u:object_r:vendor_file:s0 hello
:/vendor/lib/modules # ls -lZ
total 16084
-rw-r--r-- 1 root root u:object_r:vendor_file:s0  2565848 2021-01-05 06:48 hello
-rw-r--r-- 1 root root u:object_r:vendor_file:s0   103408 2009-01-01 00:00 foo

 

 

 

 

 

'android' 카테고리의 다른 글

RecyclerView  (0) 2022.03.07
Fragment간 데이터 주고 받기  (0) 2022.03.07
Android X란?  (0) 2020.07.23
native service를 aidl로 binding  (0) 2020.07.17
ForegroundService test  (0) 2020.07.08
Posted by easy16
android2020. 7. 23. 12:05

androidx는 새로운 패키지 구조로서 Android 운영체제에 번들로 제공되고 앱의 APK와 함께 패키지로 제공되는 패키지를 명확하게 보여줍니다. 앞으로 Android *. 패키지 계층 구조는 운영 체제와 함께 제공되는 Android 패키지 용으로 예약됩니다. 다른 패키지들은 새로운 androidx. * 패키지 계층에서 발행 될 것입니다.

 

https://www.it-swarm-ko.tech/ko/android/androidx-%eb%9e%80-%eb%ac%b4%ec%97%87%ec%9e%85%eb%8b%88%ea%b9%8c/806037970/

'android' 카테고리의 다른 글

Fragment간 데이터 주고 받기  (0) 2022.03.07
chcon 예제 (change context)  (0) 2021.01.05
native service를 aidl로 binding  (0) 2020.07.17
ForegroundService test  (0) 2020.07.08
wake lock example  (0) 2020.07.03
Posted by easy16