Мемчики wasm.in

Discussion in 'WASM.HEAP' started by Rel, Jun 24, 2020.

  1. ormoulu

    ormoulu Well-Known Member

    Blog Posts:
    0
    Ох, ну вы и душнилы... Мемасик про си смешной независимо от того сколько у Тома Круза кожи на жопе.
     
    TermoSINteZ likes this.
  2. Rel

    Rel Well-Known Member

    Blog Posts:
    2
    Синтаксис ужасный: бесконечные begin-end, точки с запятыми просто везде, переменные нельзя посреди функции объявить, длинные ключевые слова и тд. Сами компиляторы FreePascal и Delphi в целом неплохо выглядят по функционалу, жалко, что эти комьюнити идут по пути улучшения тулинга и толком не улучшают язык.
     
  3. Subrealist

    Subrealist Member

    Blog Posts:
    0
    Перфокарты это святое. Помню в детстве где они только не использовались, и коробочки из них делали, и закладки, и кулинарные рецепты на них писали, и в библиотечном каталоге они же были, и, как писал Крис Касперски: "Почему так легко представить хакера, поклоняющегося дырке в перфокарте, и так трудно, поклоняющегося Windows" (цитирую по памяти)
    --- Сообщение объединено, Jul 9, 2022 ---
    TrashGen, ну это как "Чтобы купить что-то ненужное, нужно сначала продать что-то ненужное"
     
    TrashGen likes this.
  4. KPG

    KPG Member

    Blog Posts:
    0
    Дело вкуса, но он "ужасен" и у многих Алгол последовавших языков и нет нормальных вариантов, как в Форт, программировать без связи формальных и фактических параметров функций парадигмы конкатенативных языков :)

    https://concatenative.org
     
    Last edited: Jul 9, 2022
  5. Subrealist

    Subrealist Member

    Blog Posts:
    0
    Вообще, идеальный язык это Lisp, так как он создан самим Господом Б-гом и вся Вселенная написана именно на нём. Утверждать, что какой-то язык лучше Лиспа есть сущее богохульство!
     
  6. KPG

    KPG Member

    Blog Posts:
    0
    Да, но только скобок для его создания понадобилось очень много. :)
    На лурке в статье по Форт есть сравнение языков с точки зрения отношения к скобкам.

    P.S. Про покупку-продажу не наоборот в оригинале? т.к. следующая фраза @"А, у нас денег нет" от кота Матроскина.
     
  7. TrashGen

    TrashGen ТрещГен

    Blog Posts:
    0
    нет, ну не обязательно же покупать лично покупателю. покупателем может выступать тот у кого есть шекель, допустим. покупатель может тупо в почтовый ящик нуждающемуся набросать шекелей. если бы у меня было миллион денег я бы сейчас весь его раздал по тысяче тысяче нуждающихся, если бы был уверен, что они именно нуждаются, а не пойдут и пробухают этот рубль)
     
  8. Subrealist

    Subrealist Member

    Blog Posts:
    0
    Ну так то да, но смысл продать у них там именно в том, чтобы купить.

    Для создания скобок то и не понадобилось, изначально он был в машинных кодах написан. А вот потребовал да, много. Я думаю, в этом скрыта какая-то важная истина.
     
  9. TrashGen

    TrashGen ТрещГен

    Blog Posts:
    0
    если кто то сомневаеццо в том, шо тращген и не думает шутить и жадничать, и для тех, кто просто забыл и\или не видел по болезни^^
     
  10. Subrealist

    Subrealist Member

    Blog Posts:
    0
    Вот вот, о чём и речь, продавать может оказаться и не обязательно, если найдётся тот, кто шекелей в почтовый ящик набросает. Но вот что дальше тот рубль будет потрачен, этого никто не отменял. Хотя, конечно, в Торе и сказанно:
    "Треть зарой в землю, треть пусти в дело, на треть живи"
     
  11. TrashGen

    TrashGen ТрещГен

    Blog Posts:
    0
    ну да. жить на минималках одним днем вот уже с месяц как моё кредо, бро) не жалуюсь. это стезя, которую я принимаю и хоярю по ней как птица с перебитыми крыльями и сломанными ногами. нисколько себя не жаль в этом, зачем я вообще нужен однавосьмимиллиардная пылинка, если буду жить для себя и лишь ради этого?
    --- Сообщение объединено, Jul 9, 2022 ---
    не говорил, вродебы, хотел развестись и поменять дом на собаку, чтобы освободить целых 2 живых существа от клеток: себя и собаку) жона чото не согласилась и так и оставляет нас обоих в ненужном нам уже рабстве

    язык тут прикольный порекомендовали, только не знаю пока что с ним делать)
     

    Attached Files:

  12. Rel

    Rel Well-Known Member

    Blog Posts:
    2
    Ада, например, куда лучше, при этом она развивается, а не стагнирует, хоть и нужна очень малому количеству айти сфер. В каком-то смысле даже Ruby можно считать последователем Алгола через несколько других языков.

    Единственные более менее современные Форты - это 8th и Factor, да и то сейчас сложно представить человека, которых их выберет для какого-либо программного проекта, даже на эмбеддед системах уже давно всякие микропетоны и джаваскрипты работают.

    С этим сложно спорить, можно посмотреть хотя бы на Racket, который позволяет любой синтаксис наложить поверх sexpr.
     
  13. KPG

    KPG Member

    Blog Posts:
    0
    8-th и Factor всё же не Форт в классике его понимания и построения.
    Есть, конечно, ещё какие то варианты, но без целевой программы их включения в программы изучения какой то тематики, продвижения в этом направлении, конечно же, не будет.

    Вот и для Вас слова Forth (Форт) всего лишь пустые звуки. :)
    --- Сообщение объединено, Jul 9, 2022 ---
    A Racket-based Forth / Macro Assembler on steroids for PIC18F
    https://github.com/zwizwa/staapl
     
  14. f13nd

    f13nd Well-Known Member

    Blog Posts:
    0
    Дельфи лепит код из паттернов (как выяснилось гцц делает так же, но умеет при -O3 кое-как свернуть его до чего-то более-менее приличного), а дельфи оставляет за собой такое:
    Code (Text):
    1. .004B0F00 8A86 05050000 mov al,byte ptr ds:[esi+505]
    2. .004B0F06 34 01         xor al,1
    3. .004B0F08 8886 05050000 mov byte ptr ds:[esi+505],al    ;BYTE[esi+505]^=1, 14 байт, 'xor byte ptr ds:[esi+505],1'={80B6 05050000 01}, 7 байт
    4. .004B0F0E 33DB          xor ebx,ebx
    5. .004B0F10 8D7D FE       lea edi,dword ptr ss:[ebp-2]
    6. .004B0F13 8B86 EC010000 mov eax,dword ptr ds:[esi+1EC]    ;значение eax хоронится, смысла значению оставаться в регистре не было, нет оправданий.
    Дурная примета, когда компилер можно узнать по почерку. Это навскидку, первое что попалось на глаза. Весь дельфяшный код изобилует перегруженностью и бредом. Вероятно это не главная причина почему исполняемые файлы весят адовы мегабайты, но одна из них.
     
    Artem_N likes this.
  15. M0rg0t

    M0rg0t Well-Known Member

    Blog Posts:
    0
    f13nd, видишь, везде есть плюсы и минусы; стандартом в малвари (имею ввиду, настоящую, а не школостилеры) было всегда кодить на Асм/Си, это круто, но в итоге выходит идеальный чистый код - который легко открыть в Ида даже школьнику. А дельфи , да еще если добавить какой-то мусор, то уже сам по себе как обфускатор.
     
  16. f13nd

    f13nd Well-Known Member

    Blog Posts:
    0
    Так и с дельфи проблем нету, декомпилер школьника об него не сломается.
    Это старое доброе "купи себе кампуцер пошире, чтоб все влазило". С таким подходом вообще никакой разницы между компилерами нету, бери любой, не забудь пожать UPX'ом.
     
  17. KPG

    KPG Member

    Blog Posts:
    0
    Интересно, а как в IDA будет представлен такой код минимального "Форт" на Си? и понимаем ли он при этом столкнувшемуся с ним?
    // gcc forth.c -o forth

    #include <stdio.h>
    #include <string.h>

    // Main Memory
    char memory[100000];
    char *mem = memory;

    // Dictionary entry type
    typedef struct {
    char name[100];
    void* code;
    } dict_t;

    #define ALLOC(x) \
    mem; \
    memcpy(mem, (char*)&(x), sizeof(x)); \
    mem += sizeof(x); \

    #define DEFINE(x,y) \
    (*dsp); \
    strcpy((*dsp)->name, x); \
    (*dsp)->code = y; \
    (*dsp)++; \

    #define NEXT \
    (*ip)++; \
    goto ***(ip); \

    int main() {

    /* Pointers */

    void **instruction_pointer;
    void ***ip = (void ***)ALLOC(instruction_pointer);

    long *stack_pointer;
    long **sp = (long **)ALLOC(stack_pointer);

    void **return_stack_pointer;
    void ***rsp = (void ***)ALLOC(return_stack_pointer);

    dict_t *dictionary_stack_pointer;
    dict_t **dsp = (dict_t **)ALLOC(dictionary_stack_pointer);

    /* Stacks */

    long stack[10];
    *sp = (long *)ALLOC(stack);

    void *return_stack[10];
    *rsp = (void **)ALLOC(return_stack);

    dict_t dictionary_stack[10];
    *dsp = (dict_t *)ALLOC(dictionary_stack);

    /* Memory */
    char code[] = "ok>";
    void *cp = code;

    dict_t *bye = (dict_t *)DEFINE("bye", &&bye);
    dict_t *lookup = (dict_t *)DEFINE("lookup", &&lookup);
    dict_t *ok = (dict_t *)DEFINE("ok", &&ok);

    void *word[] = { lookup->code, ok->code, bye->code };
    *ip = (word)-1;

    NEXT;

    return 0;

    ok:
    puts(code);
    gets(code);
    puts(code);
    NEXT;

    bye:
    puts("bye");
    return 0;

    lookup:
    puts("Run Code");
    NEXT;
    }

    Или такой Не минималистический Форт с расширением объектами (C++)
    Или такой Небольшой проект "Си" то Forth сделанный с использованием парсера Bison
    ...
    Другие Форт реализации коих туева куча. :)
    Как такой проект Форта,, где основное тело системы загружается как оверлей
    ...
    BCForth в иллюстрации к материалу книги

    Introduction to Programming with C++ for Engineers
     
    Last edited: Jul 9, 2022
  18. KPG

    KPG Member

    Blog Posts:
    0
    В сообщениях от Ethereal на киберфоруме есть в одном посте где он предлагает для усложнения реверса использовать шитый код (для приемлемомой скорости его выполнения) Форта - фактически прыжки на команды виртуальной машины и предполагает, что даже в размере файла 300Кб его реверс будет очень затратной задачей для понимания логики программы.

    Там же увидел его сообщение в одном треде как он "взломал" защиту Cerber под DOS.
    Интересно, что уже около года он не постил сообщений на этом форуме.

    P.S. А, не кажется ли модераторам форума, что текущее обсуждение немного отклонилось от темы топика? :)
     
    Last edited: Jul 9, 2022
  19. Rel

    Rel Well-Known Member

    Blog Posts:
    2
  20. ormoulu

    ormoulu Well-Known Member

    Blog Posts:
    0
    Да так, мой внутренний граммар наци иногда страдает.

    upload_2022-7-9_22-6-36.png