Информация об изменениях

Сообщение Re[6]: модификация elf, добавление сегмента+секции от 21.02.2025 10:31

Изменено 21.02.2025 10:35 Molchalnik

Re[6]: модификация elf, добавление сегмента+секции
Здравствуйте, 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"], 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 +++
Re[6]: модификация elf, добавление сегмента+секции
Здравствуйте, 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 этой программы после патча