Сейчас на форуме: bartolomeo, -Sanchez-, morgot, sashalogout (+5 невидимых) |
eXeL@B —› Софт, инструменты —› Capstone - The Ultimate Disassembler |
. 1 . 2 . 3 . 4 . 5 . >> |
Посл.ответ | Сообщение |
|
Создано: 03 марта 2017 00:47 · Личное сообщение · #1 2 марта 2017 года, была выпущена версия 3.0.5-rc2 дизассемблера Capstone. Предыдущий релиз был в Скачать: Компактный пример на питоне: Code:
Запуск и выхлоп: Code:
Описание изменений: Version 3.0.5-rc2 March 2, 2017 Release 3.0.5-RC2 is a release candidate version, with important fixes in the core & several bindings. Library Fix build for Visual Studio 2012 Fix X86_REL_ADDR macro Add CS_VERSION_MAJOR, CS_VERSION_MINOR, CS_VERSION_EXTRA Better support for embedding Capstone into Windows kernel drivers Support to embedded Capstone into MacOS kernel Support MacOS 10.11 and up Better support for Cygwin Support build packages for FreeBSD & DragonflyBSD Add a command-line tool "cstool" Properly handle switching to Endian mode at run-time for Arm, Arm64, Mips & Sparc X86 Some random 16-bit code can be handled wrongly. Remove abundant operand type X86_OP_FP Fix instructions MOVQ, LOOP, LOOPE, LOOPNE, CALL/JMP rel16, REPNE LODSD, MOV *AX, MOFFS, FAR JMP/CALL Add X86_REG_EFLAGS for STC and STD Fix instruction attributes for SYSEXIT, MOVW, ROL, LGS, SLDT Rename registers ST0-ST7 to be consistent with asm output Arm Properly handle IT instruction Fix LDRSB Fix writeback for LDR Fix Thumb BigEndian setup Fix arith extender Fix writeback for LDR Rename enum arm64_mrs_reg to arm64_sysreg PowerPC Print 0 offset for memory operand Sparc Fix POPC instruction Python binding Better PyPy support Add __version__ Better support for Python 3 Fix CS_SKIPDATA_CALLBACK prototype Cast skipdata function inside binding to simplify the API Java binding Better handle input with invalid code PowerShell binding New binding ----- EnJoy! | Сообщение посчитали полезным: Abraham, plutos, oldman, nice, DenCoder |
|
Создано: 03 марта 2017 01:14 · Личное сообщение · #2 |
|
Создано: 03 марта 2017 01:38 · Личное сообщение · #3 |
|
Создано: 03 марта 2017 01:45 · Личное сообщение · #4 plutos Ну как быстрый ответ на твой вопрос: есть твик использования движка на конкретной платформе. Если двиг будет использоваться только для x86 (например), то имеет смысл собрать специальную "diet" версию, которая будет содержать только то, что необходимо на конкретной платформе. Это позволяет значительно сократить размер библиотеки. Пример сборки: Code:
Пример проверки поддержки архитектуры: Code:
Подробнее: ----- EnJoy! |
|
Создано: 03 марта 2017 02:04 · Личное сообщение · #5 Хорошая библиотека, всё работает быстро и без ошибок. Использую её в нескольких проектах. Единственный минус - большой размер всей библиотеки(примерно 3 мб). Есть еще интересные вещи от той же группы координаторов: Последнее обновление библиотеки(1.0), было настолько радикальным, что старые костыли перестали работать. Нужно всё переписывать. ----- http://ntinfo.biz |
|
Создано: 03 марта 2017 03:09 · Личное сообщение · #6 |
|
Создано: 03 марта 2017 03:17 · Поправил: difexacaw · Личное сообщение · #7 hors > всё работает быстро и без ошибок. Задачи дизасма две - раскодировка инструкций или выхлоп текста(мнемоник). Профайл важен для первой задачи, тогда чем это лучше кседа, проводили тесты ? На стабильность тесты проводятся не на системном коде, а на спец конструкциях не корректных или на рандом буфере. ----- vx |
|
Создано: 03 марта 2017 03:32 · Личное сообщение · #8 |
|
Создано: 03 марта 2017 03:48 · Личное сообщение · #9 |
|
Создано: 03 марта 2017 03:53 · Личное сообщение · #10 |
|
Создано: 03 марта 2017 04:11 · Личное сообщение · #11 difexacaw пишет: но нечем собрать Windows - Core engine * The Capstone header files (*.h) for C programming. * 32-bit/64-bit DLLs & static libraries for Microsoft Windows 32-bit/64-bit. * A test file (test.exe) Win32 Win64 ----- EnJoy! | Сообщение посчитали полезным: difexacaw |
|
Создано: 03 марта 2017 04:13 · Личное сообщение · #12 difexacaw пишет: а на спец конструкциях не корректных или на рандом буфере Как и xed проверялся процессором, на данный момент один из самых стабильных и удобных движков, xed слишком громоздкий, а остальное либо сырое или же вообще школьное творчество. | Сообщение посчитали полезным: difexacaw |
|
Создано: 03 марта 2017 04:13 · Личное сообщение · #13 |
|
Создано: 03 марта 2017 04:14 · Личное сообщение · #14 |
|
Создано: 03 марта 2017 05:10 · Поправил: difexacaw · Личное сообщение · #15 Спасибо. .lib файл там кривой, не содержит прототипов. В хидерах описание кривое, какой прототип у cs_disasm ? Code:
4-й аргумент: > @address: address of the first instruction in given raw code buffer. Это виртуальный адрес или это относительно начала буфера смещение, не понятно. Если смещение, то зачем 64-битное.. тогда вероятно что это всё же адрес(VA). Куда статус возвращается, size_t это не cs_err судя по дефейну, вероятно какой то размер. Передаю адрес rdtsc/ret. Возвращает Eax = 1, в буфер ссылку на выделенный буфер в хипе, в котором число 0x254. Если предположить что возвращается cs_err, то это CS_ERR_MEM - страничного нарушения нет, это бага. Как это заюзать ? ----- vx |
|
Создано: 03 марта 2017 05:50 · Личное сообщение · #16 difexacaw пишет: Как это заюзать ? Судя по соседней теме, для вашей задачи нужно немного переписать код движка, это значительно ускорить работу и уменьшит размер. |
|
Создано: 03 марта 2017 07:01 · Поправил: difexacaw · Личное сообщение · #17 shellstorm У вас в импорте 8 либ типо api-ms-win-crt-heap-l1-1-0, я их гуглом нашёл, но всё равно не запускается - видимо это сишное дерьмо меняется в версиях. Зачем такой компиль нужен не понятно.. > нужно немного переписать код движка Ксед для той задачи заюзать не получилось, так как он винапишный, а тот прожект нэйтивный. ----- vx |
|
Создано: 03 марта 2017 10:03 · Поправил: SReg · Личное сообщение · #18 |
|
Создано: 03 марта 2017 10:44 · Личное сообщение · #19 difexacaw пишет: 4-й аргумент: > @address: address of the first instruction in given raw code buffer. Это виртуальный адрес или это относительно начала буфера смещение, не понятно. Если смещение, то зачем 64-битное.. тогда вероятно что это всё же адрес(VA). Это виртуальный адрес (я в первом посте привёл сорс на питоне, там по выхлопу понятно): Code:
Запуск и выхлоп: Code:
На сях вызов: Code:
По сути этот параметр задаёт базовое абсолютное смещение для использования движком при расчёте абсолютных адресов ----- EnJoy! |
|
Создано: 03 марта 2017 11:46 · Поправил: hors · Личное сообщение · #20 oldman пишет: как интегрируются capstone и unicorn? Я простейщий пример на уникорне написал, ну выполняет код, да, а чтобы получить дизасм текущей выполняемой инструкции, получалось что надо было ещё капстоновский cs_disasm вызывать, что видимо добавляет тормозов. Полный дизасм текущей инструкции или только длины? Если полный, то да, нужно Capstone подключать. Подключается стандартно, никаких проблем не было замечено. Если нужна только длина и адрес, то можно без Capstone. Ставится хук на область памяти: Code:
Теперь на каждой инструкции в этой области памяти вызывается функция: Code:
address адрес текущей инструкции size длина текущей инструкции. Но останавливаться на каждой инструкции долго(с Capstone или без). Поэтому намного быстрее сканировать текущую память на предмет нужных сигнатур и ставить в нужных местах брейкпойнты. То есть по сути тоже самое что мы делаем при трассировке/распаковке в обычном отладчике. Добавлено спустя -50 минут difexacaw пишет: Задачи дизасма две - раскодировка инструкций или выхлоп текста(мнемоник). Профайл важен для первой задачи, тогда чем это лучше кседа, проводили тесты ? Лучше Кседа тем, что больше поддерживаемых архитектур. ----- http://ntinfo.biz | Сообщение посчитали полезным: oldman, DenCoder |
|
Создано: 03 марта 2017 21:02 · Личное сообщение · #21 |
|
Создано: 03 марта 2017 21:23 · Поправил: difexacaw · Личное сообщение · #22 |
|
Создано: 03 марта 2017 22:16 · Личное сообщение · #23 difexacaw пишет: А зачем тогда такой пример выкладывать Вы действительно думаете, что я после каждой сборки бегу проверять секции с импортом? Открыл проектный файл, нажал кнопку собрать, залил результат на обменник, все. Нужно еще компилятор обновить, последнее обновление оказалось бажным, не отключается security check. |
|
Создано: 04 марта 2017 19:13 · Личное сообщение · #24 Хороша вещь. В плане анализа кода - хорошая альтернатива иде, может помочь обойти трудности в скриптах иды быстрее, есть такая теоретическая возможность. Под "В плане анализа кода" я имел в виду автоматический анализ. Большинство конструкций кода, применяемых техник шаблонные. И можно упростить себе анализ, разгрузив мозг от рутинных операций по анализу. А двиг на кэпстоуне хорош тем, что может позволить анализировать быстрей и легче код и под x86/x64, и под мипс, и под арм. Ну это моё мнение. ----- IZ.RU |
|
Создано: 13 марта 2017 02:41 · Поправил: DenCoder · Личное сообщение · #25 hors пишет: addHook(&traceCode,UC_HOOK_CODE,(void *)hookCode,this,0,0x1000) На своём любимом си так пока не попробовал. Решил ради освоения питона, заюзать unicorn на нём. Хорошее дело - хуки. Вот только по-разному себя ведёт функция reg_read() внутри хука и вне её Например, определили функцию Code:
Внутри функции хука: Code:
и в конце модуля Code:
По остановке на одной из инструкций из Code:
будет 2 вывода основных регистров ARM. Они должны бы быть одинаковые, но это не так: Code:
Отличается PC ----- IZ.RU |
|
Создано: 26 сентября 2017 05:31 · Поправил: Bronco · Личное сообщение · #26 hors пишет: Лучше Кседа тем, что больше поддерживаемых архитектур. +1 отличный дизасм, описание инструкций в структурах, иногда даже слишком "глубоко" для X86_OP_IMM (__int64) не мешало бы добавить размер константы в байтах, размер операнда указывает только на макси значение. Code:
----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 26 сентября 2017 19:21 · Поправил: difexacaw · Личное сообщение · #27 Bronco У дизасма есть две совершенно не связанные задачи. Первая это декодер инструкций, который предоставляет базовую инфу - наличие MRM, SRC/DST операндов, флаги и регистры(IN/OUT) etc. Вторая это текстовый вывод мнемоник. Обычно нужна вторая задача, но для неё подходит вообще любой дизасм, лучше/хуже оценивается по текстовому выхлопу. Для первой задачи важен профайл и гибкость мотора, что он может раскодировать. Есно для первой задачи никакая портабельность смысла не имеет. Для второй задачи смысла не и имеет профайл. ----- vx |
|
Создано: 28 сентября 2017 05:01 · Личное сообщение · #28 Пытаюсь установить CAPSTONE на FreeBSD. ./make.sh install => install -m0755 cstool/cstool /usr/bin install: cannot stat 'cstool/cstool': No such file or directory Похоже, что вот эта строчка в Makefile $(INSTALL_LIB) cstool/cstool $(BINDIR) вызывает ошибку. в google есть упоминание о подобной ошибке, но у них она каким-то образом исчезла сама по себе ----- Give me a HANDLE and I will move the Earth. |
|
Создано: 28 сентября 2017 11:42 · Личное сообщение · #29 |
|
Создано: 29 сентября 2017 00:12 · Личное сообщение · #30 $ sudo ./make.sh install => абсолютно идентичная ошибка. Я FreeBSD установил три дня назад и для меня это темный лес. Кое-что из Unix'a помню, но давно не пользовался. Так что, если кто может помочь, то обьясните пожалуйста подробно. Кроме того, куда устанавливается Capstone? и как убедится, что он установлен? пытался ./tests/test*, но валится на первом же файле: ./test_arm.c Permission denied, хотя я вроде как root. ----- Give me a HANDLE and I will move the Earth. |
. 1 . 2 . 3 . 4 . 5 . >> |
eXeL@B —› Софт, инструменты —› Capstone - The Ultimate Disassembler |