1619, 1/81 회원가입  로그인  
   해킹잘하고싶다
   http://없음
   간단한 시스템 콜 추적 프로그램 만들기

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=8596 [복사]


#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/user.h>
#include <unistd.h>
#include <stdio.h>

int main() {
    pid_t child;
    long orig_rax;
    struct user_regs_struct regs;
    int status;

    child = fork();
    if (child == 0) {
        // 자식 프로세스: ptrace 감시 허용
        ptrace(PTRACE_TRACEME, 0, NULL, NULL);
        execl("/bin/ls", "ls", NULL);  // ls 명령어 실행
    } else {
        // 부모 프로세스: 자식 프로세스 감시
        wait(&status);
        while (!WIFEXITED(status)) {
            // 시스템 콜 직전 인터셉트
            ptrace(PTRACE_SYSCALL, child, NULL, NULL);
            wait(&status);

            // 레지스터 상태 읽기
            ptrace(PTRACE_GETREGS, child, NULL, ®s);
            printf("시스템 콜 번호: %ld\n", regs.orig_rax);

            // 시스템 콜 직후 인터셉트
            ptrace(PTRACE_SYSCALL, child, NULL, NULL);
            wait(&status);
        }
    }
    return 0;
}




ka0r1@mark:~$ ls
show_process  show_process.c  snap  syscall  syscall.c  test  test.c  venom.exe
ka0r1@mark:~$ ./syscall
시스템 콜 번호: 12
시스템 콜 번호: 9
시스템 콜 번호: 21
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 0
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 9
시스템 콜 번호: 9
시스템 콜 번호: 9
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 0
시스템 콜 번호: 17
시스템 콜 번호: 5
시스템 콜 번호: 17
시스템 콜 번호: 9
시스템 콜 번호: 9
시스템 콜 번호: 9
시스템 콜 번호: 9
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 0
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 9
시스템 콜 번호: 9
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 9
시스템 콜 번호: 158
시스템 콜 번호: 218
시스템 콜 번호: 273
시스템 콜 번호: 334
시스템 콜 번호: 10
시스템 콜 번호: 10
시스템 콜 번호: 10
시스템 콜 번호: 10
시스템 콜 번호: 10
시스템 콜 번호: 302
시스템 콜 번호: 11
시스템 콜 번호: 137
시스템 콜 번호: 137
시스템 콜 번호: 318
시스템 콜 번호: 12
시스템 콜 번호: 12
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 0
시스템 콜 번호: 0
시스템 콜 번호: 3
시스템 콜 번호: 21
시스템 콜 번호: 257
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 0
시스템 콜 번호: 0
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 202
시스템 콜 번호: 257
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 257
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 9
시스템 콜 번호: 3
시스템 콜 번호: 16
시스템 콜 번호: 16
시스템 콜 번호: 257
시스템 콜 번호: 5
시스템 콜 번호: 217
시스템 콜 번호: 217
시스템 콜 번호: 3
시스템 콜 번호: 5
시스템 콜 번호: 1
show_process  show_process.c  snap  syscall  syscall.c  test  test.c  venom.exe
시스템 콜 번호: 3
시스템 콜 번호: 3
시스템 콜 번호: 231
ka0r1@mark:~$







ptrace(2)                                        System Calls Manual                                        ptrace(2)

NAME
       ptrace - process trace

LIBRARY
       Standard C library (libc, -lc)

SYNOPSIS
       #include <sys/ptrace.h>

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

DESCRIPTION
       The ptrace() system call provides a means by which one process (the "tracer") may observe and control the exe‐
       cution  of  another  process  (the "tracee"), and examine and change the tracee's memory and registers.  It is
       primarily used to implement breakpoint debugging and system call tracing.
.
.
.
자세한 설명은 생략한다...
.
.
.







LIBRARY
       Standard C library (libc, -lc)

