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

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


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

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

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

 eXeL@B —› Софт, инструменты —› Mr.eXoDia x64 dbg
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . >>
Посл.ответ Сообщение

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

Создано: 11 декабря 2013 11:49 · Поправил: 3 мая 2016 21:30 Ra1n0 New!
Цитата · Личное сообщение · #1

Актуальные ссылки:

sourceforge.net
http://x64dbg.com
https://github.com/x64dbg/x64dbg
scyllahide

Документациия по отладчику - --> Link <--

Новый проект от Mr.eXoDia и др.

Features:

Open-source
Intuitive and familiar, yet new user interface
C-like expression parser
Full-featured debugging of DLL and EXE files (TitanEngine)
IDA-like sidebar with jump arrows
IDA-like instruction token highlighter (highlight registers etc.)
Memory map
Symbol view
Thread view
Content-sensitive register view
Fully customizable color scheme
Dynamically recognize modules and strings
Import reconstructor integrated (Scylla)
Fast disassembler (BeaEngine)
User database (JSON) for comments, labels, bookmarks etc.
Plugin support with growing API
Extendable, debuggable scripting language for automation
Multi-datatype memory dump
Basic debug symbol (PDB) support
Dynamic stack view
Built-in assembler (XEDParse)
View your patches and save them to disk
Built-in hex editor
Find patterns in memory




| Сообщение посчитали полезным: ff0h, Gideon Vi, nick8606, Artem_N, JKornev, DimitarSerg, daFix, Rio, n0x90, DenCoder, Maximus, ELF_7719116, exprxp, Error13Tracer, Gerpes, SDFnik, VanHelsing, marius, jangle, hello, Bronco, mushr00m, HandMill, Johnatalbi, kassane, BAHEK, zNob, mkdev, Haoose-GP, HAOSov, mr qubo, Tyrus, kurorolucifer, Relax_, esa_r, Styx, Creckerhack, RootKey, RoKZaR, CKAP



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

Создано: 18 июля 2018 01:57 New!
Цитата · Личное сообщение · #2

Boostyq пишет:
На самом деле сложно их винить

все 3 опенсорс, при таком счастье, обвинять - это уже бес предел.
самим фиксить хлопотно, проще надстройку написать, а чтоб авторы фиксили, надо толпой , донатить.


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

Создано: 21 июля 2018 15:49 New!
Цитата · Личное сообщение · #3

mrexodia пишет:
Currently the parser can be considered reasonably fast, parsing about 200,000 instructions in 1.5 seconds.

--> Link <--
как то по одной инстр в эту статистику у меня не вписывается, отсюда и вопрос.
диз блоками декодирует, а асм двиг блоками может кодировать?
и как бы сразу вытекающее,а как быть с long&short, ксед_парсе вроде их удаляет.

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


Ранг: 32.2 (посетитель)
Статус: Участник

Создано: 28 июля 2018 13:28 New!
Цитата · Личное сообщение · #4

f13nd пишет:
BlackCode пишет:
Но какова причина этого бряка? И как это пофиксить?
Причина наверное в том, что int3 туда воткнул не отладчик. В ольге это делается в exceptions-ignore following-int3 breaks, в эксодии очевидно аналог этой опции engine-skip int3 stepping, либо engine-ignore inconsistent breakpoints (ну или может само исключение добавить. в исключения исключений).


Написал Mr.eXoDia, он подсказал причину)
Оказалось виной этому была галочка в настройках отладчика на Query process cooke*
Убрал, стало все по феншую

Ранг: 28.7 (посетитель)
Статус: Участник

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

Покопался в коде. Весь код хранится в DLL. и GUI и DBG, Очень неудобная какая-то архитектура, я думал, что модуль DBG будет в EXE, а он вынесен отдельно.


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

Создано: 29 июля 2018 00:14 New!
Цитата · Личное сообщение · #6

yashechka пишет:
Покопался в коде. Весь код хранится в DLL. и GUI и DBG, Очень неудобная какая-то архитектура, я думал, что модуль DBG будет в EXE, а он вынесен отдельно.


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


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

