Linuxias
Developer's Delight
Linuxias
  • Category
    • AI
      • Deep Learning
      • Machine Learning
      • Data Science
      • Framework
      • MLOps
      • Paper-Review
      • Tips
    • Android
      • Kotlin
      • Component
      • Compose
      • Compose UI
      • Material
      • Testing
    • Software Architecture
      • Architecture Pattern
      • Design Pattern
      • Requirement Engineering
    • Linux
      • Compile & Link
      • Command & Tool
      • Container
      • Debugging & Testing
      • Profiling
      • Kernel Analysis
      • Server
      • Shell Script
      • System Programming
    • Language
      • Carbon
      • C,C++
      • C#
      • Java
      • Python
    • ETC
      • Data Struct | Algorithm
      • git
      • Security
    • Book
    • 경제공부
      • 세금
      • 부동산
hELLO · Designed By 정상우.
Linuxias

Developer's Delight

Linux/System Programming

ptrace - process tracer (writing....)

2018. 3. 7. 22:35
반응형

ptrace (process trace)


ptrace에 대해서 간단히 알아보겠습니다.

ptrace() system call은 어느 프로세스(tracer)가 다른 프로세스(tracee)의 실행을 추적 및 제어할 수 있는 기능을 제공합니다. tracer는 tracee의 메모리, 레지스터, 코드, 데이터, 스택, 힙 등의 정보를 확인할 수 있으며 변경도 할 수 있는 기능을 제공하며, 여러분들이 gdb 와 같은 디버거에서 많이 사용하는 중단점을 이용한 디버깅이 가능합니다. 또한 system call 추적 등의 기능을 구현할 때 자주 사용되죠. 리눅스나 유닉스 같은 운영체제에서 ptrace를 이용하여 ELF를 분석, 디버깅 등을 가능케 해주는 좋은 녀석입니다.


ptrace를 사용해 프로세스의 실행 흐름을 제어할 수 있기에 굉장히 다양한 것들을 할 수 있습니다. 메모리를 조작해 볼 수 도 있으며, 바이러스 감염, 분석, 메모리 루트킷, 디버깅 작업 등등에 이르기 까지 많은 것들에 응용이 가능합니다. ptrace 시스템 콜은 사용자 레벨에서 프로세스의 주소 공간에 접근할 수 있는 방법을 제공하고, 여러분들이 사용해 보셨을 gdb, strace, ltrace 등도 ptrace를 사용하였습니다.


그럼 문법과 실제 사용 방법 예시에 대해 좀 더 살펴 보겠습니다.


[SYNOPSIS]

#include <sys/ptrace.h>


long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);


[PARAMETER]

  enum __ptrace_request request

  pid_t pid

  void *addr

  void *data

반응형
저작자표시 (새창열림)

'Linux > System Programming' 카테고리의 다른 글

shared memory with semaphore  (2) 2018.05.19
[ODP] 실행시간 측정하기  (0) 2018.05.17
Elf Header, Program Header, Section Header 얻어오기  (0) 2018.01.02
[socket] socketpair non-blocking read write  (0) 2017.12.30
SocketPair  (0) 2017.12.18
    'Linux/System Programming' 카테고리의 다른 글
    • shared memory with semaphore
    • [ODP] 실행시간 측정하기
    • Elf Header, Program Header, Section Header 얻어오기
    • [socket] socketpair non-blocking read write
    Linuxias
    Linuxias
    I want to be a S/W developer who benefits people.

    티스토리툴바