'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 |
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 |
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 버퍼 종류
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 |
/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와의 페어링용이지만 자체적으로도 작동합니다. |
--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)의 안내에 따라 다음과 같은 목적으로 허용 목록 및 차단 목록을 조정할 수 있습니다.
허용 목록을 추가하면 AID(Android Identification Number)가 보호되어 프로세스의 AID 및 GID가 위반자로 선언되는 것을 방지하며, 차단 목록을 추가하면 최악의 위반자로 간주되기 전에 공간을 확보할 수 있습니다. 잘라내기를 얼마나 적극적으로 할지 선택할 수 있습니다. 또한, 각 로그 버퍼의 가장 오래된 항목에서만 콘텐츠를 삭제하도록 잘라내기를 해제할 수도 있습니다. 따옴표 adb logcat은 따옴표를 유지하지 않으므로 다음과 같은 구문으로 허용 목록과 차단 목록을 지정합니다. |
--pid=<pid> ... | 지정된 PID의 로그만 출력합니다. |
--wrap | 두 시간 동안 절전 모드일 때 또는 버퍼가 래핑하려고 할 때 중 하나가 먼저 발생하는 경우 about-to-wrap wakeup을 제공하여 폴링의 효율성을 높입니다. |
출처 : https://developer.android.com/studio/command-line/logcat?hl=ko
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 |
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 |
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
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 |
#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
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 |
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 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 |
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 |
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
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 |
androidx는 새로운 패키지 구조로서 Android 운영체제에 번들로 제공되고 앱의 APK와 함께 패키지로 제공되는 패키지를 명확하게 보여줍니다. 앞으로 Android *. 패키지 계층 구조는 운영 체제와 함께 제공되는 Android 패키지 용으로 예약됩니다. 다른 패키지들은 새로운 androidx. * 패키지 계층에서 발행 될 것입니다.
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 |