LINUX

포스트: 487|아이템:LINUX(477)
Tags

Posts

487 posts

[0410] Slab Memory Corruption Case Study#2 - 디버깅

Guillermo Austin Kim|2018년 4월 20일

난이도: 하 이제 커널 로그부터 볼게요. 이전과 비슷한 패턴인데 약간 다른 것 같네요.1 [ 2551.510956 / 04-07 15:43:12.844][3] =============================================================================2 [ 2551.510994 / 04-07 15:43:12.844][3] BUG kmalloc-256 (Tainted: G W ): Invalid object pointer 0xe216ce103 [ 2551.511015 / 04-07 15:43:12.844][3] -----------------------------------------------------------------------

[Linux][Kernel] 슬랩 메모리: kfree 소개

Guillermo Austin Kim|2018년 4월 10일

이번에는 kfree에 대해서 알아봅니다. 이번에도 패치 코드를 하나 작성할게요. 이번에는 kmalloc 함수로 메모리를 할당 후 kfree 함수를 호출해서 메모리를 해제합니다. 그리고 바로 커널 크래시를 유발하죠. 커널 크래시가 발생하면 코어 덤프(vmcore)가 생깁니다. 이 파일을 Trace32로 올려서 메모리 해제 시 어떤 동작을 하는 지 상세히 알아 보려고 하거든요. 우선 할당된 메모리 주소는 0xE7AE1300입니다.(static u32 *) austin_debug_data = 0xE7AE1300 0xE7AE1300 메모리 공간은 어떤 값들로 구성됐는지 알아볼까요?_____address|_data________|value_____________|symbolNSD:E7AE1300|6B 6B 6B

script - 리눅스에서 터미널창 작업 내용을 파일로 저장(갈무리)하기

반달가면|2018년 4월 10일

리눅스에서 터미널창에서 작업한 내용(명령어 입력, 결과 출력 등)을 파일로 저장(갈무리)하고 싶을 경우, script를 이용하면 되겠다. 아래의 예시를 보자. # 터미널창 작업 내용을 파일 terminal_log.txt 파일에 갈무리 script terminal_log.txt Script started, file is terminal_log.txt 작업을 마치고 갈무리를 중단하려면 컨트롤(ctrl) + d 키를 누르거나, 터미널창에서 exit라고 입력하면 된다. # 갈무리 종료 exit Script done, file is terminal_log.txt 이전에 저장했던 파일에 덧붙여서 저장(append)하고 싶을 경우에는 -a 옵션을 사용한다. # 터미널창 갈무리 시작, t

[Linux][Kernel] 슬랩 메모리: kmalloc 소개

Guillermo Austin Kim|2018년 4월 9일

리눅스 커널에서 메모리란 소리만 나와도 공포에 질리는 분들이 있습니다. 예전에 저도 그랬죠. 스타크래프트에서 테란 조이기를 당할 때와 비슷한 느낌이었죠. 정말 갑갑했죠. 메모리풀, vmalloc, 슬랩 메모리, 하이 메모리 등등 용어를 듣다 보면 뇌정지가 올 때가 있습니다. 그런데 나중에 깨닫게 된 사실은 리눅스 커널에서 메모리를 제대로 이해하는 개발자가 매우 적다는 것이었습니다. 그래서 조금 위안을 가졌죠. 리눅스 커널 메모리 시스템을 이해하려고 리눅스 커널 코드를 열어 보는 분들이 있습니다. 이것은 정말 옵져버 없이 럴커 밭에 달려드는 질럿과 같습니다. 절대 이렇게 분석하면 포기할 수 밖에 없습니다. 그 이유는 리눅스 커널 메모리 관련 코드가 정말 어렵거든요. 그럼 어떻게 리눅스 커널 메모리 시스템을