Сейчас на форуме: tyns777 (+4 невидимых) |
![]() |
eXeL@B —› Программирование —› MSDIS |
Посл.ответ | Сообщение |
|
Создано: 06 октября 2010 20:27 · Поправил: mak · Личное сообщение · #1 Вопрос такой , тема собственно извечная и не раз подымалась , мне нужен дизасм двиг , их полно , но каждый не подходит по опеределенным причинам , то что подходит хорошо возможно имеет ошибки внутри. Но вопрос не в этом , в поисках решения хотел избежать написания Интерфейса врапера для дизасма , то есть выбор решений такой , выбрать двиг что больше подходит , сделать Врапер для дизасмов , или найти лучший вариант. В лучший вариант попал двиг от майкросовта , под названием MSDIS170.dll, он имеет (вроде как по просмотру в иде) (диз)ассемблер , то есть похоже может собирать код , для меня это 50 процентов работы в программе. Но как пользоваться длл с первого взгляда не понятно , там сделано как то как с ООП , есть некоторые хидеры , которые вроде отчасти описывают интерфейс , но по вызову их напрямую их не существует и имена изменены в експорте. Не суть важно. Ктонибудь работал с этой библиотекой? Может подскажете , есть ли там ассемблер команд, и может с использованием что то по новее есть чем на рсдн? На РСДН есть такой пример для версии старой Code:
Саму либу приложу внизу , если когото заинтересует .. В файле msdis.h описано , может и достаточно , не знаю , но понять сразу не получилось , может от перегрузки работой. В любом случае вызвать функцию Code:
напрямую не получилось. Что касается врапера , то вполне вероятно он будет выполнен в любом раскладе , рано или поздно, смысл его таков , он должен представлять из себя Мульти интерфейс врапер для разных двигов , то есть само использование в программе будет всегда стандартизовано к интерфейсу , там же должно быть так чтобы можно было динамически подгружать дизасм дллки , причем так , чтобы структуры предоставляемые пользователю имели одинаковые офсеты , а также были доступные свободные слоты с детекцией функционала. Возможно будет написан свой дизасм , с требуемым функционалом , но на это все просто нет времени , некоторые двиги могут использовать работу с графами или еще что то схожее , поэтому хотелось бы быстро и эффективно менять работу дизасма , учитывая еще то что сам пользователь сможет гибко делать свои настройки. Вторая причина такого интерфейса , это то что код может разбираться не только под виндовс .... но и скажем под теже вм , этот модуль будет просто подключаем , а все остальное уже реализовано в главном модуле. Возможно третья причина это подсветка =) , но это уже так .. По подобной архитектуре не удалось найти инфы , кто нибудь может указать пальцем как такое может быть реализовано??? П.С. Возможно , что нужно будет паралельное использование 2 разных двигов , это еще одна функциональная черта врапера в моем случае. Спасибо за советы заранее. Вроде все ![]() ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube ![]() |
|
Создано: 06 октября 2010 20:37 · Поправил: mak · Личное сообщение · #2 Что то тупняк с добавлением кода ![]() ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube ![]() |
|
Создано: 06 октября 2010 21:25 · Личное сообщение · #3 |
|
Создано: 06 октября 2010 22:01 · Личное сообщение · #4 PE_Kill забыл приписать , это был первый выбор двиг от OllyDbg , но как быть с x64 ? Можно конечно поменять под 64 , но тогда врапер интерфейса самое то , но двигов тоже не разгонишься под 64 с ассемблированием , в мсдис есть 64 , есть 32 , и если бы добить его структуру и узнать про ассемблирование , почему бы не попробовать. ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube ![]() |
|
Создано: 06 октября 2010 22:43 · Поправил: PE_Kill · Личное сообщение · #5 Ну тут да, оля не катит. Тогда я ничем не подскажу. А что от самого MS'а нет мануалов? PS Глянул мануал. Это OLE объект, его надо регистрировать regsvr32 если он еще не пореган, потом через TypeLib использовать. Что то ты меня заинтересовал, надо посмотреть будет. ----- Yann Tiersen best and do not fuck ![]() |
|
Создано: 06 октября 2010 23:48 · Личное сообщение · #6 |
|
Создано: 07 октября 2010 03:38 · Поправил: reversecode · Личное сообщение · #7 mak у crypto IDR на этом двиге, может у него спросить? еще вопрос, у тебя есть полный интерфейс в msdis? там для других платорм начиная от MIPS и еще штук 6 было(правда это в первых версиях MSDIS) могу кстати идой глянуть как msdis юзается только нужно найти комплект который работает именно с этой длл то что под рукой - VC6, но он работает с msdis110 ps посмотрел на IDR у crypto тоже используется msdis110 ![]() |
|
Создано: 07 октября 2010 06:42 · Личное сообщение · #8 mak пишет: Вопрос такой , тема собственно извечная и не раз подымалась , мне нужен дизасм двиг , их полно , но каждый не подходит по опеределенным причинам Пробовал двиг mediana? Весьма удобная штука, автор оперативно фиксит баги и добавляет фичи по запросу. Я делал не нем эмуль, впечатления самые положительные. ----- PGP key ![]() |
|
Создано: 07 октября 2010 08:20 · Личное сообщение · #9 |
|
Создано: 07 октября 2010 10:08 · Личное сообщение · #10 |
|
Создано: 07 октября 2010 10:42 · Поправил: mak · Личное сообщение · #11 PE_Kill Доки искал , но особо ничего не нарыл , с оле последний раз лет 7 назад наскоком из за написания прог на делфи работал. Это из дока ? или на глаз определил? reversecode Да , нужно спросить у крипто , спасибо за заметку ![]() Archer,ntldr,int это нужно сейчас , а не потом, итак медленно идет, но учитывая предпочтения , есть повод задуматься над универсальным переходником. Появилось новое альтернативное решение , использовать Дизасм + asmjit , нужно попробовать , там и попробую медиану в том числе. В медиане , табличный формат нравится , осталось автоматом делать линкед листы , сейчас просто дизасмом никого не удивишь. В майкрософте команды разбиты на блоки и типы , таким образом это удобно для создания псевдоязыка. Приятные мелочи как в оллидбг Disassembleback или Checkcondition, то есть большинство этих функций нужны для определенных целей , например бэктрассы , там нужно делить на блоки , основная идея в дисторме может быть доработана , там есть с чем работать в плане кондишн стопов созданных для графа. Есть еще много мелочей казалось бы, но типичный ответ , в чем проблема? Реализуй сам ... с таким подходом хочется сразу сказать .. куда ты лезишь тогда с рекламой своего двига))) Некоторым авторам раньше писал это был автор дисторма и хакенджин , но в ответ на пожилания получил лишь сухой ответ , и иногда нужно доказывать что да зачем надо и только после споров долгих наконец то доходит))) Mediana под пристальным взглядом многих реверсеров , которые активно помогают в развитии , это хорошо , а пока можно и MSDIS глянуть , внутри как мне кажется есть интересные функции ... r_e у него нет ассемблера ![]() ![]() ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube ![]() |
|
Создано: 07 октября 2010 12:07 · Поправил: OKOB · Личное сообщение · #12 Вот тут ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 07 октября 2010 14:29 · Личное сообщение · #13 |
|
Создано: 07 октября 2010 14:36 · Личное сообщение · #14 mak пишет: это нужно сейчас , а не потом А оно работает сейчас. Библиотека открытая, документированная, работает нормально. Дает достаточно информации об инструкциях. mak пишет: а пока можно и MSDIS глянуть ИМХО не стоит даже смотреть на библиотеки, которые нельзя легально распространять со своей программой. Разве только пишется что-то для внутреннего использования, но все-равно такой подход считаю недальновидным. ----- PGP key ![]() |
|
Создано: 07 октября 2010 15:18 · Поправил: reversecode · Личное сообщение · #15 mak у меня была идея в реверсе MSDIS для приватного испльзования в нём как то кода по сравнению с другими дизасмами поменьше лучше что ли спроектирован Code:
хоть бы уменьшили количество не нужных символов в INTERNAL_DATA_(t/T) *idata преобразовали ... ![]() |
|
Создано: 07 октября 2010 16:12 · Личное сообщение · #16 OKOB Супер , посмотрю , спасибо) reversecode не сразу их заметил , но они там есть ... Сколько времени на это уйдет? И зачем , хотел сначала выдрать код , на асме не разон, Vamit помог еще определиться , но потом оставил так как есть. Открытых двигов полно , а если ставить конкретные цели то в конце станет ясно что не нужно это. У меня возник такой вопрос из за мании ассемблера , типо чем меньше тем лучше)))) поэтому уж оч урезать хотелось лишнее... но потом прошло ![]() ntldr может не так выразился , имел ввиду что там нет ассемблера , выше описана проблема. Солидарен по поводу либ ![]() Кому нужно архив с дебагом что указал OKOB ![]() ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube ![]() |
|
Создано: 07 октября 2010 16:25 · Личное сообщение · #17 mak пишет: Сколько времени на это уйдет? еще не знаю, я давно изучал этот вопрос и меня интересовал не только x86 меня интересовало полностью msdis реверснуть если доставать только X86 может совсем не много у меня pdb не качались ни для одной MSDIS, если кому то удалось их моиметь - поделитесь так вы с Vamit реверснули? или я что то не понял, с чем он помог ![]() |
|
Создано: 07 октября 2010 16:34 · Личное сообщение · #18 mak пишет: В лучший вариант попал двиг от майкросовта , под названием MSDIS170.dll, он имеет (вроде как по просмотру в иде) (диз)ассемблер сечас смотрю msdis160 от 9 студии которая под рукой link.exe использует msdis cde.dll и msvsmon.exe насколько можно быть увереным что msdis работает и как ассемблер? я почему то в этом пока что сомниваюсь.. ![]() |
|
Создано: 07 октября 2010 16:59 · Личное сообщение · #19 |
|
Создано: 07 октября 2010 19:17 · Поправил: reversecode · Личное сообщение · #20 хм удивительно дествительно в msdis160 только для платформы x86 есть и ассемблер но входной поток для ассемблирования не текстовый файл ASM команд а бинарный поток чисел которые стоят в соответсвии с их тестовыми значениями тоесть к примеру код mov eax,eax должен пройти в FEncode() как поток бит тоесть нужен еще какойто препроцессор который тестовые ASM команды преобразуют в поток бит что бы понять каким командам стоит в соответсвие какой бит и как они складываются, нужно реверсить вот вроде так, может кто по другому что то понял... Code:
ps нужна программа которая использует msdis как ассемблер.. ![]() |
|
Создано: 10 октября 2010 12:46 · Личное сообщение · #21 |
|
Создано: 25 октября 2010 04:45 · Поправил: reversecode · Личное сообщение · #22 разобрались есть и ассемблер(X86(16,32,64) и ARM(каких то два режима)), начиная с msdis160 увы хидеров для него нет ни у кого, поэтому врядли кто сможет использовать без них потому что в них основные данные для ассемблирования итого кратко для дизассемблирования используется такой алго Code:
вот восстановленая функция FDecode Code:
для ассемблирования еще проще Code:
итого проблема только с лексическим анализатором который бы заполнял данные *instr, *opa которого в msdis и нет и нет пока еще всех данных которые нужны для заполнения тех сткрутур для режима ассемблирования хотя это все табличные данные которые содержатся в dis.h disx86.h файлах но от версии к версии msdis, они немного увеличиваются(добавляются разные режимы и инструкции) ![]() |
![]() |
eXeL@B —› Программирование —› MSDIS |