· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Плаг для ОллиДебаг

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Май 30, 2004 15:53:40 · Поправил: SolidCode

Люди, видел ли кто такой плаг или фичу для OllyDbg, чтобы можно было просмотреть какую-либо память в виде структуры (как API так и User Defined)? Хорошо, если ещё её можно и редактировать аналогично.


Дата: Май 31, 2004 19:10:20

Вы что, смеётесь?
Мне самому её писать, что-ли?
Ладно, найду время напишу. Хотя бы с минимумом возможностей.


Дата: Май 31, 2004 19:14:48
Правка

SolidCode
А ты подумал, что надо сделать, чтобы показывать структуры?

Как вариант, дизассемблировать можно, только как перегнать потом нужное в то, что понимает OllyDbg?


Дата: Май 31, 2004 20:08:52

Я ещё ничего не знаю и много об этом не думал.
Просто я знаю, что при работе в Олли мне не хватает возможности просмотреть содержимое по определённому адресу в виде определённой структуры.
АПИ-шные стуктуры можно подкачивать из windows.inc.


Дата: Июн 6, 2004 06:17:28 · Поправил: SolidCode

Вопрос к тем, кто хочет помочь с плагом.
Требуется преобразование из hex строки в число. Быстро по скорости, но не особенно в ущерб размеру.
Требования: должна преобразовывать от начала строки до первого символа, который не относится к hex. Должна понимать как заглавные варианты hex-символов, так и строчные.
У меня пока получилось лишь так:
;esi-ptr to string
;ebx-max address in string (esi+sizeof string)
;returns num in eax
HexStr2Num proc
    
    xor     eax,eax
    xor     edx,edx
    .repeat
        mov     dl,[esi]
        sub     dl,"0"
        js      @end
        cmp     dl,9
        jbe     @1
            sub     dl,11h
            js      @end
            cmp     dl,6
            jb      @2
                sub     dl,20h
                js      @end
                cmp     dl,6
                jae     @end
@2:
            add     dl,10
@1:
        shl     eax,4
        inc     esi
        add     eax,edx
    .until esi>=ebx
@end:
    ret

HexStr2Num endp


И ещё ламерский вопрос. Я не понял что такое union и чем он отличается от структуры и зачем он вообще.


Дата: Июн 7, 2004 04:05:54 · Поправил: q_q

SolidCode
Требуется преобразование из hex строки в число
Импортировать sscanf из crtdll.dll или msvcrt.dll?

что такое union ... и зачем он вообще
Например. Объединение можно рассматривать как структуру, все элементы которой имеют нулевое смещение от начала. При таком размещении разные элементы занимают в памяти один и тот же участок. Тем самым объединения обеспечивают возможность доступа к одному и тому же участку памяти с помощью переменных разного типа.


Дата: Июн 7, 2004 13:27:37

crtdll.dll - это часть WinAPI и есть в любой версии винды нчиная с 95? В противном случае - мне это не подходит. Я как плагин, т.е. библиотека не должен требовать ещё каких-либо библиотек, кроме системных.

Тем самым объединения обеспечивают возможность доступа к одному и тому же участку памяти с помощью переменных разного типа.

И всего то?! А я думал, голову ломал. Большое спасибо, q_q. Тогда, при отображении этого union, для каждого его члена берём один и тот же адрес в памяти, но интерпретируем по-разному в зависимости от типа. Правильно?

А как насчёт hex-строки. Быстрее варианты есть?


Дата: Июн 7, 2004 15:10:58 · Поправил: Black_mirror

А как насчёт hex-строки. Быстрее варианты есть?
Загляни в тему Str_to_Int может идеи появятся.


Дата: Июн 8, 2004 11:13:10

В целом концепция плагина получается следующая:
Выбираем из менюшки плаговю
Вводим адрес и выбираем структуру.
В текстовом окне выводится эта структура со всеми полями заполненными той информацией, которая была в памяти на момент просмотра. Если память недоступна (GPF), то пишем вопросы.
В следующей версии возможна и обратная операция, т.е. редактирование памяти из плага.


Дата: Июн 8, 2004 12:17:01 · Поправил: q_q

SolidCode
преобразование из hex строки в число ... У меня пока получилось лишь так
Тип числа - signed/unsigned?
Что будет результатом твоего варианта, если исходная строка содержит F'FFFF'FFFF, т.е. допустимых символов больше, чем вмещает eax?

не должен требовать ещё каких-либо библиотек
У меня нет возможности проверить все версии windows, afaik msvcrt есть всегда.
Теоретически можно посмотреть исходный текст sscanf, только он не тривиальный, потому что рассчитан не только на strhex_to_int.

берём один и тот же адрес в памяти, но интерпретируем по-разному ... Правильно?
Правильно. Только учти, что элементом структуры/объединения может быть структура/объединение.

А как насчёт hex-строки. Быстрее варианты есть?
Ты же просил не просто строку, а "до первого символа, который не..." Зачем быстрые, тебе много преобразований в секунду надо делать. Imho работа в отладчике не терпит суеты - подумал, порулил, посмотрел результаты, подумал и т.д.

концепция плагина получается следующая
Мне нравится.


Дата: Июн 9, 2004 03:40:48

> Мне нравится.

А я не понимаю зачем может пригодиться такой плагин ;-)


Дата: Июн 9, 2004 11:31:44

А я не понимаю зачем может пригодиться такой плагин ;-)
Я вот тут в олли ковырял свою прогу. Она брыкалась на обращении к GetOpenFileName. И у меня не оказалось интрумента, чтобы просто и быстро проверить правильность всех полей в структуре, которая ей передавалась. Не важно, что проблема оказалась в другом. Я это выяснил после похода на Олли форум. Всё-равно есть потребность в плаге, который позволяет быстро и удобно проверять все поля структуры. В Паскале такое было...
А в перспективе планируется и редактирование памяти из плага.
Правда, я ещё не продумал до конца, как прикрутить флаги к соответствующим переменным. Хотя бы к той же (OPENFILENAME ptr [eax]).Flags


Дата: Июн 9, 2004 12:14:37

SolidCode
не оказалось интрумента
Вывод отладочных сообщений?
Использование vkdebug?


Дата: Июн 9, 2004 13:43:11

Что подразумевается под отладочными сообщениями?
Мне удобен Олли, встроенный в РадАСМ.


Дата: Июн 10, 2004 03:50:10

SolidCode
OutputDebugString + DbgView, MessageBox, и, наконец, просто запись log-файла.

удобен Олли, встроенный
Чем он удобнее просто OllyDbg?

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.057