Создано: 31 июля 2018 04:05 New!
Цитата · Личное сообщение · #7

в SDK есть апи
bool DbgMemMap(MEMMAP* memmap);
при вызове метода заполняется структура MEMMAP, возвращают кол-во страниц в процессе, и данные о первой странице. пока не вкурю, как по оставшимся получить данные.

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

Создано: 14 ноября 2018 06:42 New!
Цитата · Личное сообщение · #8

Bronco Привет) Есть пара вопросов. Ты со скриптами больше все равно знаком, так вот:
1. Есть к примеру скрипт, там написано логирование регистров eax and edx при остановке на ret функции VirtualAlloc. Соответственно адрес размеченной секции и размер. Как все это можно направить в файл.
2. В ольке была команда в скриптах вывести окно мессага чтобы туда можно было ввести значение и уже с этим значением работать. В pdfке не нашел такой команды.
Если что то обьяснил херово простите. Буду благодарен за ответы.

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

Создано: 14 ноября 2018 10:40 · Поправил: VOLKOFF New!
Цитата · Личное сообщение · #9

А зачем сохранять именно в отдельный файл, если это будет дублировать лог?
Используете Log для вывода всего необходимого, если нужно память сохранить savedata регион сохраняет.

RoKZaR пишет:
вывести окно мессага

Есть команда msg
Есть команда msgyn

Ранг: 505.2 (!)
Статус: Модератор

Создано: 14 ноября 2018 12:29 New!
Цитата · Личное сообщение · #10

Bronco пишет:
ри вызове метода заполняется структура MEMMAP, возвращают кол-во страниц в процессе, и данные о первой странице. пока не вкурю, как по оставшимся получить данные.



наверное уже сами решили, но все же -
ответ на ваш вопрос в сорсах,
функция

void MemoryMapView::refreshMap()
там есть итерация по страницах.

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

Создано: 14 ноября 2018 16:46 New!
Цитата · Личное сообщение · #11

VOLKOFF пишет:
дублировать лог

Просто в логе помимо свох значений еще например куча Exception и прочего. И это приходится разделять. Удобнее конечно если бы можно опционально выводить что нужно в лог и в файл.
VOLKOFF пишет:
Есть команда msg
Есть команда msgyn

Первая просто месаг выводит, а вторая с кнопками да или нет. Другого не дано видимо. Иногда нужно вызвать мессаг, ввести там значение и чтобы оно оказалось в $result. Как смог так обьяснил)


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

Создано: 4 декабря 2018 04:59 New!
Цитата · Личное сообщение · #12

я хочу trace execution от entry point'a до места, где читается память (собственно, это не так важно, что именно там происходит). В более общем виде, хочу trace от одного места в программе до другого.

"To enable trace logging into trace view, you first enable it via “Start Run Trace” menu" - сделано.
А дальше не понимаю. Все tracing options - это Conditional Tracing.
Как мне обозначить условия этого трэйсинга, что бы он шел от определенного места до того, где будет читаться константа из памяти?


Ранг: 328.7 (мудрец)
Статус: Участник

Создано: 4 декабря 2018 07:27 · Поправил: r99 New!
Цитата · Личное сообщение · #13

пора уже под каждую команду написать образец применения

Ранг: 47.2 (посетитель)
Статус: Участник

Создано: 5 декабря 2018 16:06 · Поправил: hash87szf New!
Цитата · Личное сообщение · #14

plutos пишет:
Как мне обозначить условия этого трэйсинга, что бы он шел от определенного места до того, где будет читаться константа из памяти?

Вопрос не понятен.
Если конец известен, туда бряк и всё, trace into...
Если же ни конст, ни адрес памяти не известны, то хз как тормозить
У меня например проблема, есть начало и конец, где то глубоко внутри js алокатор создаёт памяти кусок, и что-то пишет число в память, а как этот момент умно поймать хз



plutos пишет:
"To enable trace logging into trace view, you first enable it via “Start Run Trace” menu" - сделано.

Это не надо. Это пишет логи если тыкать F7, F8, Animate...

Надо остановиться где вы хотите начать, и сюда:


