eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 28 января!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: hlmadip (+3 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Софт, инструменты —› Capstone - The Ultimate Disassembler
<< . 1 . 2 . 3 . 4 .
Посл.ответ Сообщение


Ранг: 577.9 (!)
Статус: Модератор
Research & Development

Создано: 3 марта 2017 00:47 New!
Цитата · Личное сообщение · #1

2 марта 2017 года, была выпущена версия 3.0.5-rc2 дизассемблера Capstone.

Предыдущий релиз был в 2015 году.

Скачать:
www.capstone-engine.org/download.html

Компактный пример на питоне:
Code:
  1. # test1.py
  2. 2 from capstone import *
  3. 3 
  4. 4 CODE = b"\x55\x48\x8b\x05\xb8\x13\x00\x00"
  5. 5 
  6. 6 md = Cs(CS_ARCH_X86, CS_MODE_64)
  7. 7 for i in md.disasm(CODE, 0x1000):
  8. 8     print("0x%x:\t%s\t%s" %(i.address, i.mnemonic, i.op_str))

Запуск и выхлоп:
Code:
  1. $ python test1.py
  2.  
  3. 0x1000: push    rbp
  4. 0x1001: mov rax, qword ptr [rip + 0x13b8]


Описание изменений:
www.capstone-engine.org/changelog.html

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

| Сообщение посчитали полезным: Abraham, plutos, oldman, nice, DenCoder


Ранг: 126.3 (ветеран)
Статус: Участник

Создано: 18 апреля 2018 13:58 New!
Цитата · Личное сообщение · #2

RoKZaR
Потому что все реверсеры играют в конкурентов, которым надо заработать денех на покушоть, вместо того, чтобы спроектировать единый фреймворк и апи для реверсерских инструментов.


Ранг: 577.9 (!)
Статус: Модератор
Research & Development

Создано: 18 апреля 2018 15:16 New!
Цитата · Личное сообщение · #3

RoKZaR пишет:
Почему нельзя выбрать Диз который хочется?
Хочется испытать и выбрать для себя подходящий.


Качай предыдущую версию x64dbg, в которой использовался Capstone, и тестируй, сколько нужно.

Ранг: 9.0 (гость)
Статус: Участник

Создано: 18 апреля 2018 15:29 New!
Цитата · Личное сообщение · #4

Jupiter пишет:
Качай предыдущую версию

Мерси за совет


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 18 апреля 2018 17:18 New!
Цитата · Личное сообщение · #5

Bronco пишет:
при выходе из цикла, у меня "ломается", всё детальное описание в списке.

Code:
  1. 2. Notes.
  2. Internally, csdisasmiter behaves exactly like cs_disasm if we call cs_disasm with argument count = 1. However, csdisasmiter is faster because it reuses (and also overwrites) the same memory to store disassembled instruction, avoiding all the malloc/realloc in the loop above. So if we just need to do some quick iteration through all the instructions, csdisasmiter should be considered.

данные в структуре самой инструкции, не изменяются, а вот подробное описание, при вкл опции переписывается след инстр, на этом экономия времени и выделенной памяти. собственно ссылки из DETAIL последней инстр, во всём списке инструкций выше по списку. Насколько понял, API можно юзать для быстрого анализа_разбора, и поиска. дублировапть капстоновские структуры, считай переписать весь модуль,+ к этому переписывать весь проект..дофуя...НЕ ХОЧУ..

Ранг: 266.3 (наставник)
Статус: Участник

Создано: 18 апреля 2018 21:51 · Поправил: difexacaw New!
Цитата · Личное сообщение · #6

Bronco

Кому же это нужно если есть ксед - табличный декодер. Только не здоровый разумом может использовать какие то кривые движки, но не использовать при этом и даже не тестить или сравнить другой мотор. Тема по мойму даже не про дизасмы, а про адекватность тех кто их юзает.


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 18 апреля 2018 22:43 New!
Цитата · Личное сообщение · #7

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

Ранг: 266.3 (наставник)
Статус: Участник

Создано: 18 апреля 2018 22:51 New!
Цитата · Личное сообщение · #8

Bronco

А когда сборка начала являться проблемой ?

Найдите конечный билд.

А есчо ксед давно саппортится и апдейтится, это лучший дизасм, всё остальное - уг. Да и по профайлу/стабу тоже лучший.

| Сообщение посчитали полезным: VanHelsing



Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 18 апреля 2018 23:21 New!
Цитата · Личное сообщение · #9

difexacaw пишет:
А когда сборка начала являться проблемой ?

бу-бу..бу-бу... БУ... прочитай весь пост, грамотей..
или грамоты хватает только на одно предложение?
difexacaw пишет:
Найдите конечный билд.

ты же пиаришь, тебе и искать. мне пока не горит, и если не найдёшь, цена твоему посту ЗЕРО.

Ранг: 266.3 (наставник)
Статус: Участник

Создано: 18 апреля 2018 23:41 · Поправил: Модератор New!
Цитата · Личное сообщение · #10

Bronco

Вот тебе билд что бы не парился", линкуй и юзай. Документация там просто чудесная.

Главное мозги не еби и не будь мудаком.

От модератора: Полегче, а то бан

{ Атач доступен только для участников форума } - xed.7z

| Сообщение посчитали полезным: DenCoder



Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 19 апреля 2018 00:14 · Поправил: Модератор New!
Цитата · Личное сообщение · #11

difexacaw пишет:
и не будь мудаком.

учить читать посты, тебя уже поздно.
так что олень, ганибало свой прикрой, и со своим огрызком диза, больше не рисуйся.

От модератора: Не ведись на провокации

Ранг: 230.1 (наставник)
Статус: Участник

Создано: 19 апреля 2018 05:04 New!
Цитата · Личное сообщение · #12

Сезонное обострение шизофрении чаще встречается при приступообразном типе течения болезни. При изменении светового дня на 2 часа в ту или иную сторону часто происходят обострения шизофрении при ее длительном течении. Это как раз попадает на межсезонье, то есть весну и осень. Сбивается привычный ритм жизни и внутренние биоритмы больного человека.

Чаще всего приступы проявляются в виде аффективных расстройств. Это приводит к периодам депрессии или мании. Даже здоровый человек чувствует себя в весенне-осеннее время, испытывая меланхолию, снижение работоспособности и слабость. Но если здоровый человек вполне способен своими силами справляться с сезонным унынием, то человеку, страдающему эндогенным процессом преодолеть эмоциональную неустойчивость под силу только с помощью специалистов в области психиатрии.

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

| Сообщение посчитали полезным: DrVB_5_6


Ранг: 0.0 (гость)
Статус: Участник

Создано: 22 апреля 2018 06:57 New!
Цитата · Личное сообщение · #13

difexacaw пишет: А когда сборка начала являться проблемой ?

собрать не проблема, но кто будет писать бридж для голого xed'a?
движок ради движка сомнительная трата времени, к нему нужно еще пилить интерфейсы, которые +- должны соответствовать остальным движкам, есть брать родные структуры xed'a, по размеру выйдет еще больше чем у capstone, у первого выхлоп подробней чем у последнего. с дизасм длин орнул, человеку вообще то выхлоп нужно асмить. когда таргет сильно переваливает за 100 мегабайт x64 кода накрытого парой-тройкой говнопротов, внезапно мир розовых пони начинает рушиться.

| Сообщение посчитали полезным: Bronco



Ранг: 401.4 (мудрец)
Статус: Участник
_Вечный_Студент_

Создано: 1 мая 2018 05:11 · Поправил: plutos New!
Цитата · Личное сообщение · #14

в этой теме несколько раз уже упоминался xed.
До недавнего времени я о нем ничего не слышал, но вдруг столкнулся с этой штукой совсем с другой стороны. Мне нужно было парсить совсем небольшие фрагменты бинарного кода, стал писать свой "лисапет", но неожиданно заметил, что у сарая нет одной стены, а именно, что имеется X86 Encoder Decoder by Intel. Вспомнил про эту тему и решил спросить:

-- про тот ли самый X86 Encoder Decoder здесь идет речь?
и
-- каковы общие впечатления у тех, кто пользовался? Плюсы, минусы...

Ранг: 0.0 (гость)
Статус: Участник

Создано: 1 мая 2018 05:51 New!
Цитата · Личное сообщение · #15

plutos пишет: про тот ли самый X86 Encoder Decoder здесь идет речь?

У intel'a он один:
https://software.intel.com/en-us/articles/xed-x86-encoder-decoder-software-library

plutos пишет:каковы общие впечатления у тех, кто пользовался? Плюсы, минусы...

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

| Сообщение посчитали полезным: plutos



Ранг: 401.4 (мудрец)
Статус: Участник
_Вечный_Студент_

Создано: 1 мая 2018 06:03 New!
Цитата · Личное сообщение · #16

-->X86 Encoder Decoder<--

--> XED Build Guide <--

если кому вдруг надо...


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 1 мая 2018 08:53 New!
Цитата · Личное сообщение · #17

plutos пишет:
если кому вдруг надо...

да неплохо бы енкодер мистера обновить, а то он на avx512 спотыкается. а так если правильно подать, на остальном отлично работает, и судя по отчётам в одиночку, остальные 2 двига отдыхают.

| Сообщение посчитали полезным: plutos



Ранг: 401.4 (мудрец)
Статус: Участник
_Вечный_Студент_

Создано: 1 мая 2018 09:03 New!
Цитата · Личное сообщение · #18

Bronco пишет:
остальные 2 двига отдыхают.


ну первый, это, конечно, capstone, а второй?


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 1 мая 2018 09:29 New!
Цитата · Личное сообщение · #19

plutos пишет:
ну первый, это, конечно, capstone, а второй?

не ..я о другой части --> кседа <--,по инклудам видно, с чего диа собирал свой парсер асма.
а диз один и сабжевый.


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 28 мая 2018 07:57 · Поправил: Bronco New!
Цитата · Личное сообщение · #20

shellstorm пишет:
но кто будет писать бридж для голого xed'a?

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

Ранг: 0.0 (гость)
Статус: Участник

Создано: 28 мая 2018 11:30 New!
Цитата · Личное сообщение · #21

Bronco пишет: ты прав, чуваку по ходу даже мнемоника не нужна, только длины, и он с ними носится.

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

| Сообщение посчитали полезным: Bronco


Ранг: 266.3 (наставник)
Статус: Участник

Создано: 1 июня 2018 19:21 New!
Цитата · Личное сообщение · #22

shellstorm

Не соглашусь. Я во первых не рекламировал двиг, а указал на самый эффективный по профайлу, учитывая прошлый опыт. Интерфейсы не имеют значения.

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

Ранг: 0.0 (гость)
Статус: Участник

Создано: 1 июня 2018 23:32 New!
Цитата · Личное сообщение · #23

difexacaw пишет: Интерфейсы не имеют значения

Естественно, если решать сферические задачи, но реальный мир сложнее.

difexacaw пишет: Пересборка, те вызов конструктора - в любом возможном случае этого следует избегать

Конечно, особенно если ничего не знать о деобфускации и девиртуализации. Сама по себе снятая трасса не сильно полезна, её ещё нужно привести до удобоваримого состояния.

Ранг: 266.3 (наставник)
Статус: Участник

Создано: 2 июня 2018 00:46 New!
Цитата · Личное сообщение · #24

shellstorm

Работа с кодом в данном случае делится на фазы. Первая получается маркировка линейных блоков. Вторая фаза это свёртка кода, когда выделяется маркированный код. На этом этапе резолвится задача data vs code через слежение за исполнением. Третья фаза - абстрагирование от выделенного кода, это именно через конструктор можно сделать, например деморфить. Но это столь специфические задачи, что общее решение врядле вообще возможно.


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 2 июня 2018 04:15 New!
Цитата · Личное сообщение · #25

shellstorm пишет:
Сама по себе снятая трасса не сильно полезна

+1, и ксед, в текущем состоянии, пока не подходит, для решения даже простых задач.
да и на этот не структурированный выхлоп, лочат памяти на 1 инстр, на порядок больше чем в капстоне всё вместе взятое с подробным описанием.

Ранг: 266.3 (наставник)
Статус: Участник

Создано: 2 июня 2018 09:13 · Поправил: difexacaw New!
Цитата · Личное сообщение · #26

Bronco

Что значит лочат память" ?

Имеется ввиду размер выходных структур ?

Какое это имеет значение, если вы берёте от туда нужную инфу и буфер затирается и используется вновь, нп стек ?

Тут где то есть соответствующая тема про диз профайлы, там я выбирал самый лучший. А есчо были железячные тесты, был реализован аппаратный декодер длин(он медленный из за механизма исключений), который определял длину инструкций аппаратным путём(страничный PF). Только через этот мотор проводились тесты всяких других дизасмов. Все тестируемые были анстаб и возникали ошибки на первых секундах диза рандомом заполненного буфера, лишь несколько моторов являются стабильными, из них это во первых очень старый декодер длин 86 Malum'a, но он медленный, dizahex(не раскодирует NPX) и ксед. Остальные не являются стабильными, это значит что для произвольного кода применяться не могут.


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 10 июня 2018 19:56 · Поправил: Bronco New!
Цитата · Личное сообщение · #27

взято из этого поста
0F 2F 81 88 01 00 00
zydis:
Code:
  1. comiss xmm0, dword ptr ds:[rcx+0x188]
  2. size: 7, id: 105, opcount: 3
  3. operand 1 (size: 32, access: read, visibility: explicit) "xmm0", register: xmm0
  4. operand 2 (size: 32, access: read, visibility: explicit) "rcx+0x188", memory segment: ds, base: rcx, index: none, scale: 0, displacement: 0x0000000000000188
  5. operand 3 (size: 64, access: write, visibility: hidden) "rflags", register: rflags

сабж:
Code:
  1.    COMISS XMM0, XMMWORD(!) PTR [RCX + 0x188]
  2.    instruction->size : 0x07 byte
  3.    CS_AC_READ  ( 1 )
  4.    x86->operands[0].type: X86_OP_REG
  5.    x86->operands[0].reg : X86_REG_XMM0
  6.    x86->operands[0].size: 0x10 byte(!)
  7.    CS_AC_READ  ( 1 )
  8.    x86->operands[1].type: X86_OP_MEM 
  9.    x86->operands[1].size: 0x10 byte(!)
  10.    x86->operands[1].mem.base: X86_REG_RCX
  11.    x86->operands[1].mem.disp: 0x188
  12.    REG WRITE:[0] X86_REG_RFLAGS (0x620001a)|

слинковал свежий cstool:
Code:
  1. 0  0f 2f 81 88 01 00 00                    comiss       xmm0, xmmword(!) ptr [rcx + 0x188]
  2.         Prefix:0x00 0x00 0x00 0x00
  3.         Opcode:0x0f 0x2f 0x00 0x00
  4.         rex: 0x0
  5.         addr_size: 8
  6.         modrm: 0x81
  7.         disp: 0x188
  8.         sib: 0x0
  9.         op_count: 2
  10.                 operands[0].type: REG = xmm0
  11.                 operands[0].size: 16(!)
  12.                 operands[1].type: MEM
  13.                 operands[1].mem.base: REG = rcx
  14.                 operands[1].mem.disp: 0x188
  15.                 operands[1].size: 16(!)
  16.         Groups: sse1

--> Online-Disassembler<--
--> Online-Assembler <--
сейчас даже асмджит не берёт этот выхлоп капстона.
плезир, оформите исузу на гитхабе капстона --> Link <--
--------
66 0F 19 04 00 | NOP WORD PTR DS:[RAX + RAX], AX
мелочь, но сабж по своему декодирует
Code:
  1. NOP WORD PTR CS:[RAX + RAX]
  2.    instruction->size : 0x05 byte
  3.    CS_AC_READ  ( 1 )
  4.    x86->operands[0].type: X86_OP_MEM 
  5.    x86->operands[0].size: 0x02 byte
  6.    x86->operands[0].mem.segment: X86_REG_CS
  7.    x86->operands[0].mem.base: X86_REG_RAX
  8.    x86->operands[0].mem.index: X86_REG_RAX

--------
difexacaw пишет:
Какое это имеет значение

да как то на тебя, нет больше желания время тратить. проходи просто мимо.

Ранг: 17.8 (новичок)
Статус: Участник

Создано: 18 декабря 2018 20:48 New!
Цитата · Личное сообщение · #28

Version 4.0

--> Link <--

Ранг: 266.3 (наставник)
Статус: Участник

Создано: 19 декабря 2018 18:03 New!
Цитата · Личное сообщение · #29

RevCred

Толку от ссылки, нет самого важного - тестов.
<< . 1 . 2 . 3 . 4 .
 eXeL@B —› Софт, инструменты —› Capstone - The Ultimate Disassembler

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS