The OpenNET Project / Index page

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



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

"Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от opennews (??), 02-Янв-22, 14:40 
После трёх лет разработки опубликован выпуск утилиты GNU cflow 1.7, предназначенной для построения наглядного графа вызовов функций в программах на языке Си, который может использоваться для упрощения изучения логики работы приложения. Граф строится только на основе анализа  исходных текстов, без необходимости выполнения программы. Поддерживается генерация как прямых, так и обратных графов потоков выполнения, а также генерация списков перекрёстных ссылок для файлов с кодом...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=56444

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

Оглавление

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


1. "Выпуск утилиты GNU cflow 1.7 "  +3 +/
Сообщение от Аноним (1), 02-Янв-22, 14:40 
Как-то давно разбирал старый легаси код без доков, без тестов, без вменяемых гит коммитов и пришлось файлик для graphivz писать руками. Занятная была кодархеология.  
Ответить | Правка | Наверх | Cообщить модератору

2. "Выпуск утилиты GNU cflow 1.7 "  –20 +/
Сообщение от Аноним (2), 02-Янв-22, 14:43 
Старый легаси - это когда без вменяемых cvs коммитов.
А у вас просто говнокод.
Ответить | Правка | Наверх | Cообщить модератору

10. "Выпуск утилиты GNU cflow 1.7 "  +2 +/
Сообщение от Аноним (10), 02-Янв-22, 15:36 
Что уж мелочится старый легаси — это перфокарта где текст коммита написан на самой карточке)
Ответить | Правка | Наверх | Cообщить модератору

21. "Выпуск утилиты GNU cflow 1.7 "  –3 +/
Сообщение от trdm (ok), 02-Янв-22, 22:16 
Да и обычный проект разрастается иногда бывает.
Нужная вещь. Плохо нет собранной под форточки.
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

31. "Выпуск утилиты GNU cflow 1.7 "  –2 +/
Сообщение от Роман (??), 03-Янв-22, 10:56 
WSL спасёт же. Или даже просто докер.
Ответить | Правка | Наверх | Cообщить модератору

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

36. "Выпуск утилиты GNU cflow 1.7 "  +2 +/
Сообщение от Аноним (-), 03-Янв-22, 13:49 
>Плохо нет собранной под форточки

И такие ничтожества ещё гуляют по опеннету.

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

3. "Выпуск утилиты GNU cflow 1.7 "  –1 +/
Сообщение от Аноним (3), 02-Янв-22, 14:51 
>По мнению разработчиков, указанные проблемы не представляют угрозы безопасности, так как ограничиваются аварийным завершением утилиты.

Так они убрали проблему или просто отмазались?

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

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

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

4. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от lockywolf (ok), 02-Янв-22, 14:59 
》》Граф строится только на основе анализа исходных текстов, без необходимости выполнения программы.

А если в рантайме адрес кода, введённого с консоли, получить, да скастовать его к указателю на функцию, и запустить, он поймёт, что к чему?

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

6. "Выпуск утилиты GNU cflow 1.7 "  +5 +/
Сообщение от Crazy Alex (ok), 02-Янв-22, 15:19 
Софт (обычно) пишут чтобы на практике использовать, а не вы...ваться. Работает для "нормального" кода, разумеется, а извращенцы пусть мучаются.
Ответить | Правка | Наверх | Cообщить модератору

18. "Выпуск утилиты GNU cflow 1.7 "  –1 +/
Сообщение от Аноним (-), 02-Янв-22, 19:01 
Вообще-то в старину такой софт назывался "монитором" и не служил вы...нам. Чисто прагматическая конструкция.
Ответить | Правка | Наверх | Cообщить модератору

37. Скрыто модератором  –1 +/
Сообщение от Аноним (-), 03-Янв-22, 13:50 
Ответить | Правка | Наверх | Cообщить модератору

11. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним (10), 02-Янв-22, 15:39 
Нет. Но если ты решил сам себя обмануть, то это ты сам себе злобный Буратино.  
Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