https://x64dbg.readthedocs.io/en/latest/introduction/Expression-functions.html
cip - current instruction pointer
mod.base(cip) - module base addr at cip

https://x64dbg.readthedocs.io/en/latest/introduction/ConditionalTracing.html
must have, switch condition: mod.party(dis.branchdest(cip)) == 1

https://x64dbg.readthedocs.io/en/latest/introduction/Formatting.html
formatting...

Не забывать нажимать 'log file...' и заносить имя и тд иначе всё уходит в void/log tab
алсо записывать команды, хдбг их не запоминает если его выключить

вот так например я логи писал всех calls в main module
logtext
{a:cip} --- {a:dis.branchdest(cip)} --- {mod.base(cip)}
logcond
dis.iscall(cip) && (mod.base(cip) == 0x00400000)
switch
mod.party(dis.branchdest(cip)) == 1

Обходить, или не лезть в модули dll можно только чекая их адреса, whitelista нет

Скорость 2000 инстракшн/с... так шо, думайте

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



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

Создано: 5 декабря 2018 22:32 · Поправил: difexacaw New!
Цитата · Личное сообщение · #15

plutos

> я хочу trace execution от entry point'a до места, где читается память

Вы хотите невозможное. Как верно заметил hash87szf:

> Скорость 2000 инстракшн/с... так шо, думайте

Тот же вмп будет вариться с гигабайтной выборкой год", но есчо до этого обнаружит машинную трассировку(TF).

Не для этих целей отладчик предназначен.

Что бы отследить весь поток инструкций и выборку(обращение в память) нужно использовать dbi-инструменты. Обычно это эмуляторы/вм.

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

Что бы чётко сформулировать то что вам нужно, необходимо понимать что есть выборка. Отследить до места, где память читается" не корректная, хоть и понятная формулировка.

Учитывая что норм защита использует вм, а они разумеется транслируют адреса, то такой подход deprecated.

Вм элементарно может создать анклав - область памяти, которая N/A, либо в ней совсем иные данные для вм, нежеле те, которые вы обнаружите прочитав такую область.

Не используется это в протекторах по одной причине - проблема указателей. Вм работает в юм, при передаче указателя в км произойдёт крэш. Можно выделить указатели, но врядле возможно их различить. Это не решённая задача. И весьма привлекательная для виксов - полный облом сканера памяти. Но это нельзя сделать для обычного формата пе, только если вводить свой.

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

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



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

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

difexacaw пишет:
Для вм машин же реализовать анклав не проблема


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

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



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

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

Alchemistry

Что значит реализуй, я никогда не писал протекторы, зачем мне это.


Ранг: 988.8 (! ! !)
Статус: Участник

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

клерк, тебе про протекторы ничего не говорили
тебе сказали че-небудзь


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

Создано: 7 декабря 2018 15:16 · Поправил: difexacaw New!
Цитата · Личное сообщение · #19

reversecode

Давно реализовано даже в виде нескольких моторов, ищите сами. Что бы и вы поработали хоть в поисковике. Я намеренно ссылки с ядиска сюда не дам. Раз потролить захотелили.


Ранг: 302.1 (мудрец)
Статус: Участник

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

Как же достали меня эти ассемблеры, в x64dbg их 3 штуки (XEDParse, Keystone и Asmjit) и ни один нормально не работает.
XEDParse - строит неоптимальный код, если операнд константа в пределах -128-+128, то он записывает его как dword вместо byte при негативной записи константы
01CF24D1 | FF B5 E7 FF FF FF | push dword ptr ss:[ebp-19]
01CF24D7 | FF 75 E7 | push dword ptr ss:[ebp-19]
первую строку создал XEDParse, вторую Asmjit
Keystone - не ассемблирует db код (db код понимает только XEDParse) и не понимает константные сегменты, например call far 0x33:addr
Asmjit - не умеет ассемблировать push dword со значением более 0x7FFFFFFF
и ни один из них не умеет принудительно делать длинные переходы
Может подскажете какой-нибудь безглючный ассемлер (с исходниками или в виде либы, лучше для статической линковки), чтобы мог успешно создавать как х86, так и х64 код.

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

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

