The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск утилиты GNU cflow 1.7 , opennews (??), 02-Янв-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


19. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним84701 (ok), 02-Янв-22, 20:32 
> Это работает только у тех юзверюшек, что разрешают исполнять writable memory.

Pro-tip: перед тем как пользоваться уничижительными эпитетами, убедитесь в достаточном знании предмета:


#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
    int (*some_func)(char*) = (int (*) (char*)) atol(argv[1]);
    return (*some_func)("0");
}
...
# fcall.c:4:     int (*some_func)(char*) = (int (*) (char*)) atol(argv[1]);
        mov     rdi, QWORD PTR [rsi+8]  # MEM[(char * *)argv_3(D) + 8B], MEM[(char * *)a>
        call    atol    #
# fcall.c:5:     return (*some_func)("0");
        mov     edi, OFFSET FLAT:.LC0   #,
        call    rax     # tmp91


Ответить | Правка | Наверх | Cообщить модератору

20. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от uis (ok), 02-Янв-22, 21:31 
И? Привет Page Fault и прилетит SIGSEGV
Ответить | Правка | Наверх | Cообщить модератору

22. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним84701 (ok), 02-Янв-22, 22:29 
> И? Привет Page Fault и прилетит SIGSEGV

И каким боком оно к "исполнять writeable memory"?
А так: просто вводите правильный адрес, например от atoi или strlen. Делов-то.
Бонус: при вводе еще более 'правильного' адреса можно получить классический ROP/return-to-libc, против которого W^X/NX не защищает от слова "никак". Для этого придумали ASLR.


Ответить | Правка | Наверх | Cообщить модератору

27. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним (27), 03-Янв-22, 03:02 
Ну, чтобы не было ROP, нужно адреса для функций определять заранее, а не брать откуда попало. Указатели на функции - это удобный способ избавиться от огроменных if-else. Так же, как и printf по сути.
Ответить | Правка | Наверх | Cообщить модератору

23. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним (24), 02-Янв-22, 23:27 
И что это говнокод 80 лвл? Зачем такое в реальном проекте. А если эту тулзу решил обмануть то есть более простой путь. Вообще не использовать эту тулзу!
Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

25. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним (-), 03-Янв-22, 00:13 
> И что это говнокод 80 лвл? Зачем такое в реальном проекте. А
> если эту тулзу решил обмануть то есть более простой путь. Вообще
> не использовать эту тулзу!

Можно попробовать что-то сравнимое для колбэков :). А оно просекает регистрацию колбэков по указателю?

Ответить | Правка | Наверх | Cообщить модератору

29. "Выпуск утилиты GNU cflow 1.7 "  +1 +/
Сообщение от Аноним84701 (ok), 03-Янв-22, 05:59 
> И что это говнокод 80 лвл?

Демонстрирует в 2 строках, что никакой "исполнять writable memory" там и рядом не лежал?

> Зачем такое в реальном проекте.

Опять кто-то анонимный слишком поторопился с эпитетами?
man atexit
https://git.musl-libc.org/cgit/musl/tree/src/exit/atexit.c#n26


void __funcs_on_exit()
{
    void (*func)(void *), *arg;
    LOCK(lock);
    for (; head; head=head->next, slot=COUNT) while(slot-->0) {
        func = head->f[slot];
        arg = head->a[slot];
        UNLOCK(lock);
        func(arg);
        LOCK(lock);
    }
}

Как впрочем и любая библиотека, предоставляющая внешние колбэки (GTKшные сигналы-слоты, куда в рантайме пачками, "извне", прилетают адреса кода, совсем не через libastral работает) и через одну -- программы с интерфейсом для подгружаемых раширений.
Ответить | Правка | К родителю #23 | Наверх | Cообщить модератору

38. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним (33), 03-Янв-22, 17:13 
Вопрос всё тот же зачем тебе лезть в визуализацию расширений. Но ты все равно непроходимый.  
Ответить | Правка | Наверх | Cообщить модератору

39. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним84701 (ok), 03-Янв-22, 17:32 
>> > Это работает только у тех юзверюшек, что разрешают исполнять writable memory
>> демонстрация, как оно на самом деле работает
> И что это говнокод 80 лвл?

...
> Вопрос всё тот же зачем тебе лезть в визуализацию расширений.

Никаких вопросов не было бы, если бы ты умел читать. Ну или хотя бы не пытался усиленно и уныло сменить тему или перейти на личности ...
> Но ты все равно непроходимый.

"Отмазывайся теперь!" (с) Ordu

Ответить | Правка | Наверх | Cообщить модератору

42. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним (42), 04-Янв-22, 13:39 
Да ты просто делаешь хорошую мину при плохой игре.  
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру