Морфинг на функции Пирса

Admin

Original poster
Administrator
Сообщения
909
Реакции
751
Посетить сайт
Основа на macro'сах fasm'а
Код:
macro _nor r, a, b
{
    push a
    pop r
    or r, b
    not r
}

macro _not r, a
{
    _nor r, a, a
}

macro _and r, a, b, ar, br
{
    push ar br
    _not ar, a
    _not br, b
    _nor r, ar, br
    pop br ar
}

macro _or r, a, b, ar, br
{
    push ar br
    _nor ar, a, b
    _nor br, a, b
    _nor r, ar, br
    pop br ar
}

macro _xor r, a, b, ar, br, cr, dr
{
    push ar br
    _not ar, a
    _and ar, ar, b, cr, dr

    _not br, b
    _and br, br, a, cr, dr

    _or r, ar, br, cr, dr
    pop br ar
}

macro _mov r, a, ar, br
{
    _or r, a, a, ar, br
}
Для примера закодим сумматор

Код:
macro _add r, a, b, ar, br, cr, dr
{
    push cr dr

@@: test b, b
    je @f

    _mov cr, a, b, dr
    _xor r, a, b, ar, br, cr, dr
    _and cr, cr, b, a, dr
    shl cr, 1
    _mov b, cr, a, dr

    jmp @b
@@: pop dr cr
}
Это
Код:
    mov eax, 0x584d540
    mov ecx, 0x84877
    _add eax, eax, ecx, esi, edi, edx, ebx ; eax = 058D1DB7h
сгенерирует нам следующее
Код:
    mov eax, 0x0584D540
    mov ecx, 0x00084877
    push edx
    push ebx
L_0x00402021:
    test ecx, ecx
    je  L_0x004020C4
    push ecx
    push ebx
    push eax
    pop ecx
    or ecx, eax
    not ecx
    push eax
    pop ebx
    or ebx, eax
    not ebx
    push ecx
    pop edx
    or edx, ebx
    not edx
    pop ebx
    pop ecx
    push esi
    push edi
    push eax
    pop esi
    or esi, eax
    not esi
    push edx
    push ebx
    push esi
    pop edx
    or edx, esi
    not edx
    push ecx
    pop ebx
    or ebx, ecx
    not ebx
    push edx
    pop esi
    or esi, ebx
    not esi
    pop ebx
    pop edx
    push ecx
    pop edi
    or edi, ecx
    not edi
    push edx
    push ebx
    push edi
    pop edx
    or edx, edi
    not edx
    push eax
    pop ebx
    or ebx, eax
    not ebx
    push edx
    pop edi
    or edi, ebx
    not edi
    pop ebx
    pop edx
    push edx
    push ebx
    push esi
    pop edx
    or edx, edi
    not edx
    push esi
    pop ebx
    or ebx, edi
    not ebx
    push edx
    pop eax
    or eax, ebx
    not eax
    pop ebx
    pop edx
    pop edi
    pop esi
    push eax
    push ebx
    push edx
    pop eax
    or eax, edx
    not eax
    push ecx
    pop ebx
    or ebx, ecx
    not ebx
    push eax
    pop edx
    or edx, ebx
    not edx
    pop ebx
    pop eax
    shl edx, 1
    push eax
    push ebx
    push edx
    pop eax
    or eax, edx
    not eax
    push edx
    pop ebx
    or ebx, edx
    not ebx
    push eax
    pop ecx
    or ecx, ebx
    not ecx
    pop ebx
    pop eax
    jmp  L_0x00402021
L_0x004020C4:
    pop ebx
    pop edx
попробуй разберись) Для большего хардкора можно заюзать rept (но если бит не занят, то будет работа вхолостую).

Ну или на C'шке

Код:
#define nor(a, b)  (~(a | b))

#define not(a   )  nor(a, a)
#define and(a, b)  nor(not(a), not(b))
#define  or(a, b)  nor(nor(a, b), nor(a, b))
#define xor(a, b)  or(and(not(a), b), and(not(b), a))

uint32_t add(uint32_t a, uint32_t b)
{
    return b ? add(xor(a, b), and(a, b) << 1) : a;
}

uint32_t neg(uint32_t a)
{
    return add(not(a), 1);
}

uint32_t sub(uint32_t a, uint32_t b)
{
    return add(a, neg(b));
}
..что компилятор всячески оптимизирует, и не есть избыточно как на макросах, но тоже неплохо с отключенной оптимизацией.

Стрелки Пирса хороши для построения логики (как пример) какого-то АЛУ для ВМ при минимальном наборе команд. Аналогичным образом можно использовать штрих Шеффера.
 
