Сейчас на форуме: -Sanchez-, morgot, sashalogout (+3 невидимых) |
eXeL@B —› Софт, инструменты —› x64dbg отладчик |
<< 1 ... 18 . 19 . 20 . 21 . 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 |
|
Создано: 15 апреля 2020 12:40 · Поправил: _MBK_ · Личное сообщение · #2 Снова ужасно извиняюсь перед сообществом за следующий ламерский вопрос Есть конструкция вида Code:
По идее, должна проверять состояние бита eax в переменной 6884868 и в зависимости от его состояния переход или делать или нет - так? По факту [6884868]=0x7DFE0298 Подставляю разные eax и пробую eax=0 переход есть eax=1 переход есть eax=2 перехода нет eax=3 перехода нет eax=4 переход есть eax=5 переход есть eax=6 перехода нет eax=7 перехода нет ... то есть явно битовой карте не соответствует хорошо, же, ставлю [6884868]=0xFFFFFFFF И, о чудо, логика не меняется! Кто тупит - я, отладчик или мне морочит голову какая то замаскированная ловушка? |
|
Создано: 15 апреля 2020 12:53 · Поправил: user99 · Личное сообщение · #3 |
|
Создано: 15 апреля 2020 13:38 · Личное сообщение · #4 |
|
Создано: 16 апреля 2020 01:06 · Поправил: Bronco · Личное сообщение · #5 возник вопрос по BRIDGE_IMPEXP void GuiAddStatusBarMessage(const char* msg); точнее как в кьюте устроен статус бар. по идее данные должны просто обновляться, но тут фуйня какая то, если в конце const char* не переноса строки(\n), созерцаем накопление данных в статус баре. х с ним, переносом строки как бы решается. но возникает другой вопрос, а что с прежней строкой? пытаюсь найти утечку,и не могу вкурить, асмджит на старте асмит просто в режиме турбо, пох лям, два, или три, инструкций. а со вторым заходом, такого турбо нет. в джите есть только резет и де_аттач, да и не думается, что если не сбрасывать CodeHolder, в нём будет накапливаться прежний поток. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 16 апреля 2020 08:58 · Поправил: Vamit · Личное сообщение · #6 Bronco StatusBar однострочный и не имеет строкового буфера, поэтому если туда пишешь быстрее чем можешь прочитать взглядом, то новая строка затирает предыдущую. Чтобы увидеть все строки пиши в окно лога, а в статус только стадии обработки (их можно продублировать и в лог для ориентации). Есть ещё момент, окна гуи отрисовываются функой синхронизации, которая периодически вызывается потоком, если до момента отрисовки записать несколько строк в одно место, то при отрисовке увидишь только последнюю строку. ----- Everything is relative... |
|
Создано: 16 апреля 2020 09:38 · Личное сообщение · #7 Vamit, но тогда получается что в конце мсг, символ переноса строки не нужен. а у меня без него длинная борода в статус баре. если это не статус_бар, тогда хз что делать с асмджитом, с каждым новым проходом он асмит медленней. по обновлению инфы в статус баре, это очень заметно. проверил патчер, он в зеро, выделенная память на выходе из цикла, меньше чем на старте. млять загадка. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 16 апреля 2020 10:26 · Личное сообщение · #8 но тогда получается что в конце мсг, символ переноса строки не нужен. В статусе нужен, если его нет то новая строка пристыковывается к старой, иначе затирает старую. с каждым новым проходом он асмит медленней чтобы скорость твоей обработки была максимальной нужно запускать её отдельным потоком и синхронизовать его вывод с гуи, тогда всё будет работать очень быстро - гуи отдельно, твой обработчик отдельно. Данный метод обкатан на свипере, быстродействие выросло почти в 30 раз. ----- Everything is relative... | Сообщение посчитали полезным: Bronco |
|
Создано: 16 апреля 2020 11:22 · Поправил: Bronco · Личное сообщение · #9 Vamit, на быстродействие особо не жалуюсь. и не уверен что будет быстрее, stl контейнер имеет свои пределы скорости обхода узлов. кол-во имеет значение. хотя на самом деле и сравнить то не с чем. если у тебя в отдельном потоке, включая диз_парс_асм, получается обработать минимум миллион инструкций, быстрее чем за 30 - 40 сек. я готов изменить мнение, и глянуть на твой вариант много поточности. с семплом мистера эксодиа, ещё медленей. но за советы спасибо. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 16 апреля 2020 12:07 · Поправил: ClockMan · Личное сообщение · #10 Bronco пишет: с семплом мистера эксодиа библиотека asmjit.dll 2017 года подпись, и она не обрабатывает некоторые инструкции типа instr xmm2, xmm2 во вторых он переводит стороку кода в опкод, который может быть длинее оригинального на 3-5 байт, или вообще укорачивает его Code:
----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
|
Создано: 16 апреля 2020 12:27 · Поправил: Bronco · Личное сообщение · #11 ClockMan пишет: библиотека asmjit.dll 2017 года подпись на паблике не так уже и много доступных асмдвигов. джит сапортится, ну и посвежее кейстоуна и ксед_парсе будет. у меня нареканий, кроме как к двойным нопам нет. ну из них он какие то асмит если атач не прицепился, могу залить обновлённые библы для дбг отдельно.//не приципился ну у меня со своими патчами проверил твой семпл Code:
что то ты попутал, это ксед таким грешит, добавляя к знаку ещё один знак.. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 16 апреля 2020 12:55 · Поправил: ClockMan · Личное сообщение · #12 |
|
Создано: 16 апреля 2020 13:12 · Поправил: Bronco · Личное сообщение · #13 |
|
Создано: 17 апреля 2020 10:48 · Поправил: Vamit · Личное сообщение · #14 Общий принцип создания поточных пользовательских задач, работающих синхронно с ГУИ дебагера простой: - Создается поток менеджера задач, его назначение запустить задачу, если она имеется. - В любом месте плагина (например, меню, исполняемая задача), где необходимо выполнить длительную обработку данных без блокировки ГУИ дебагера, создается пользовательская задача. В итоге может быть последовательность задач, выполняющихся одна за другой или между ними можно стартовать задачи дебагера (например, запуск кода на исполнение, при достижении Breakpoint в плагин придет его колбэк, в котором может быть запущена очередная задача). Так как в конкретный момент времени у нас работает только одна задача, то мультипоточная синхронизация данных плагина не нужна. Используемые структуры и определения: Code:
Code:
Здесь и далее string и Info(...), Error(...) любая строковая переменная и её вывод куда вам необходимо. Код функций: Code:
Пример запуска первоначальной или последующей задачи: Code:
Добавлю, если задача одна, то она стартует без менеджера, если во время исполнения задачи вызывается новая задача, то она будет запущена менеджером после окончания текущей. ----- Everything is relative... | Сообщение посчитали полезным: Bronco, Illuzion |
|
Создано: 17 апреля 2020 15:35 · Личное сообщение · #15 Vamit, грамотно. ща с гуляющим дитейлом капса разберусь, и обязательно попробую. Очень даже интересно, как это гуй живёт без родного GuiProcessEvents(); Добавлено спустя 5 часов 40 минут Vamit, вроде калбеков нет, куда всунуть задачу нифуя не поятно. И что значит задача, это юзер_код? есть семпл для теста? ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 17 апреля 2020 21:28 · Поправил: Vamit · Личное сообщение · #16 И что значит задача, это юзер_код? Задача - это любая твоя функа типа int FuncName();, выполняющая длительную обработку кода с выводом инфы в окна дебагера, во время исполнения кода функи гуи дебагера не блокируется, можно давить любые кнопки, ходить по окнам, а плагин будет параллельно выполнять свою задачу. Она может вызывать любые функции дебагера (асм, дизасм и т.д.). Например, деобфускация/девиртуализация защищенного протектором кода и т.д. - любая задача которую только можно придумать. Я же не знаю что у тебя за плагин, если есть меню, то каждый его пункт может быть задачей. ----- Everything is relative... |
|
Создано: 17 апреля 2020 21:56 · Поправил: Bronco · Личное сообщение · #17 Vamit пишет: асм, дизасм и т.д. я стараюсь по минимуму юзать апи отладчика, иначе там прицепом лезут патчер и скриптовой двиг. в основном селект_рид_врайт, ну что там ищё из титана, ну и без лога никуда.)) меню конечно есть, но судя по интам для вызова, у тебя похоже что надстройка над ним, и как это увязать с тем что уже есть хз. если не трудно сделай семпл, с хидерами и неймспейсами. хоть помсмотреть как оно в работе, и можно ли переделать под обычный калбек для войда. и что этот синхрон - GuiExecuteOnGuiThread(CreateTaskThread);, реально помогает? ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 18 апреля 2020 09:23 · Поправил: Vamit · Личное сообщение · #18 Bronco Если делать семпл, то в нем будет кода намного больше, чем я привел для синхронизации с гуи. Ты же сам знаешь как организовано меню в плагине, основная функа _plugin_registercallback(s_hPluginHandle, CB_MENUENTRY, (CBPLUGIN)MenuCallback); где MenuCallback - твоя функа обработки пунктов меню. Вот пример, как из неё вызвать задачу: Code:
где MyTask1, MyTask2 - твои функции обработки пунктов меню. Да, ещё забыл сказать, что в extern "C" DLL_EXPORT bool plugstop() необходимо добавить терминацию потоков s_TaskMan.Stop(); Добавлено спустя 16 минут Если пункт меню About или любой простой, то понятно что его не нужно запускать на исполнение отдельным потоком. Отдельным потоком (задачей) запускаются процессы блокирующие гуи или вызывающие внутри себя гуи для отрисовки, в этом случае процесс запускается как поточная задача, а все вызовы отрисовки/синхронизации с гуи из неё удаляются. ----- Everything is relative... |
|
Создано: 18 апреля 2020 10:11 · Поправил: Bronco · Личное сообщение · #19 Vamit, в самих в свитчах проблем не вижу. зарегить ещё один калбек то же не проблема. хотя мне казалось что функи надо на экспорт вешать, потому что я не понимаю, как из энума меню , здесь "RunTask(MyTask1)" адрес(ptr) вызова метода появится. -------- чтобы гуй не фризил, или не залипал, я с интервалом по таймингу, юзаю перед принтами GuiProcessEvents(), чтобы было понятно, что процесс идёт. теряю на этом конечно скорость, но в пределах разумного меня это устраивало. Хочется быстрее, потому что на входе до 100 лямов строк гавнокода, а быстрее чем 3 ляма за 1.5 минуты у меня не выходит. --------- Bronco пишет: потому что я не понимаю, как из энума меню , здесь "RunTask(MyTask1)" адрес(ptr) вызова метода появится. кажется вкурил, как это работает, завелось через преобразование типов "RunTask((tTask)MyTask1)". ща погоняем...)) ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 18 апреля 2020 11:23 · Личное сообщение · #20 чтобы гуй не фризил, или не залипал, я с интервалом по таймингу, юзаю перед принтами GuiProcessEvents(), чтобы было понятно, что процесс идёт. теряю на этом конечно скорость, но в пределах разумного меня это устраивало. Вот именно, что теряешь скорость, у меня ранее было аналогично, перешел на потоки и получил выигрыш в быстродействии почти в 30 раз. потому что я не понимаю, как из энума меню , здесь "RunTask(MyTask1)" адрес(ptr) вызова метода появится. Я всё же расписал, у тебя из енума меню, например, вызывалась функа void FuncName(); делаешь из неё int FuncName(); или исправь возвращаемый тип в typedef int (*tTask)(); на void, если не нужно значение возврата и передавай на неё указатель параметром в функцию RunTask, а её имя пиши сюда s_TaskMan.m_Task.m_sName - всё, более ничего и не нужно. А все вызовы GuiProcessEvents() вызываемые внутри твоей FuncName удали. Я уже всё расжевал, не знаю что ещё может быть непонятно... ----- Everything is relative... |
|
Создано: 18 апреля 2020 12:25 · Личное сообщение · #21 Vamit пишет: и получил выигрыш в быстродействии почти в 30 раз. респект. отличный код. гуй очень бодренький с ним. взял на вооружение. в 30 раз может позже, надо ещё вывод поскипать, но по таймигам на порядок быстрее сейчас. прирост больше чем в 2 раза. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 19 апреля 2020 14:07 · Личное сообщение · #22 Bronco пишет: In fresh builds, I wait 3 years until the binary search window settings are saved. Will be added soon Bronco пишет: They also removed the restart as admin, this is the same reason to stay on the old build ..) Maybe the translation is not working but this option is still here: https://i.imgur.com/MniNJrx.png Bronco пишет: for a log of 10k lines this is the limit, beyond the brakes, it is better not to go into the bookmark until the task is completed. Recently someone made some nice updates that should improve the log performance a lot. It's not perfect and I need to rewrite the log view to a table view to get good performance. Anyway that still doesn't answer the question why you use some super old version from 2018 :D Also you can try https://mega.nz/file/XpoH2Q4B#mY5FvCVakbQaNveHD_HbBf-jpdnCDyThtAvSGdkhzSQ (or compile from https://github.com/x64dbg/asmjit_xedparse) maybe it will be better... | Сообщение посчитали полезным: ClockMan, mak |
|
Создано: 19 апреля 2020 15:42 · Личное сообщение · #23 mrexodia пишет: Maybe the translation is not working but this option is still here: https://i.imgur.com/MniNJrx.png Thank you for not forgetting our forum. Not to offend you, just to let you know. | Сообщение посчитали полезным: Bronco |
|
Создано: 19 апреля 2020 20:31 · Поправил: Bronco · Личное сообщение · #24 mrexodia пишет: Anyway that still doesn't answer the question why you use some super old version from 2018 in fact, I rarely miss updates, always waiting for a new one. it is clear that the above is just excuses, well, yes, there is one reason, but better not say anything. I’m sitting calmly on this version of the solution, and slowly repairing the Primus. mrexodia пишет: maybe it will be better... ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 26 апреля 2020 15:28 · Поправил: ClockMan · Личное сообщение · #25 "nop dword ptr ds:[rax], eax" (invalid instruction) может кому будет интересно у меня отладчик тупо вис при частом обращении типа Code:
добавление после него команды zzz 5 аналог sleep всё стало работать намного лучше ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
|
Создано: 26 апреля 2020 16:26 · Поправил: Bronco · Личное сообщение · #26 ClockMan пишет: "nop dword ptr ds:[rax], eax" (invalid instruction) это ксед выё..живается со своим личным API для нопов, ...и зудис в туда же))) двойные нопы(с двумя операндами) джиту не скормишь. а вот так nop dword ptr ds:[rax], он понимает, байткод на выходе тот же самый. остальное так же Code:
а вот капс по старинке. Code:
и хз где правильно ClockMan пишет: у меня отладчик тупо вис при частом обращении типа встроенный асм менеджер ещё то горе. sleep не нужен, теряешь в скорости. Code:
----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 27 апреля 2020 12:03 · Поправил: ClockMan · Личное сообщение · #27 Bronco пишет: а вот так nop dword ptr ds:[rax], он понимает, байткод на выходе тот же самый. остальное так же ни хера он не понимает 0F1F00 == nop dword ptr ds:[rax], eax 0F1F nop opcode standart(unstandart 0F19,0F1C,0F1D,0F1E) 00 mod R/M в данном случае [eax]eax а может я так захочу NOP DWORD PTR DS:[RSP], ESP кому интересно маны на интел таблица по опкодам ищем раздел one,two,and three-byte opcode maps ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
|
Создано: 27 апреля 2020 14:03 · Поправил: Keksov · Личное сообщение · #28 |
|
Создано: 27 апреля 2020 18:37 · Поправил: Bronco · Личное сообщение · #29 ClockMan пишет: ни хера он не понимает ну так значит есть повод обновить библиотеку. За талмуд интела феньк, кста по нопам там так и написано, только с одним операндом.ModRM:r/m (r) самый длинный 9 байт 66 NOP DWORD ptr [EAX + EAX*1 + 00000000H], но вживую мне встречались все, от 3 до 15 байт. ----------------- вопрос по структурам бриджа или титана. как освободить память в куче от этих данных? ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 27 апреля 2020 21:40 · Поправил: VOLKOFF · Личное сообщение · #30 Bronco пишет: вживую мне встречались все, от 3 до 15 байт Фог кстати в Док уже много лет постоянно обновляется, последний апдейт от 2020-03-04 10.7 Using multi-byte NOPs for alignment The multi-byte NOP instruction has the opcode 0F 1F + a dummy memory operand. The length of the multi-byte NOP instruction can be adjusted by optionally adding 1 or 4 bytes of displacement and a SIB byte to the dummy memory operand and by adding one or more 66H prefixes. An excessive number of prefixes can cause delay on older microprocessors, but at least two prefixes is acceptable on most processors. NOPs of any length up to 10 bytes can be constructed in this way with no more than two prefixes. If the processor can handle multiple prefixes without penalty then the length can be up to 15 bytes. The multi-byte NOP is more efficient than the commonly used pseudo-NOPs such as MOV EAX,EAX or LEA RAX,[RAX+0] . The multi-byte NOP instruction is supported on all Intel P6 family processors and later, as well as AMD Athlon, K7 and later, i.e. almost all processors that support conditional moves. Если интересно у него и по cpp аналог есть и отдельные доки по "латенси" инструкций на разных семействах камней. |
|
Создано: 28 апреля 2020 10:29 · Поправил: Bronco · Личное сообщение · #31 VOLKOFF пишет: An excessive number of prefixes can cause delay on older microprocessors, but at least two prefixes is acceptable on most processors. хз...ни один асм двиг, кроме кседа, не кодирует нопы длиннее 6 байт. всё что больше 9 байтового, идёт с префиксами, а пеньки рекомендуют не больше двух. и кому это нужно, кроме как компиляторам.. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
<< 1 ... 18 . 19 . 20 . 21 . 22 . 23 . >> |
eXeL@B —› Софт, инструменты —› x64dbg отладчик |