12. "Выпуск утилиты GNU cflow 1.7 "  +7 +/
Сообщение от OpenEcho (?), 02-Янв-22, 15:53 
> адрес кода, введённого с консоли

Вы б послали кого нибудь за закуской что ли, праздники все таки

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

13. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним (13), 02-Янв-22, 16:02 
Вот из-за таких постов люди и боятся goto.
Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

15. "Выпуск утилиты GNU cflow 1.7 "  –1 +/
Сообщение от Dzen Python (ok), 02-Янв-22, 16:27 
Выдыхай, бобёр, выдыхай
Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

16. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним (16), 02-Янв-22, 17:10 
Это работает только у тех юзверюшек, что разрешают исполнять writable memory.
Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

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ообщить модератору

5. "Выпуск утилиты GNU cflow 1.7 "  +1 +/
Сообщение от MazikOttogi (ok), 02-Янв-22, 14:59 
В своё время регулярными выражениями создавал копию исходников с printf\cout в начале и завершении функций, при помощи этого табулируя результирующий строчный вывод)
Имхо, выходит нагляднее теоретической графсхемы.
Ответить | Правка | Наверх | Cообщить модератору

34. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Андрей (??), 03-Янв-22, 13:24 
а можно просто gcc -pg и записывать uftrace
Ответить | Правка | Наверх | Cообщить модератору

28. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним (28), 03-Янв-22, 04:47 
А для этого нужно иметь исходники, а что там с бинарями, а под разные платформы? Уже что-то есть позволяющее хоть какое-то представление получить ?
Ответить | Правка | Наверх | Cообщить модератору

30. "Выпуск утилиты GNU cflow 1.7 "  +1 +/
Сообщение от Вован (??), 03-Янв-22, 10:48 
Посмотрите rizin / cutter, утилиты для RE, недавно наткнулся
Ответить | Правка | Наверх | Cообщить модератору

32. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним (33), 03-Янв-22, 11:40 
Ничего кроме IDA Pro принципиально не юзабельно для этой задачи.  
Ответить | Правка | К родителю #28 | Наверх | Cообщить модератору

40. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним (40), 04-Янв-22, 02:06 
А Ghidra?
Ответить | Правка | Наверх | Cообщить модератору

41. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Аноним (42), 04-Янв-22, 13:38 
А что у гидры уже появился отладчик? Спойлер: Нет.

Да даже если посмотреть что выдает гидра на обычных 64 битных бинарниках. Ида как минимум популярные компиляторы выдает очень хорошо.  

Единственные известный минус Иды это то что она очень платная. А Гидра это для каких-нибудь редких архитектур типа PIC-24 ну и для халявщиков тоже.  

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

35. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от Gogi (??), 03-Янв-22, 13:29 
Зная про DEFINE в Си, их парсер должен быть прямо хорошим компилером, чтобы корректно всё отображать!

По поводу dot... так-то оно работает, но это <b>примитивный</b> язык графов (и только). Чтобы вывести там что-то красивое (например, FK-связи между таблицами СУБД), придётся прямо в язык вносить HTML-элементы(!!!). Иначе сами таблицы не построить. У меня в программе это используется, но радости от этого неуклюжего решения я не испытываю. Что радует, dot снимает с меня заботу о размещении узлов, но нередко получаются довольно уродские графы, где сразу несколько стрелок сливаются в одну теплотрассу, а потом конечно же расходятся, подмигивая "угадай, где-кто?". Пипец...

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

44. "Выпуск утилиты GNU cflow 1.7 "  +/
Сообщение от burjui (ok), 08-Янв-22, 02:57 
А вот если бы эту утилиту делали опеннетчики, не было бы ни переполнения буфера, не use after free, потому что эксперты. Ну, или если бы её делали на другом ЯП, который здесь ненавидят до изжоги.
Ответить | Правка | Наверх | Cообщить модератору

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

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




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

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