
디버깅 C 언어 코드를 디버깅하는 과정은 코드 내에 발생하는 오류나 버그를 찾아내고 수정하는 과정을 자세히 보여주며 디버깅은 프로그램이 원하는 대로 동작하지 않을 때 유용하며, 이를 통해 코드의 동작을 분석하고 수정할 수 있다. 아래는 C 언어 코드를 디버깅하는 과정과 예시를 설명한 것이다. 디버깅 과정: 버그 발견: 먼저 프로그램이 원하는 대로 동작하지 않는 부분을 발견한다. 이는 예상치 못한 동작, 오류 메시지, 크래시 등으로 나타날 수 있다. 버그 재현: 버그를 재현하기 위해 조건을 특정하거나 입력을 조작한다. 버그가 발생하는 조건을 명확히 이해하는 것이 중요하다. 디버깅 환경 설정: 코드를 실행하면서 디버깅을 도와주는 도구를 사용하기 위해 디버거를 활성화한다. 대표적인 C 언어 디버거로는 GDB가..

개요 **대응방법** 0. AndroidManifest.xml 의 부분에 android:debuggable 값을 true/false로 설정 1. 디버깅 비활성화 2. 디버깅 시 사용되는 ptrace 선점 안티디버깅 3. 디버깅 시 발생되는 SIGTRAP 시그널 무시 4. ppid를 확인하여 앱을 실행 시킨 프로세스가 디버깅툴(GDB or LLDB)인지 확인 5."/proc/self/status" 파일 내용 중 TracerPid 값 확인 **우회** 디버깅 탐지 기능 취약점은 앱이 동작할 때 동적 디버깅 도구로 디버깅 가능 여부에 따라 취약한지 결정되는데 LLDB나 GDB, IDA와 같은 동적 디버깅 도구로 앱에 attach을 때 디버깅이 가능하면 취약한 것이다. 공격자는 애플리케이션 동적 디버깅을 통하여..