Indy_ Dye 4.2

Тема в разделе "WASM.SOURCES & 2LZ", создана пользователем calidus, 13 июл 2021.

Метки:
  1. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Привет Indy_,

    где можно найти исходник Kite 1.0 ?! Файлы Kite приложенные к Dye не полные. В последней версии поменялись структуры, не мог бы ты выложить обновлённый Ep.asm. Что ещё поменялось кроме структур?

    Ещё вопрос, FtIsFile proc TestFile:HANDLE, File$:PSTR имеет такой прототип, но вызывается как invoke FtIsFile, D[Eax], без описания прототипа нельзя собрать, это ошибка?

    Что скрывается за GetTicks, переходник на GetTickСount()?
     
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    calidus,

    На сколько помню EP.asm это был сурец с критерием по определению общим способом точек входа через выборку, удивительно работало на любом тестовом модуле, не важно чем накрыт.

    Кайт это конструктор 2015 года, он формировал граф, затем после манипуляций с ним код билдился в буфера. В простейшем случае это перенос процедуры в буфер. Манипуляции с самим графом были довольно сложные из за столь запутанных структур его, но проще врядле можно сделать.

    > Что скрывается за GetTicks, переходник на GetTickСount()?

    Я не могу ничего ответить на это, тк десятки тысяч раз это пересобиралось, для каждого семпла своя сборка, обычно было с кл. Замеры приложением тайминга - на всё это стояли фильтры, он симулировался для апп. Где в этих сборках что искать я хз, это есть всё в бэкапах, но нужна точная инфа что бы конкретную сборку найти.

    В общем если где то раздабыл одну из последних старых сборок молодец, но сам разбирайся в мелочах, ссылка или указатель это на столько мелкие вопросы..

    Rel,

    Не была использована бинарная трансляция, хотя это всё было реализовано. Тут есть эти темы, за это да, могут набутылить. Тк можно встраивать в малварь для решений в реалтайме - те же с-анклавы скрытие памяти обход вм.
     
  3. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    net/com использует бин трансляцию для сборки, к тормозам не приводит, вообще с чего ты решил что нужно каждую инструкцию пропускать через буфер.. это было в первых реализациях тк просто для отладки самого мотора.

    https://wasm.in/threads/ukazatel-v-opisatel.33644/

    - ключевая функция, улучшить никак нельзя, там синхронная адресная трансляция. Отобразив линейный адрес на буфер, можно рассыпать инструкции рандомом в памяти. Тогда как авер создаст сигнатуру, если она просто битовая маска, будет проходить в реалтайме ветвления в буферах ?

    Даже если это теоретически может быть реализовано, то диз сбить не составляет проблемы.
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Не использует, COM вообще, а NET компилирует байткод в нативный с помощью JIT-компилятора. Из чистых интерпретаторов там, наверное, может быть только JScript или VBScript, да и то я не уверен в этом, в том же движке Chakra была JIT-компиляция.

    Причем тут дизасм и аверские сигнатуры - не понятно. Часть сигнатуры вполне может быть внутри инструкции.
     
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Ты хочешь, чтобы я тебе нашел малварь, у которой сигнатура внутри инструкции начинается? Забавно, ты думаешь, что мне нужно что-то тебе доказывать?

    Ну я так то не прославился тем, что продал свои наработки блекушникам, как ты. Не создавал барыжных тем, где писал, что "заточен на малварь": https://jeyndoe.github.io/edump/pages/action=vthread&forum=6&topic=22203&page=0.html Так что я далеко не барыга, в отличии от тебя.
    --- Сообщение объединено, 17 июл 2021 ---
    https://www.google.com/search?q=n+grams+signature - вот можешь матчасти почитать, чтобы не позорится в будущем. Может быть важна конкретная последовательность байт, которая может начинаться и заканчиваться как вначале или в конце инструкции, так и внутри нее.
     
    Последнее редактирование: 17 июл 2021
  6. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Что вы тут устроили в моей теме?! В личке решить это нельзя?!

    Проблема здесь, это строчка -
    Код (ASM):
    1. .if (G_Image.Base <= Eax) && (G_Image.Limit > Eax)
    или оригинальный
    Код (ASM):
    1. .if ([Esi].Tr.LaX.Ea == Eax) && (Eax < 7FFE0000H)    ; LA != EA -> ~TEB; ~USD
    2.             .if (G_iBase <= Eax) && (G_iLimit > Eax)
    3.                 mov edx,[esi].Tr.Ia.Ea.Flags
    4.                 and edx,(1 shl EA_DISP32) or (1 shl EA_SIB) or (1 shl EA_BASE) or (1 shl EA_STR)
    где G_iBase и G_iLimit были перенесены в структуру .. первый код это моя модификация.

    Кроме этого TFR struct не имеет больше структуры ЕА, которая находится теперь в
    Код (ASM):
    1. MDF struct
    2. Ea EA <>
    3. Fetch ULONG ? ; XED_OPERAND_ACTION_x
    4. LaX LADDR <>
    5. LaY LADDR <>
    6. MDF ends
    7. PMDF typedef ptr MDF
    MDF <> пришлось добавить в TFR struct, иначе собрать невозможно.

    А сама MDF нигде не используется. То, что сборки разные это понятно, но эти структуры в Hdr.inc же базовые, вижно, что обновилась структура двига, где старые модули просто не подключаются. Отсюда и вопрос, есть ли обновлённый EP.asm. Но если нет, то придётся вручную подбирать.
    В чём разница изменений внутри двига, если основные фильтры регистрируются отдельно/собираются отдельно?

    Можешь выложить оригинальный исходный код? Не хекс инклуд файл.

    .. invoke GetTicks .. из Ft.asm
    Код (ASM):
    1. SyCreateFile proc C
    2.     assume ebx:PNT_CREATE_FILE
    3. Recall:
    4. comment '
    5.    invoke FtSysCall, sizeof(NT_CREATE_FILE)
    6.    .if !Eax
    7.        mov eax,[ebx].FileHandle
    8.        invoke FtIsFile, D[Eax];, 0
    9.        .if !Eax
    10.            invoke GetTicks
    11.            %DBG "PID: 0x%p T: 0x%p FCREATE Access: 0x%X, Share: 0x%X, Disposition: 0x%X, Options: 0x%X",
    12.                [Ebx].CreateOptions,
    13.                [Ebx].CreateDisposition,
    14.                [Ebx].ShareAccess,
    15.                [Ebx].DesiredAccess,
    16.                Eax,
    17.                fs:[TEB.Cid.UniqueProcess]
    18.        .endif
    19.        xor eax,eax
    20.    .else
    21.        push eax
    22.        invoke StLookupName, Eax
    23.        push eax
    24.        invoke GetTicks
    25.        pop ecx
    26. ;        %DBG "PID: 0x%p T: 0x%p FOPEN failed %s", Ecx, Eax, fs:[TEB.Cid.UniqueProcess]
    27.        pop eax
    28.        .if Eax == STATUS_SHARING_VIOLATION
    29.            invoke Sleep, 100
    30.            jmp Recall
    31.        .endif
    32.    .endif
    33.    jmp SySkip
    34.    '
    35.     jmp SyCall
    36. SyCreateFile endp
    или

    Код (ASM):
    1. SyClose proc C
    2.     assume ebx:PNT_CLOSE
    3. ;///////////////////////////////////////////////////////////////////////  
    4.     invoke FtIsFile, [Ebx].Handle; <<< - FtIsFile proc TestFile:HANDLE, File$:PSTR - FtIsFile PROTO TestFile:HANDLE, File$:PSTR ?!
    5.     .if !Eax
    6.         invoke GetTicks; <<<- GetTickСount()
    7.         %DBG "PID: 0x%p T: 0x%p FCLOSE", Eax, fs:[TEB.Cid.UniqueProcess]
    8.     .endif
    9. ;///////////////////////////////////////////////////////////////////////
    10.     jmp SyCall
    11. SyClose endp
    Ясно, спасибо :good2:
     
    M0rg0t нравится это.
  7. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    calidus,

    Вот примеры. Общий критерий по EP работает везде, не важно даже какой протектор. В общем если говорить инструмент мощный и я первый раз вижу что его кто то нашёл и использовал :)
    --- Сообщение объединено, 18 июл 2021 ---
    calidus,

    Вот базовая сборка конструктора. С ней есчо шло несколько моторов для скрытия памяти, DYPEx", подробности нужно искать на rohitab.com
     

    Вложения:

    • eps.7z
      Размер файла:
      2,4 КБ
      Просмотров:
      352
    • Kite10.7z
      Размер файла:
      637,8 КБ
      Просмотров:
      377
    Последнее редактирование: 18 июл 2021
    calidus нравится это.
  8. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Привет Indy_,

    ещё один вопрос, ты сделал быстрый трансляционный кэш, не мог бы ты показать сводную таблицу таймингов или множитель падения скорости по вариациям: оригинальный блок, под Dye без кэша, под Dye с кэшированием.

    Пример -
    оригинальный блок: 0.0x
    под Dye без кэша: -4.7x
    под Dye с кэшированием: -2.1x
     
  9. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    calidus,

    Привет.

    Я не могу статистику привести, её было много есть дамп кл тут гдето была. Мне придётся запускать вм, а там столько сборок.. прошлую задачу я пару дней решал - искал последнюю рабочую сборку. C трансляцией и быстрым кэшем работало это всё в реалтайме. Последний раз я это собирал когда был есчо кл, а это довольно давно было.

    Вот тут недавно был вопрос https://cracklab.team/index.php?threads/439/

    - тс глупый, невозможно это решить отладчиком. Для этого необходим визор, бт либо виртуальная машина. Принципы работы вм на харде не позволяют получить все выборки и всю последовательность по IP.
     
  10. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    На самом деле в этом меня интересует один вопрос. Вот есть Дий версии 4.2. А зачем ему в принципе версии давать, там минорные и мажорные, если его никто, кроме Индия не использует? Некому же за историей изменений и чейндж логами следить, никому это не нужно. Или это просто в качестве подражания взрослым разработчикам? Чтобы почувствовать себя типа настоящим разрабом?
     
  11. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Rel, это моя выдумка, такой версии нет, в каждой версии были дополнения и новые функциональные блоки, версия 4 по моему списку версий это пред версия до обработки кэша, 4.2 это мой мод. Каждая версия может быть со своим фильтром, поэтому я дополняю версию как 1.а, 1.b, после главной версии. Вспоминать все изменения непрофессионально.
     
  12. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Indy_, что такое ntst.obj и где взять оригинальный сорс? Там внутри секция ресурсов и дебаг символы:
    Код (ASM):
    1. _Q㄀UOTAS_FOI㄀uCC+㄀kR㄀IMARY_TR@ANSPOR0N„NE㄀4FAIL€2"AGE€ULTƒITION㄀"‹DEM㄀®_Z ERO㄀
    2. CO㄀PY_ON_WR ITE㄀GUARD_㄀K“€@\_FÀ!㄀€ CACHEB
    3. _AN㄀'ARASH_@DUMP㄀€B8UFFs@`"S㄀Bl_OBJ€6㄀‚SOURCE㄀_REQUIREMÀpS_CHANšG㄀ A:LAÁ:QA]PLE㄀/!㄀D㄀S_MEMBER㄀SHIP_EVA8LUA㄀d%€Y㄀
    Есть ли ещё Srw.inc в сорсах? Где:
    Код (ASM):
    1. ; (PRTL_SRWLOCK)
    2. ;
    3. SRW_INITIALIZE            equ 0
    4. SRW_ACQUIRE_SHARED        equ 1
    5. SRW_RELEASE_SHARED        equ 2
    6. SRW_ACQUIRE_EXCLUSIVE    equ 3
    7. SRW_RELEASE_EXCLUSIVE    equ 4
    8.  
    9. SIG_ppZwWaitForKeyedEvent    equ 12345678H
    10. SIG_ppZwReleaseKeyedEvent    equ 87654321H
    11.            
    12. SRWE:
    13. DB 085H, 0C0H, 00FH, 084H, 099H, 003H, 000H, 000H, 048H, 00FH ........
     
  13. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    calidus,

    > что такое ntst.obj и где взять оригинальный сорс?

    avl-статусный дамп, NTSTATUS коды c быстрой их выборкой.

    Код (Text):
    1. STE struct
    2. Id        ULONG ?
    3. Nam3        PSTR ?
    4. STE ends
    5. PSTE typedef ptr STE
    6.  
    7. .code
    8. ; +
    9. ;
    10. StCompare proc Tree:PRTL_AVL_TABLE, First:PSTE, Second:PSTE
    11.     mov eax,First
    12.     mov ecx,Second
    13.     mov eax,STE.Id[eax]
    14.     mov ecx,STE.Id[ecx]
    15.     .if Eax == Ecx
    16.         mov eax,GenericEqual
    17.     .elseif Eax < Ecx
    18.         mov eax,GenericLessThan
    19.     .else
    20.         mov eax,GenericGreaterThan
    21.     .endif
    22.     ret
    23. StCompare endp
    24.  
    25. StAlloc proc Tree:PRTL_AVL_TABLE, S1ze:ULONG
    26.     invoke MmAlloc, S1ze
    27.     ret
    28. StAlloc endp
    29.  
    30. StFree proc Tree:PRTL_AVL_TABLE, Buffer:PVOID
    31.     invoke MmFree, Buffer
    32.     ret
    33. StFree endp
    34.  
    35. .data
    36. G_StBase    PVOID ?
    37. G_StTree    RTL_AVL_TABLE <>
    38.  
    39. .code
    40. ; +
    41. ;
    42. StInit proc uses ebx esi edi
    43. Local Rid[3]:PVOID
    44. Local Res:PIMAGE_RESOURCE_DATA_ENTRY
    45. Local Rbase, Rsize:ULONG
    46. Local Ldr:PLDR_DATA_TABLE_ENTRY
    47. Local Ste:STE
    48. Local StSize:ULONG
    49.     invoke LdrFindEntryForAddress, addr StInit, addr Ldr
    50.     .if !Eax
    51.         mov ebx,Ldr
    52.         mov Rid[0],256
    53.         mov Rid[4],1
    54.         mov Rid[2*4],0
    55.         mov ebx,LDR_DATA_TABLE_ENTRY.DllBase[ebx]
    56.         invoke LdrFindResource_U, Ebx, addr Rid, 3, addr Res
    57.         .if !Eax
    58.             invoke LdrAccessResource, Ebx, Res, addr Rbase, addr Rsize
    59.             .if !Eax
    60.                 invoke MmAlloc, 49010
    61.                 .if Eax
    62.                     mov G_StBase,eax
    63.                     invoke RtlDecompressBuffer, COMPRESSION_FORMAT_LZNT1, G_StBase, 49010, Rbase, Rsize, addr StSize
    64.                     invoke RtlInitializeGenericTableAvl, addr G_StTree, addr StCompare, addr StAlloc, addr StFree, NULL
    65.  
    66.                     mov edi,G_StBase
    67.                     mov ebx,StSize
    68.                     add ebx,edi
    69.                     .repeat
    70.                         mov eax,D[edi]
    71.                         lea ecx,[edi][4]
    72.                         mov Ste.Id,eax
    73.                         mov Ste.Nam3,ecx    ; ~ "STATUS_"
    74.                         invoke RtlInsertElementGenericTableAvl, addr G_StTree, addr Ste, sizeof(STE), FALSE
    75.                         mov ecx,ebx
    76.                         add edi,4
    77.                         xor eax,eax
    78.                         repne scasb
    79.                     .until Edi >= Ebx
    80.                 .else
    81.                     mov eax,STATUS_NO_MEMORY
    82.                 .endif
    83.             .endif
    84.         .endif
    85.     .endif
    86.     ret
    87. StInit endp
    88.  
    89. ; +
    90. ;
    91. StLookupName proc Id:ULONG
    92.     invoke RtlLookupElementGenericTableAvl, addr G_StTree, addr Id
    93.     test eax,eax
    94.     cmovnz eax,STE.Nam3[eax]
    95.     ret
    96. StLookupName endp
    > Есть ли ещё Srw.inc в сорсах?

    Это рипнутые системные slim-блокировки, хороший механизм.