From d7f2db878049d56ffa6d6e639ba0bcdfeccdf9a5 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 31 Oct 2024 18:11:10 +0300 Subject: [PATCH] feat: mvp --- 08-debugging/test.c | 25 +++++++++++++------------ 08-debugging/testee.asm | 3 ++- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/08-debugging/test.c b/08-debugging/test.c index be8551c..65de575 100644 --- a/08-debugging/test.c +++ b/08-debugging/test.c @@ -14,9 +14,7 @@ struct user_regs_struct regs; void continue_execution(pid_t pid) { ptrace(PTRACE_CONT, pid, DONT_CARE, DONT_CARE); - int wait_status; - int options = 0; - waitpid(pid, &wait_status, options); + waitpid(pid, &stats, 0); return; } @@ -30,6 +28,7 @@ void print_rax(pid_t pid) void step(pid_t pid) { ptrace(PTRACE_SINGLESTEP, pid, DONT_CARE, DONT_CARE); + waitpid(pid, &stats, 0); return; } @@ -49,16 +48,18 @@ int main() { char buff; printf(" -- parrent\n"); + continue_execution(pid); // to start app continue_execution(pid); - do { - waitpid(pid, &stats, 0); - printf("stats - %d", stats); - print_rax(pid); - ptrace(PTRACE_SINGLESTEP, pid, DONT_CARE, DONT_CARE); - printf("enter any: "); - read(0, &buff, 1); - printf("\n"); - } while(stats); + if (stats & SIGTRAP) + { + while (stats != 0) + { + read(0, &buff, 1); + print_rax(pid); + step(pid); + } + } + printf("____AFTER_TRACE_PARRENT____\n"); } return 0; diff --git a/08-debugging/testee.asm b/08-debugging/testee.asm index e074aea..a6f92de 100644 --- a/08-debugging/testee.asm +++ b/08-debugging/testee.asm @@ -8,7 +8,7 @@ section .text _start: xor rax, rax, add rax, 1 - int3 + ;int3 add rax, 12 ;int3 mov rax, 33 @@ -19,6 +19,7 @@ _start: mov rsi, msg mov rdx, msg_len syscall + int3 mov rax, 60 mov rdi, 0