Сейчас на форуме: bartolomeo, -Sanchez-, morgot, sashalogout (+5 невидимых) |
eXeL@B —› Софт, инструменты —› Unicorn - The ultimate CPU emulator |
<< . 1 . 2 . 3 . 4 . 5 . >> |
Посл.ответ | Сообщение |
|
Создано: 19 октября 2017 13:52 · Поправил: mak · Личное сообщение · #1 Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework based on QEMU. Unicorn offers some unparalleled features: Multi-architecture: ARM, ARM64 (ARMv8), M68K, MIPS, SPARC, and X86 (16, 32, 64-bit) Clean/simple/lightweight/intuitive architecture-neutral API Implemented in pure C language, with bindings for Crystal, Clojure, Visual Basic, Perl, Rust, Ruby, Python, Java, .NET, Go, Delphi/Free Pascal, Haskell and Pharo. Native support for Windows & *nix (with Mac OSX, Linux, *BSD & Solaris confirmed) High performance via Just-In-Time compilation Support for fine-grained instrumentation at various levels Thread-safety by design Distributed under free software license GPLv2 Последний мастер - Последний релиз Version 1.0.2-rc4 (30.06.2020) - Code:
Сборка - следуем указанию в Code:
*Если MINGW64 Портабельный то здесь нужно указать полный путь с названием диска $ cd c:/msys64/unicorn ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: plutos, Isaev |
|
Создано: 28 августа 2019 08:30 · Поправил: DenCoder · Личное сообщение · #2 Bronco Примерно, как я эмулил VMOV. Читаем доку на проц по инструкциям, пишем декодинг, ставим хук на каждую инструкцию, где по опкодам выделяем содержащую регистр инструкцию, эмулим, регистр запоминаем где-нить внутри. Костыль, конечно, но временная мера, если очень надо Code:
----- IZ.RU | Сообщение посчитали полезным: plutos |
|
Создано: 28 августа 2019 11:11 · Личное сообщение · #3 Bronco пишет: хз как это эмулить, получать то не от куда Code:
----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: plutos |
|
Создано: 28 августа 2019 15:55 · Личное сообщение · #4 DenCoder пишет: если очень надо прежде чем постить, конечно же погрузился в талмуд..)) но мониторить на хуке, по ходу в первую очередь надо не саму инструкцию "XGETBV", а то что раньше переключало контекст AVX(XSAVE/XRSTOR). А в стыренном теле под виртой этого нет. если с первым битом регистра xcr0 понятно, при саппорте проца и ОС, он всегда равен зеро, то со вторым битом я пока не разобрался. В энуме uc_x86_insn, набор AVX есть, но видимо это тупо пошло прицепом из энума диза. Собственно для полноценной эмуляции цпу в юникорне дофуя чего ещё нужно, а у меня задача тупо хапнуть трассу с конкретного стыренного тела. Чтобы процесс эмуля не завершался, чего то надо тыкнуть в EDX, и переступить инструкцию... ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 23 октября 2019 19:05 · Личное сообщение · #5 |
|
Создано: 27 декабря 2019 01:42 · Личное сообщение · #6 Unicorn Engine tutorial - In this tutorial you will learn how to use Unicorn Engine by solving practical exercises. There are 4 exercises and I will solve the first exercise for you. For the others I am providing hints and solutions, which you can obtain by clicking the spoiler buttons. Fast FAQ: What is Unicorn Engine? It is an emulator. Not usual though. You don’t emulate whole program or system. Also, it doesn’t support syscalls. You have to map memory and write data into it manually, then you can start the emulation from a chosen address. When is it useful? You can call an interesting function from the malware, without creating a harmfull process CTF’s Fuzzing Plugin for gdb that predicts the future, for example further jumps. Emulating obfuscated code. What do I need to have installed for this tutorial? Unicorn Engine with python binding A disassembler ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: DimitarSerg, plutos |
|
Создано: 11 апреля 2020 19:15 · Личное сообщение · #7 |
|
Создано: 18 мая 2020 14:18 · Поправил: Bronco · Личное сообщение · #8 в свежем была пара семплов, сейчас на них всё тип-топ. но у меня посыпались UC_MEM_FETCH, на обычных переходниках. как то uc_mem_map_ptr работает не так, как раньше. Code:
типа камень в огород зудиса. асм джит енкодит только выхлоп капса. странно конечно, ибо tword ptr в джите прописан. кейстоун энкодит с tbyte ptr, и с fword ptr, билдер с++ только pword ptr. в общем пиздец синхронизация...))) чтобы заполнить структуру uc_x86_mmr юзаем интрик _sgdt(&gdtr); ---------- XGETBV - уникорн до сих пор не знает длины, ловить на хуках бесполезно. с такой длинной uc_mem_read выдаёт ошибку, и нифуя не читает. регистров XCR0&XCR1 то же не наблюдается... пока решение старое, если даёт длину ого-го, подключать капс и костылить.. Code:
ну и наверно риторический вопрос, нафуя нужны рег CR0 -CR10, если запрос доступен только в режиме ядра, и то не для всех регистров? ----- Чтобы юзер в нэте не делал,его всё равно жалко.. | Сообщение посчитали полезным: mkdev, mak |
|
Создано: 31 мая 2020 12:41 · Личное сообщение · #9 собранное в студии на известных мне семплах, работает чётко. типа собирать в минжв уже нет необходимости. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. | Сообщение посчитали полезным: dma/sty |
|
Создано: 31 мая 2020 19:20 · Личное сообщение · #10 Выше mak давал ссылку на Есть перевод (правда не до конца, но все же). Может кому будет интересно. | Сообщение посчитали полезным: ARCHANGEL |
|
Создано: 01 июня 2020 22:14 · Личное сообщение · #11 как то все эти статьи ни о чём, и самое главное, ни одна, не раскрывает полного потенциала сабжа. по сути уникорн, это очень удобная надстройка над кьюэму, ну а чтобы полноценно завести двиг, надо немного больше, чем просто замапить семпловый код и память под стек. пока только один проект действительно заслуживает если юзать двиг в связке с Mr.eXoDia x64 dbg, суеты по настройкам конечно на порядок меньше, но ни в одной статье сами настройки не описаны. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. | Сообщение посчитали полезным: SReg, dma/sty, ARCHANGEL |
|
Создано: 02 июня 2020 19:38 · Личное сообщение · #12 |
|
Создано: 02 июня 2020 20:18 · Личное сообщение · #13 difexacaw пишет: ведь достаточно выполнить напрямую смысл не в том как исполнять, а контроль и получение нужной инфы в процессе исполнения, и желательно быстро. он не эмулит железо, при правильных настройках, он практически эмулит среду ОС. твой визор 3 часа дрючил тупо загрузочный код, с одной лишь задачей, выйти на оригинальный стаб. задачу ставили тебе, ведь ты перья распускал, да собственно и сейчас задираешься, сабж включая ещё 2 двига (диз и асм), за 3 минуты эмулит исполнение до 300 лямов инструкций, и это с фильтрацией, рипом в бинарь и логированием. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. | Сообщение посчитали полезным: dma/sty |
|
Создано: 02 июня 2020 22:10 · Поправил: difexacaw · Личное сообщение · #14 Bronco А какой толк тупо от потока инструкций, его эмуляции. Авер есчо и системные примитивы эмулит, это всегда какие то обрывки и заглушки, а не полноценная даже часть юзер кода. > задачу ставили тебе, ведь ты перья распускал, да собственно и сейчас задираешься, > сабж включая ещё 2 двига (диз и асм), за 3 минуты эмулит исполнение до 300 лямов инструкций > визор 3 часа дрючил Нет, он 4 часа при 4-х запусках крутил. 3600*1.5M/s ~ 5.3Gips 1.6M Ip/sec получается. Это пропускная способность никакая, на фолтах в км быстрее. У дий профайл был на момент запуска ~1.44M/s при всех включённых механизмах(на удивление число аналогичное, можешь сам проверить), адресной трансляции и кучи мониторов. Если бы сабж работал, то ты им бы крутил то же самое время. Профайл бт порядка 0.15G/s, сохранение контекста его даже если снижает на порядок, то это всё равно на порядок быстрее. Причём не тупо эмуляция, а полная работа в системе. Крутни и покажи что это хоть как то работает и для чего то пригодно, msgbox ? ----- vx |
|
Создано: 03 июня 2020 12:19 · Поправил: Bronco · Личное сообщение · #15 difexacaw пишет: Это пропускная способность никакая, на фолтах в км быстрее. хз...у тебя вывод в консоль или на диск, а у меня вывод в кьютвиджет, + доуевент с гуем отладчика, естественно потери тайма будут. и если статистика по таймингу для эмуляции (исполнение) такого кол-ва строк, не превышает 2-3 минут, для меня это приемлемо. тот же титан, растягивает это удовольствие больше чем на сутки, а может и более..., вот это реально просадка. difexacaw пишет: А какой толк тупо от потока инструкций, его эмуляции у меня первичная задача получить линейный код, конкретного участка из приложения. и я фильтрую трансферы за пределы страницы. difexacaw пишет: Крутни и покажи что это хоть как то работает и для чего то пригодно, msgbox ? дал же ссылку на готовый проект, собери и посмотри для чего можно юзать. там и картинки есть... ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 08 июня 2020 20:57 · Поправил: difexacaw · Личное сообщение · #16 Bronco > у тебя вывод в консоль или на диск Тайминг снимается всегда на потоке инструций в цикле, за исключением сервисных/прерываний и прочих системных событий. > 2-3 минут, для меня это приемлемо. Так у тебя за это время проходит 270Mips, это что асп запускается на столь низком числе итераций(могу тебе статистику по всем снять) > собери и посмотри для чего можно юзать. Зачем мне собирать всякий мусор, если можно спросить. Прямая адресная трансляция, без каких либо выгрузок контекста, прямой замер кэша - 150Mip/s. Это при совершенной реализации на IA, оптимизация врядле возможна. Сурки паблик на васм. > хз...у тебя вывод в консоль или на диск, а у меня вывод в кьютвиджет, + доуевент с гуем отладчика, естественно потери тайма будут. Консольный IPC доли секунд занимает, очём вообще речь. Гуй это очередь сообщений, апп может ждать своего сколь угодно долго. Поэтому для замеров никакие события системы не юзаются никогда я говорил. > и я фильтрую трансферы за пределы страницы. Через ловушки походу ? Адресный декодер возвращает размер выборки, конечно можно юзать всякий самопал типо диз движков, но ни один из них на сколько знаю подробности по выборке не возвращает. Только ксед. Чем же ты определишь к примеру размер выборки fld, капстоном, есчо кучей примитивных дизов - нет конечно, ставь ловушки и лови события 0,2Mip/s месяц асп придётся крутить ----- vx |
|
Создано: 09 июня 2020 03:09 · Поправил: Bronco · Личное сообщение · #17 difexacaw пишет: апп может ждать своего сколь угодно долго чтоб да, так нет..)) чуть дольше, и гуй дбг может залипнуть... и....на долго, если не на совсем...)) difexacaw пишет: Тайминг снимается всегда на потоке инструций в цикле, за исключением сервисных/прерываний и прочих системных событий. ну это твоё утверждение, а у меня общий тайминг, до завершения текущей задачи. и ~1.5 лямов rip/c меня вполне пока устраивает. пусть у тебя в 100 раз или более быстрее, что изменится за мои "лишние 2 минуты"? difexacaw пишет: Через ловушки походу ? хз... это же не гипервизор, где надо подстраиваться под нужные события(vmexit), и зачем трапы, если в сабже rip под контролем? difexacaw пишет: Зачем мне собирать всякий мусор, если можно спросить. если бы наши задачи совпадали, то я бы согласился с таким подходом, и ответил бы на твой вопрос. но меня не интересует системный код, просто без него никуда, ибо апп лезит к железу...)) а проект далеко не мусор, и крутит гавнопрот на порядок быстрее твоего двига. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 09 июня 2020 19:37 · Поправил: difexacaw · Личное сообщение · #18 Bronco > на порядок быстрее твоего двига. На какой порядок, если у тебя тайминг аналогичный как при копировании в буфера. У бин трансляции на порядки выше(вся затыка в адресной трансляции, на васм есть тема - оптимальный вариант это лишь несколько уровней транс таблиц(<=3), иначе на выборке и синхронизациях профайл сядет. Все прочие существующие dbi это и близко не используют, два потока и встанет колом весь гуй и все циклы). Придлагали использовать хэш таблицы - это невозможно сделать, так как сама таблица должна покрывать всё ап. Не имеет смысла это обсуждать, у меня есть конкретные замеры, у тебя их нет. Выложи семпл 86, я его прокручу, сниму всю статистику, дий его разберёт полностью. Всю активность и профайл по передачам управления в юзер модуля тоже. Интересно почему раньше небыло примера.? ----- vx |
|
Создано: 09 июня 2020 21:44 · Поправил: sefkrd · Личное сообщение · #19 |
|
Создано: 10 июня 2020 00:39 · Личное сообщение · #20 |
|
Создано: 10 июня 2020 20:59 · Поправил: difexacaw · Личное сообщение · #21 Bronco Тоесть семпла нет!? И остальная чушь тобой написана безосновательно, да я так и думал(профайл в точности как у дий - этого невозможно как совпадение, ты тупо взял известные цифры). Придётся самому это дерьмо собирать, загружать всякие компилеры. А после сборки это не заведётся, ты же сам выше говорил. Незачем таскать всякое дерьмо толстое, в юм достаточно прямого исполнения. Эмуляция не нужна(трансляция быстрее эмуляции, тем более в таком колхозном жирном виде). ----- vx |
|
Создано: 10 июня 2020 21:44 · Поправил: Bronco · Личное сообщение · #22 difexacaw, мне пох, как ты коментишь мои посты, искать сказанное ранее, не буду, лучше повторюсь - я не ведусь на понты, а на дешёвые так тем более. моя задача решается сабжем в пределах минут, хотя апп под виндой стартует до 2-3 минут, прежде чем что то отрисует. и как семпл, он тебе вряд ли подойдёт. твой уровень это крякми не более 100 кило, с твоих же слов. твоя задача растянута на часы, и тебе с этим жить. а эмуляция или трансляция, это уже частности. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 10 июня 2020 22:05 · Поправил: difexacaw · Личное сообщение · #23 Bronco > моя задача решается сабжем в пределах минут Ты уже десяток раз повторил это, у твоей задачи слишком малое число итераций, в лучшем случае это всеми любимый upx, слишком мал крипто цикл поэтому так быстро заводится. На час уходил тогда тайминг из за огромного числа итераций, да прямой запуск занимал 10 секунд. > твой уровень это крякми не более 100 кило, с твоих же слов. Очередной бред, отображением в память система занимается и 0.1M это ниочем. Прекрати курить дурь. Если же аргумента нет, то скажи честно что слился. Это даже не новость, не ты один а сразу все. ----- vx |
|
Создано: 11 июня 2020 01:16 · Личное сообщение · #24 difexacaw пишет: Очередной бред, difexacaw пишет: Прекрати курить дурь. difexacaw пишет: скажи честно что слился. вот если твое_личное_наболевшее убрать, то то что останется, просто фееричное гавно, типо - в лучшем случае это всеми любимый upx как всегда, сам придумал, сам и радуешься... найди мне упых, который стартует больше 2х минут.. и ваще, очнись, топ про сабж, а не про задачку которую ты крутил каким то гавнокодом 4 часа не понятно за чем. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 12 июня 2020 20:16 · Поправил: difexacaw · Личное сообщение · #25 Bronco > который стартует больше 2х минут.. Я тебя рассматриваю как деревенского парня который как и все такие не способен к элементарным расчётам. Какая же там школа Зная на основе данных выше скорость трассировки 1.6Mips можно всё посчитать. Вот сейчас посмотрел upx - апп не важно, визор выдаёт число инструкций до EP(AI это обружена абсолютная выборка при этом событии выведено число IP's и произошёл останов; повторные запуски не изменяют количество инструкций что значит что это статик стаб, не полиморф/метаморф и тп, он тупо fixed). 6.2Mips получается в upx до OEP. У тебя профайл 1.6Mips, значит upx запускается ~4sec. > 2х минут. Соответственно это обычный примитивный софт. Тот же семпл с тем же профайлом 1.5Mips будет крутится ~1 час у тебя. Вся суть в том, что тебе достаточно для примитив семплов пару минут, при этом юзая чужие эмули. Они локально не дадут больший профайл, полтора это технический предел. Если изменить эмуляцию на трансляцию то диз одного адреса происходит один раз, затем при следующем выполнении всё зависит от скорости софт кэша инструкций. Диз не происходит, а идёт быстрая выборка из кэша. Вот тут и засада происходит. Потому что на этом способность писать быстрый код проявляется как нигде лучше. c5a7_12.06.2020_EXELAB.rU.tgz - upx.png ----- vx |
|
Создано: 12 июня 2020 20:29 · Личное сообщение · #26 |
|
Создано: 12 июня 2020 20:50 · Поправил: difexacaw · Личное сообщение · #27 |
|
Создано: 12 июня 2020 20:55 · Личное сообщение · #28 |
|
Создано: 12 июня 2020 21:04 · Поправил: difexacaw · Личное сообщение · #29 VOLKOFF Это у модера выше спроси, я загрузил маленькую картинку и действительно она при загрузке побилась. А он выше постом пришёл в не понятную тему что то утверждать - нахуй нужен такой модер, если его скрипты глючат при загрузке картинки. Это не учитывая что может кто либо провести на это атаку. - ничего на скрине интересного нет, вывод счётчика инструкций для upx. Аналогичные скрины для любого штатного семпла уже видели тысячи раз, оно всё однотипное, создано по шаблону. ----- vx |
|
Создано: 12 июня 2020 21:20 · Личное сообщение · #30 Archer, так подобная шняга "...попытку обсудить технически ...", то же без тегов. ща вот товарисЧ_урбанист, меня крестьянином кличет, и то же тегов нет.. печально одно, после веселья, посты потрут, ранг срежут, и ещё раз убедишься, что чел шибко токсичный, и лучше игнОрить. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 12 июня 2020 21:31 · Поправил: difexacaw · Личное сообщение · #31 Bronco Так что всё слив не ты первый вы все слились. Если ты приводишь стату то её непременно проверят и вычислят; да там 3-го класса математика ппц. Ты работал с апп не накрытым сложным протектором, которые крутить нужно долго. Но суть то в ином, лишь только я могу крутить апп до условия(критерия) EP. Потому что я его сформулировал и реализовал. Ты ничего про OEP не знаешь. ----- vx |
<< . 1 . 2 . 3 . 4 . 5 . >> |
eXeL@B —› Софт, инструменты —› Unicorn - The ultimate CPU emulator |