169 похожих чатов

Вопрос о стыковке x64dbg и fasm. Известная программа x64dbg_dd.exe в

функции которая строит поле address - имеет какую-то запутанную подпрограмму, которая при определённых условиях делает поле address вида "0x1234+EAX".
Но во-первых я со своими программами не встречал никогда такого (обращаю внимание что это адрес кода, а не аргумент в команде),
во-вторых если посмотреть SDK x64dbg - то у него функция сопоставления имени или коммента (_dbg_addrinfoset) не принимает подобных адресов.
Так что надо написать в фасме, чтобы он создал файл с такой вот адресацией кода?

12 ответов

45 просмотров

Если ты об этой проблеме то я вот какраз ее чинил. Здесь правленая утилита лежит поищи x64dbg_ddp.exe называется

Евгений- Автор вопроса
Денис Фомин Fomin
screenshot Если ты об этой проблеме то я вот какраз ее чинил....

Нет. Мне в принципе не нравится идеология x64dbg_dd. Я делаю плагин для прямой загрузки исходника. И в процессе исследования x64dbg_dd (x64dbg_ddp) увидел несколько непоняток и расхождений с FAS.TXT. Такое подозрение что x64dbg_dd вообще писалось не для x64dbg, а потом допилили для нужного формата. Или автор не читал документации. Не понятно вобщем. Функция формирующая поле address, как в метках так и в комментах, может писать просто 0x1234 (из Row of the assembly dump - Value of $ address), а может при каких-то условиях писать 0x1234+EAX (регистр формируется из полей Extended SIB for the $ address). В доке фасма вот: Table 4 Row of the assembly dump | +8 | qword | Value of $ address. | +16 | dword | Extended SIB for the $ address, the first two bytes are register codes and the second two bytes are corresponding scales. Но при каких обстоятельствах фасм создаёт эти Extended SIB к адресу? Что мне в исходнике сделать чтобы получить fas-файл с таким примером? SIB коды кстати некоторые не совпадают в мануале и в x64dbg_dd: 0x94 = 'eip' FAS.TXT, 0xF4 = 'eip' x64dd_dbg

Евгений
Нет. Мне в принципе не нравится идеология x64dbg_d...

Не знаю, у меня для локальных меток не выводилось module: и text: нормально, там другая функция включалась именно на локальные метки, какая то кривая, я там заджампился в конец кода на эту проверку, переписал формирование этих секций и вывод отправил на функцию вывода для глобальных меток, на сколько я вспомню сейчас. Вроде ок работает тут вроде никто не жаловался на глюки

Евгений- Автор вопроса
Денис Фомин Fomin
Не знаю, у меня для локальных меток не выводилось ...

А зачем вообще dd32 файл делать? Не проще ли сразу грузить fas в отладчик?

Евгений
А зачем вообще dd32 файл делать? Не проще ли сразу...

Да это было бы удобнее, для xdbg был такой плагин но он у меня не работал для x32 для x64 вроде работал говорили я не проверял, у меня винда 32x потому что. А для ollyDbg есть такой плагин рабочий!

Денис Фомин Fomin
Да это было бы удобнее, для xdbg был такой плагин ...

наоборот, для х64 не работал. а насчет dd32. не забывайте что сам х64dbg с тех пор мог и обновиться по форматам и поэтому dd уже плохо работает

Евгений- Автор вопроса
Aiwan \ (•◡•) / _bot
наоборот, для х64 не работал. а насчет dd32. не ...

x64dbg_dd работает, вопрос в другом. У него в коде есть возможность создания разных непонятных конструкций, которые непонятно как вообще будут импортированы в x64dbg, и не понятно при каких обстоятельствах они создаются. Я не понимаю что такое extended SIB в адресе. Я понимаю в команде - типа [ebp+n] или [eax*4+edx]. Но как это может быть в адресе размещения кода?!

Евгений
x64dbg_dd работает, вопрос в другом. У него в коде...

а то что ты написал как раз похоже на относительные адреса

Евгений- Автор вопроса
Денис Фомин Fomin
а то что ты написал как раз похоже на относительны...

Угу. И что надо написать в исходнике для фасма, чтобы он выдал код располагаемый по адресу 0x1234+EAX*4 например? Я не понимаю этого. Адреса кода всегда ведь только числовые.

Евгений
Угу. И что надо написать в исходнике для фасма, чт...

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

Евгений
x64dbg_dd работает, вопрос в другом. У него в коде...

Ну у тебя же .fas есть со всей информацией. Возьми да посмотри, какой код это сгенерировал. Но я думаю, что ты говоришь о чём-то вроде: label foo at ebx+ecx*4+0xcafebabe mov eax,[foo] ; а нужно оно, чтобы делать так ret Ну и собственно все ненормальные адреса надо просто пропускать. А нормально выглядящие фильтровать, проверяя, что они попадают внутрь модуля (например, если в этом примере убрать регистры, адрес будет простой, но в небо).

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта