Re[6]: модификация elf, добавление сегмента+секции
От: Molchalnik  
Дата: 21.02.25 10:31
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Вы не просто переменную заведите вы её увеличте на 1.



  сделал. теперь код программы, которую я патчу, такой
#include <iostream>

int main()
{
    static __thread int var = 0;
    (void)var;
    auto lang = "C++";
    std::cout << "Hello and welcome to " << lang << "!\n";

    volatile int varrr = var;
    varrr = varrr + 1;
    var = varrr;
    ++var;

    return 0;
}


  strace этой программы до моего кривого патча
strace ./t
execve("./t", ["./t"], 0x7fffeccd6a10 /* 78 vars */) = 0
brk(NULL)                               = 0x7f7e000
brk(0x7f7ed80)                          = 0x7f7ed80
arch_prctl(ARCH_SET_FS, 0x7f7e400)      = 0
set_tid_address(0x7f7e6d0)              = 2555951
set_robust_list(0x7f7e6e0, 24)          = 0
rseq(0x7f7ed20, 0x20, 0, 0x53053053)    = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
readlinkat(AT_FDCWD, "/proc/self/exe", "resourcetocpp/cmak"..., 4096) = 49
getrandom("\x34\x9c\x3d\xb2\xe2\x89\xe0\x57", 8, GRND_NONBLOCK) = 8
brk(NULL)                               = 0x7f7ed80
brk(0x7f9fd80)                          = 0x7f9fd80
brk(0x7fa0000)                          = 0x7fa0000
mprotect(0x5c8000, 45056, PROT_READ)    = 0
futex(0x5d5dfc, FUTEX_WAKE_PRIVATE, 2147483647) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x4), ...}) = 0
write(1, "Hello and welcome to C++!\n", 26Hello and welcome to C++!
) = 26
exit_group(0)                           = ?
+++ exited with 0 +++



  strace этой программы после патча
strace ./t
execve("./t", ["./t"], 0x7ffce65de1f0 /* 78 vars */) = 0
mprotect(0x401000, 1536000, PROT_READ|PROT_EXEC) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x28} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)


UPD. поправлен код последнего strace
Отредактировано 21.02.2025 10:38 Molchalnik . Предыдущая версия . Еще …
Отредактировано 21.02.2025 10:35 Molchalnik . Предыдущая версия .
Отредактировано 21.02.2025 10:34 Molchalnik . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.