Название темы
Автор Заголовок Раздел Ответы Дата
Support81 Neuralink на пороге чуда: FDA одобрило имплант для слепых Новости в сети 0
Support81 Crimson Palace: кибершпионский тайфун обрушился на Юго-Восточную Азию Новости в сети 0
Support81 Tropic Trooper: хакеры теперь сеют хаос на Ближнем Востоке Новости в сети 0
B Брут на Bongacams Предоставляю работу. Ищу специалиста. 0
Support81 ФБР раскрыло сеть влияния на выборы США Новости в сети 0
Support81 От защите к атаке: MacroPack перешел на сторону хакеров Новости в сети 0
Support81 Убийцы на расстоянии: раскрыт международный заговор сваттеров Новости в сети 0
Support81 Тайна псевдонима: ФБР использовало книгу на Amazon как главную улику в деле Новости в сети 0
Support81 Что общего между F-16 и Tinder? Новая игра США на Ближнем Востоке Новости в сети 0
Support81 Sway и QR-коды: опасный фишинговый тандем, нацеленный на сервисы Microsoft 365 Новости в сети 0
Support81 Telegram на грани: арест Дурова ставит под угрозу будущее мессенджера Новости в сети 0
Support81 Схема «Мамонт»: 4500 мошенников охотятся на арендодателей Новости в сети 0
Support81 Дело Павла Дурова: на перекрестке технологий, политики и прав человека Новости в сети 0
Support81 5 миллионов сайтов на грани взлома из-за LiteSpeed Cache Новости в сети 0
Support81 Сертификат на взлом: хакерам предложат выйти из подполья в России Новости в сети 0
Support81 UULoader обрушил серию мощных атак на жителей Азии Новости в сети 0
Viktor_KVARIS Ожидает оплаты Ищу специалиста по лидогенерации. Ниша: Продажа недвижимости на Пхукете Предоставляю работу. Ищу специалиста. 0
Support81 CryptoCore: за кулисами аферы на $5,4 млн Новости в сети 0
Support81 Лариса Долина лишилась недвижимости на 130 миллионов рублей Новости в сети 2
Support81 В Молдове задержаны мошенники, организовавшие финансовую пирамиду на 750 000 евро Новости в сети 0
G Интересно [ADS|CEO] поток трафика на ваш сайт Ищу работу. Предлагаю свои услуги. 0
Support81 Роскошное авто или троян? Хакеры из APT28 играют на ваших желаниях Новости в сети 0
Support81 Project Disrupt: как молодые канадцы обманули систему на миллион долларов Новости в сети 0
Support81 Осторожно, груз опасен: глобальная фишинг-атака на промышленные компании Новости в сети 0
PUZAN Получаем от 5к до 50к ₽ на халяву Способы заработка 3
Support81 Троян на 3000 устройствах: как начались Олимпийские игры в Париже Новости в сети 1
Support81 Хомяк ест ваши деньги: за что на самом деле борются игроки Hamster Kombat Новости в сети 2
semsvm Интересно Заработок на заливах до 30к$ и выше в месяц Способы заработка 0
semsvm Интересно Регулярно от 500$ и выше каждый месяц на полном пассиве. Способы заработка 1
АнАлЬнАя ЧуПаКаБрА Куплю Куплю базы mail:pass usa тематики ставки на спорт Куплю/Продам 0
Support81 TAG-100: открытый код на службе шпионов Новости в сети 0
Support81 ShadowRoot: новая вымогательская угроза обрушилась на турецкий бизнес Новости в сети 0
Support81 DNS-атака на DeFi: сотни протоколов оказались под угрозой взлома Новости в сети 0
Support81 Gh0st RAT, RedTail, XMRig: какие ещё угрозы могут проникнуть на ваш компьютер из-за уязвимости в PHP Новости в сети 0
Chekon ✅ sms.chekons.com - ⭐ Сайт для получения SMS на реальные номера USA "Non-VoIP, безлим SMS, API" от 0.4$ за номер⭐ Ищу работу. Предлагаю свои услуги. 0
Support81 Mekotio: обновлённый банковский троян нацелился на Латинскую Америку Новости в сети 0
Support81 Бухгалтерия как приманка: новые детали атак VasyGrek на компании РФ Новости в сети 0
turbion0 Новая мошенническая схема, нацеленная на индивидуальных предпринимателей и тех, кто использует режим «Налог на профессиональный доход» Новости в сети 0
T Без предоплаты! Взлом почты Mail.ru на заказ, взлом почты Рамблер, Взлом пароля Rambler.ru inbox.ru list.ru bk.ru internet.ru xmail.ru Ищу работу. Предлагаю свои услуги. 0
F Ожидает оплаты Traffic - на любые ваши проекты | Traffic Angels! Ищу работу. Предлагаю свои услуги. 0
Support81 0day-эксплойт для Chrome выставлен на продажу за $1 000 000 Новости в сети 0
Support81 48 часов на спасение: LockBit выставили ультиматум хакеров Федрезерву Новости в сети 1
Support81 Интернет-тролли: кто они на самом деле? Новости в сети 0
Support81 Удаленщики играют с работодателями в кошки-мышки: на грани этики и контроля Новости в сети 0
Support81 Беспринципный исследователь «обнёс» криптобиржу Kraken на $3 млн Новости в сети 0
Support81 102 года за фишинг: афера на $1,5 млн закончилась для мошенников тюремной камерой Новости в сети 0
Support81 30 дней на сборы: Slack объявил дедлайн для пользователей из РФ Новости в сети 0
Support81 70% киберспециалистов на грани срыва, 64% уже подыскивают новую работу Новости в сети 1
Support81 Рост на 625%: программы-вымогатели бьют все рекорды в мае Новости в сети 0
Klauus Требуются люди на вбив логов Предоставляю работу. Ищу специалиста. 1

Название темы