Vamit
fasm


Ранг: 302.1 (мудрец)
Статус: Участник

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

rmn
fasm не годится, написан на ассемблере, компилируется только в ехе файл, на вход ему нужно подавать листинги, по одной инструкции не делает, а разбираться что там на ассемблере написано и переделывать не вижу смысла


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

Создано: 8 декабря 2018 20:01 · Поправил: f13nd New!
Цитата · Личное сообщение · #23

Vamit пишет:
на вход ему нужно подавать листинги, по одной инструкции не делает

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

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

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

Vamit
Так сам кодогенератор выцепить можно. Бегло глянул, похоже там просто все: все в одном файле, инструкция последовательно парсится и stos'ятся байтики в буфер.


Ранг: 302.1 (мудрец)
Статус: Участник

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

f13nd,rmn
вы не понимаете, зачем мне командная строка и ассемблер в виде ехе, когда мне нужно прилинковать его к плагину, работающему под х64dbg и на вход ему подавать по одной текстовой инструкции и получать её кодовое представление, а все остальное, релокации, оптимизации и т.д. делает декомпилятор. Выцепить из фасма сам ассемблер конечно можно, но написан он полностью на асме и всё в одном файле и куча инлюдов, чем копаться в таком коде, проще повеситься...)

В общем пока 2 проблемы с Keystone решил:
- вместо db последовательности кода из нескольких инструкций пришлось её сначала дизасмить по инструкциям и затем кормить ассемблеру.
- это call far 0x33:addr тоже решил, он понимает такую запись lcall 0x33:addr

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


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

Создано: 8 декабря 2018 20:28 · Поправил: f13nd New!
Цитата · Личное сообщение · #26

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

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

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



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

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

Vamit

У вас каждый день новые задачи. Вот есчо ассемблер понадобился зачем то..

> XEDParse - строит неоптимальный код

Совершенно не понятно зачем вам понадобилось ассемблировать что то налету. С начала нужно выполнить обратную операцию(те дизасмить). Затем вы собрались компилировать выхлоп дизассемблера и это всё налету.. есчо и нужна зачем то оптимизация.. что вы вообще делаете ??

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

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

difexacaw
вмп же разбирает. Сворачивает граф и компилит его в другую секцию.


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

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

rmn

Но а причём тогда отладчик


Ранг: 302.1 (мудрец)
Статус: Участник

Создано: 8 декабря 2018 21:07 New!
Цитата · Личное сообщение · #30

Да все элементарно, декомпилятор вм работает как плагин под x64dbg, из вм кода создается псевдо код
028105F0+[451-457]: rvm_38 = rvm_28 + rvm_18
0281060D+[458-470]: [mvm]d<rvm_10 + 0xFFFFFFFC> = rvm_38
0281065C+[485-503]:v test rvm_30, rvm_30
02810690+[504-506]: [mvm]d<rvm_10 + 0xFFFFFFF8> = __$esp
028107D2+[614-614]: jz 0x02810BA0
затем распознаются регистры и строятся инструкции
028105F0+[451-457]: eax = add eax, edx
0281060D+[458-470]: [ebp + 0xFFFFFFFC] = eax
0281065C+[485-503]:v test ebx, ebx
02810690+[504-506]: [ebp + 0xFFFFFFF8] = esp
028107D2+[614-614]: jz 0x02810BA0
окончательный вид
01CF24C0: add eax, edx
01CF24C2: mov dword ptr [ebp + 0xFFFFFFFC], eax
01CF24C5: test ebx, ebx
01CF24C7: mov dword ptr [ebp + 0xFFFFFFF8], esp
01CF24CA: jz 0x01CF24E2
а далее всё это построчно ассемблируется и релоцируется на нужное место

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

Создано: 8 декабря 2018 21:13 New!
Цитата · Личное сообщение · #31

difexacaw пишет:
Но а причём тогда отладчик

Потому что он пилит не статический анализатор, а на трейсах.
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . >>
 eXeL@B —› Софт, инструменты —› Mr.eXoDia x64 dbg

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

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