Сейчас на форуме: -Sanchez-, morgot, sashalogout (+4 невидимых) |
eXeL@B —› Софт, инструменты —› x64dbg отладчик |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 22 . 23 . >> |
Посл.ответ | Сообщение |
|
Создано: 11 декабря 2013 11:49 · Поправил: Ra1n0 · Личное сообщение · #1 Актуальные ссылки: Документациия по отладчику - Новый проект от 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, Cigan, tRuNKator, Wargrinder, morgot, BiteMoon, mak, Illuzion |
|
Создано: 18 июля 2018 01:57 · Личное сообщение · #2 |
|
Создано: 21 июля 2018 15:49 · Личное сообщение · #3 mrexodia пишет: Currently the parser can be considered reasonably fast, parsing about 200,000 instructions in 1.5 seconds. как то по одной инстр в эту статистику у меня не вписывается, отсюда и вопрос. диз блоками декодирует, а асм двиг блоками может кодировать? и как бы сразу вытекающее,а как быть с long&short, ксед_парсе вроде их удаляет. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. | Сообщение посчитали полезным: plutos |
|
Создано: 28 июля 2018 13:28 · Личное сообщение · #4 f13nd пишет: BlackCode пишет: Но какова причина этого бряка? И как это пофиксить? Причина наверное в том, что int3 туда воткнул не отладчик. В ольге это делается в exceptions-ignore following-int3 breaks, в эксодии очевидно аналог этой опции engine-skip int3 stepping, либо engine-ignore inconsistent breakpoints (ну или может само исключение добавить. в исключения исключений). Написал Mr.eXoDia, он подсказал причину) Оказалось виной этому была галочка в настройках отладчика на Query process cooke* Убрал, стало все по феншую |
|
Создано: 28 июля 2018 17:02 · Личное сообщение · #5 |
|
Создано: 29 июля 2018 00:14 · Личное сообщение · #6 yashechka пишет: Покопался в коде. Весь код хранится в DLL. и GUI и DBG, Очень неудобная какая-то архитектура, я думал, что модуль DBG будет в EXE, а он вынесен отдельно. уважаемый яшечка! или пишите по делу и конструктивно, или заведите блог и там делитесь впечатлениями. ----- Give me a HANDLE and I will move the Earth. |
|
Создано: 31 июля 2018 04:05 · Личное сообщение · #7 |
|
Создано: 14 ноября 2018 06:42 · Личное сообщение · #8 Bronco Привет) Есть пара вопросов. Ты со скриптами больше все равно знаком, так вот: 1. Есть к примеру скрипт, там написано логирование регистров eax and edx при остановке на ret функции VirtualAlloc. Соответственно адрес размеченной секции и размер. Как все это можно направить в файл. 2. В ольке была команда в скриптах вывести окно мессага чтобы туда можно было ввести значение и уже с этим значением работать. В pdfке не нашел такой команды. Если что то обьяснил херово простите. Буду благодарен за ответы. |
|
Создано: 14 ноября 2018 10:40 · Поправил: VOLKOFF · Личное сообщение · #9 |
|
Создано: 14 ноября 2018 12:29 · Личное сообщение · #10 Bronco пишет: ри вызове метода заполняется структура MEMMAP, возвращают кол-во страниц в процессе, и данные о первой странице. пока не вкурю, как по оставшимся получить данные. наверное уже сами решили, но все же - ответ на ваш вопрос в сорсах, функция void MemoryMapView::refreshMap() там есть итерация по страницах. |
|
Создано: 14 ноября 2018 16:46 · Личное сообщение · #11 VOLKOFF пишет: дублировать лог Просто в логе помимо свох значений еще например куча Exception и прочего. И это приходится разделять. Удобнее конечно если бы можно опционально выводить что нужно в лог и в файл. VOLKOFF пишет: Есть команда msg Есть команда msgyn Первая просто месаг выводит, а вторая с кнопками да или нет. Другого не дано видимо. Иногда нужно вызвать мессаг, ввести там значение и чтобы оно оказалось в $result. Как смог так обьяснил) |
|
Создано: 04 декабря 2018 04:59 · Личное сообщение · #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. Как мне обозначить условия этого трэйсинга, что бы он шел от определенного места до того, где будет читаться константа из памяти? ----- Give me a HANDLE and I will move the Earth. |
|
Создано: 04 декабря 2018 07:27 · Поправил: r99 · Личное сообщение · #13 |
|
Создано: 05 декабря 2018 16:06 · Поправил: hash87szf · Личное сообщение · #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 |
|
Создано: 05 декабря 2018 22:32 · Поправил: difexacaw · Личное сообщение · #15 plutos > я хочу trace execution от entry point'a до места, где читается память Вы хотите невозможное. Как верно заметил hash87szf: > Скорость 2000 инстракшн/с... так шо, думайте Тот же вмп будет вариться с гигабайтной выборкой год", но есчо до этого обнаружит машинную трассировку(TF). Не для этих целей отладчик предназначен. Что бы отследить весь поток инструкций и выборку(обращение в память) нужно использовать dbi-инструменты. Обычно это эмуляторы/вм. Но и эти инструменты на данный момент сомнительны. Не по причине неработоспособности, а потому что и авер/авторы защиты так же это всё читают и дорабатывают. Что бы чётко сформулировать то что вам нужно, необходимо понимать что есть выборка. Отследить до места, где память читается" не корректная, хоть и понятная формулировка. Учитывая что норм защита использует вм, а они разумеется транслируют адреса, то такой подход deprecated. Вм элементарно может создать анклав - область памяти, которая N/A, либо в ней совсем иные данные для вм, нежеле те, которые вы обнаружите прочитав такую область. Не используется это в протекторах по одной причине - проблема указателей. Вм работает в юм, при передаче указателя в км произойдёт крэш. Можно выделить указатели, но врядле возможно их различить. Это не решённая задача. И весьма привлекательная для виксов - полный облом сканера памяти. Но это нельзя сделать для обычного формата пе, только если вводить свой. Для вм машин же реализовать анклав не проблема, так как они налету декриптуют данные, те есть инфа про исполняемые блоки. Так что в любой момент нужно ожидать что чтение области будет невозможно. А эту технику они освоят, несомненно. И тогда само понятие отладчика исчезнет, для работы с таким кодом. ----- vx | Сообщение посчитали полезным: plutos |
|
Создано: 06 декабря 2018 17:03 · Личное сообщение · #16 difexacaw пишет: Для вм машин же реализовать анклав не проблема Так реализуй уже че-нибудь, десять лет от тебя один треш и угар на форумах. | Сообщение посчитали полезным: ClockMan |
|
Создано: 06 декабря 2018 19:59 · Личное сообщение · #17 |
|
Создано: 07 декабря 2018 03:09 · Личное сообщение · #18 |
|
Создано: 07 декабря 2018 15:16 · Поправил: difexacaw · Личное сообщение · #19 |
|
Создано: 08 декабря 2018 17:33 · Личное сообщение · #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 код. ----- Everything is relative... |
|
Создано: 08 декабря 2018 18:47 · Личное сообщение · #21 |
|
Создано: 08 декабря 2018 19:48 · Личное сообщение · #22 |
|
Создано: 08 декабря 2018 20:01 · Поправил: f13nd · Личное сообщение · #23 |
|
Создано: 08 декабря 2018 20:01 · Личное сообщение · #24 |
|
Создано: 08 декабря 2018 20:17 · Личное сообщение · #25 f13nd,rmn вы не понимаете, зачем мне командная строка и ассемблер в виде ехе, когда мне нужно прилинковать его к плагину, работающему под х64dbg и на вход ему подавать по одной текстовой инструкции и получать её кодовое представление, а все остальное, релокации, оптимизации и т.д. делает декомпилятор. Выцепить из фасма сам ассемблер конечно можно, но написан он полностью на асме и всё в одном файле и куча инлюдов, чем копаться в таком коде, проще повеситься...) В общем пока 2 проблемы с Keystone решил: - вместо db последовательности кода из нескольких инструкций пришлось её сначала дизасмить по инструкциям и затем кормить ассемблеру. - это call far 0x33:addr тоже решил, он понимает такую запись lcall 0x33:addr в принципе XEDParse понимает все инструкции, но его прожорливость кода, не позволяет его использовать, созданный им код просто не помещается в отведенное для него место. ----- Everything is relative... |
|
Создано: 08 декабря 2018 20:28 · Поправил: f13nd · Личное сообщение · #26 Vamit пишет: вы не понимаете, зачем мне командная строка и ассемблер в виде ехе, когда мне нужно прилинковать его к плагину, работающему под х64dbg и на вход ему подавать по одной текстовой инструкции и получать её кодовое представление, а все остальное, релокации, оптимизации и т.д. делает декомпилятор. Я не понимаю самой задачи. Если это скрипт/плагин который может ассемблировать что-то налету чтоб тут же и исполнялось, не вижу проблемы в том, чтобы заполнить нужные поля инструкции и без внешней библиотеки. Если на входе их конечно не весь набор инструкций интела. Если задача просто перерабатывать код, не знаю при чем здесь тогда дебаггер. ----- 2 оттенка серого | Сообщение посчитали полезным: difexacaw |
|
Создано: 08 декабря 2018 20:56 · Личное сообщение · #27 Vamit У вас каждый день новые задачи. Вот есчо ассемблер понадобился зачем то.. > XEDParse - строит неоптимальный код Совершенно не понятно зачем вам понадобилось ассемблировать что то налету. С начала нужно выполнить обратную операцию(те дизасмить). Затем вы собрались компилировать выхлоп дизассемблера и это всё налету.. есчо и нужна зачем то оптимизация.. что вы вообще делаете ?? ----- vx |
|
Создано: 08 декабря 2018 21:03 · Личное сообщение · #28 |
|
Создано: 08 декабря 2018 21:05 · Личное сообщение · #29 |
|
Создано: 08 декабря 2018 21:07 · Личное сообщение · #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 а далее всё это построчно ассемблируется и релоцируется на нужное место ----- Everything is relative... |
|
Создано: 08 декабря 2018 21:13 · Личное сообщение · #31 |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 22 . 23 . >> |
eXeL@B —› Софт, инструменты —› x64dbg отладчик |