SYNOPSIS
       #include <unistd.h>

       extern char **environ;

       int execl(const char *pathname, const char *arg, ...
                       /*, (char *) NULL */);
       int execlp(const char *file, const char *arg, ...
                       /*, (char *) NULL */);
       int execle(const char *pathname, const char *arg, ...
                       /*, (char *) NULL, char *const envp[] */);
       int execv(const char *pathname, char *const argv[]);
       int execvp(const char *file, char *const argv[]);
       int execvpe(const char *file, char *const argv[], char *const envp[]);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       execvpe():
           _GNU_SOURCE

DESCRIPTION
       The exec() family of functions replaces the current process image with a new process image.  The functions de‐
       scribed  in  this manual page are layered on top of execve(2).  (See the manual page for execve(2) for further
       details about the replacement of the current process image.)
.
.
.
자세한 설명은 생략한다...
.
.
.







SYNOPSIS
       #include <sys/wait.h>

       pid_t wait(int *_Nullable wstatus);
       pid_t waitpid(pid_t pid, int *_Nullable wstatus, int options);

       int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options);
                       /* This is the glibc and POSIX interface; see
                          NOTES for information on the raw system call. */

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       waitid():
           Since glibc 2.26:
               _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200809L
           glibc 2.25 and earlier:
               _XOPEN_SOURCE
                   || /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
                   || /* glibc <= 2.19: */ _BSD_SOURCE

DESCRIPTION
       All of these system calls are used to wait for state changes in a child of the calling process, and obtain in‐
       formation  about the child whose state has changed.  A state change is considered to be: the child terminated;
       the child was stopped by a signal; or the child was resumed by a signal.  In the case of a  terminated  child,
       performing  a wait allows the system to release the resources associated with the child; if a wait is not per‐
       formed, then the terminated child remains in a "zombie" state (see NOTES below).

.
.
.
자세한 설명은 생략한다...
.
.
.






p.s. 모를 땐 man을 이용하면 됨.

  Hit : 2657     Date : 2025/01/18 09:05



    
     [공지] 강좌를 올리실 때는 말머리를 달아주세요^ㅡ^ [29] 멍멍 02/27 22599
1618   realip_finder(asm ver)     해킹잘하고싶다
02/05 1396
1617   realip_finder     해킹잘하고싶다
02/05 1318
1616   리눅스 커널&운영체제 개론 (1)     해킹잘하고싶다
11/02 1747
1615   stack overflow 사이트 번역     해킹잘하고싶다
07/09 2067
1614   [L.O.B 원정대] - troll     해킹잘하고싶다
07/08 2517
1613   [L.O.B 원정대] - orge     해킹잘하고싶다
07/07 2452
1612   [L.O.B 원정대] - darkelf     해킹잘하고싶다
07/07 2377
1611   [L.O.B 원정대] - wolfman     해킹잘하고싶다
07/03 2342
1610   [L.O.B 원정대] - orc     해킹잘하고싶다
07/03 2070
1609   [L.O.B 원정대] - goblin     해킹잘하고싶다
07/02 2402
1608   [L.O.B 원정대] - cobolt     해킹잘하고싶다
07/02 2671
1607   [L.O.B 원정대] - gremlin     해킹잘하고싶다
07/02 2263
1606   [L.O.B 원정대] - gate     해킹잘하고싶다
07/02 2162
1605   ARP 스푸핑 - Part.1 -     해킹잘하고싶다
04/20 2633
1604   http 스니퍼 구현     해킹잘하고싶다
04/20 2263
1603   pcap으로 패킷 스니퍼 구현하기     해킹잘하고싶다
04/20 2135
1602   해커스쿨 만화의 자동으로 스캔하는 프로그램     해킹잘하고싶다
02/18 2457
1601   시스템 콜 추적 확장판[2]     해킹잘하고싶다
01/19 2680
  간단한 시스템 콜 추적 프로그램 만들기     해킹잘하고싶다
01/18 2656
1 [2][3][4][5][6][7][8][9][10]..[81]

Copyright 1999-2026 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org