есть код
static unsigned char shellcode[32] = {
    0x31, 0xFF, 0xB8, 0x0C, 0x00, 0x00, 0x00, 0x0F, 0x05, 0x48, 0x8D,
    0xB8, 0x00, 0x10, 0x00, 0x00, 0xB8, 0x0C, 0x00, 0x00, 0x00, 0x0F,
    0x05, 0x48, 0x2D, 0x00, 0x10, 0x00, 0x00, 0xCC, 0x90, 0x90
};
    
int main(int argc, char * argv[]) {
    struct user_regs_struct regs;
    pid_t pid = (pid_t)atoi(argv[1]);
    if (ptrace(PTRACE_ATTACH, pid, NULL, NULL) < 0)
        return 1; 
    if (wait(NULL) < 0)
        return 2;
    if (ptrace(PTRACE_GETREGS, pid, NULL, ®s) < 0)
        return 3;
    unsigned long * ptr = (unsigned long*)shellcode;
    unsigned long rip = regs.rip & ~4095;
    unsigned long address = regs.rip;
    long word;
    do {
        errno = 0;
        if ((word = ptrace(PTRACE_PEEKTEXT, pid, rip, NULL) && errno) < 0)
            return 4;
        if (ptrace(PTRACE_POKETEXT, pid, rip, ptr) < 0)
            return 5;
        *ptr = (unsigned long)word;
        rip += 8;
        ++ptr;
    } while (!(rip & 0x20));
    rip -= 32;
    regs.rip = rip;
    ptr -= 8;
    if (ptrace(PTRACE_SETREGS, pid, NULL, ®s) < 0)
        return 6;
    if (ptrace(PTRACE_CONT, pid, NULL, NULL) < 0)
        return 7;
    if (wait(NULL) < 0)
        return 8;
    for (; !(rip & 0x20) && ((word = ptrace(PTRACE_POKETEXT, pid, rip, ptr)) >= 0 || !errno); rip += 8, ++ptr);
    if (errno)
        return 9;
    regs.rip = address;
    if (ptrace(PTRACE_SETREGS, pid, NULL, ®s) < 0)
        return 10;
    return 0;
}
при его выполнении brk у процесса pid не увеличивается
shellcode соответствует следующему коду
xor    edi, edi
mov    eax, 12    ; sys_brk
syscall
lea    rdi, qword [rax + 4096]
mov    eax, 12
syscall
sub    rax, 4096
int3
nop
nop
в чем причина?


    
      Ответ на:
      
          комментарий
        от klalafuda 
  
    
      Ответ на:
      
          комментарий
        от rei3er 
  
    
      Ответ на:
      
          комментарий
        от klalafuda 
  
    
      Ответ на:
      
          комментарий
        от klalafuda 
  
    
      Ответ на:
      
          комментарий
        от rei3er 
  
    
      Ответ на:
      
          комментарий
        от rei3er 
  
    
      Ответ на:
      
          комментарий
        от klalafuda 
  
    
      Ответ на:
      
          комментарий
        от klalafuda 
  
    
      Ответ на:
      
          комментарий
        от klalafuda 
  
    
      Ответ на:
      
          комментарий
        от klalafuda 
  
    
      Ответ на:
      
          комментарий
        от klalafuda 
  
    
      Ответ на:
      
          комментарий
        от klalafuda 
  
    
      Ответ на:
      
          комментарий
        от rei3er 
  
    
      Ответ на:
      
          комментарий
        от klalafuda 
  
    
      Ответ на:
      
          комментарий
        от klalafuda 
  
    
        Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
      
Похожие темы
- Форум Поставил точку останова с помощью PTRACE, снимаю получаю ошибку сегментации (2022)
 - Форум Поиск ELF сигнатур через ptrace в памяти форка (2015)
 - Форум Трабл с модулем (2005)
 - Форум WiMAX Network Service 1.4 (2010)
 - Форум g++ expects argument (2013)
 
- Форум трассировка icmp (2016)
 - Форум Ptrace + pthread_create (2005)
 - Форум Регулировка скорости кулера ноутбука через nbfc (2021)
 - Форум astra-ptrace-lock (2024)
 - Форум ptrace() и сигналы (2018)