-=[ этот пост дублирует такую же тему на CRACKL@B ]=- http://www.cracklab.ru/f/index.php?action=vthread&forum=5&topic=7040 Доброго, уважаемые форумчане. Мне нужна помощь по выбору инструментария в целом и в частности по OllyDbg. Задача: Возможно Вы слышали о таком математическом пакете как Mathcad, менее вероятно, что Вы знаете, что в версии 11-13,5 встроено ядро символьных вычислений от другой математической программы - MapleV R4. Вот с этими двумя программами мне нужно повозиться. Конкретно с Mathcad 11.0a и MapleV R4 (не демо). Что нужно: Mathcad 11.0a (далее MC11) является численной системой, т.е. в общем выполняет численные расчёты, но может обращаться к "встроенному" (отдельная OEM библиотека) символьному движку Maple. После нескольких лет изучения возможностей MC11 выяснилось, что кроме документированного использования символьных вычислений (из справки) в нём доступна вся функциональность символьного движка, НО есть проблема. Интерфейс MC не позволяет передавать команды maple-движку напрямую. Послдений имеет командный интерфейс, в отличие от MC, у которого, как известно, он графический. Был придуман (мною) извращённый подход к обходу этой проблемы. Я написал простую программку на языке MC для перевода текстовых строк в строки понятные maple-движку, которая передаёт потом эту строку на выполнение движку. К сожалению, возможности этой утилитки не идут ни в какое сравнение с оригинальным IDE интерфейсом MapleV R4 (хоть и устаревшим - заря MS Windows 95). В общем и целом, дела обстоят так. Мне нужно подцепить каким-либо образом "выдранный" IDE MapleV R4 к MC11 таким образом, чтобы, допустим, по нажатии кнопы он вызывался, а команды его передавались встроенному симольному движку и результаты отображались тоже в IDE. Теоретически, думаю, что это можно как-то реализовать. Надо отметить, что обе среды - интерпретаторы, т.е. у них где-то есть главная интерпретирующая функция, причём у MC11 их 2, т.к. численные расчёты там выполняются отдельно от символьных. Нужно отыскать интерпретирующую функцию в MapleV R4 и такую же в MC11. Далее, MC11 поддерживает механизм "плагинов". Просто он может подключать dll-ки при запуске. Я хочу переделать запускающий файл MapleV R4, который содержит всю функциональность и является единственным исполняемым файлом (ни dll ничего более, только доп. файлы с данными), под вид dll-ки для MC11 (опыт есть по реализации интерфейса в dll для MC). Короче, суть ... нужно перенаправить текстовую строку введённую в IDE Maple внутреннему движку MC11 и отобразить результат тоже в IDE - Всё это будет в обход интерфейса MC11 - это нормально. Задача со многими неизвестными. Дело в том, что если бы получилось совместить 2 интерфейса, то среда для математических расчётов была бы очень мощная, её уже прозвали Maplecad VR4/11. Можно обойтись и без интерфейса, но с ним всё-таки гораздо удобнее и лучше. Я остановился пота на под задаче отыскания кода интерпретатора в MapleV R4, для чего скачал OllyDbg, настроил по статье и теперь соображаю, что делать далее.... Вот ссылка по использованию недокументированных возможностей символьных вычислений в MC11: http://forum.exponenta.ru/viewtopic.php?t=4132&start=0 Итак, первый ламерский вопрос: 1) В среде MapleV R4 поддерживается MDI интерфейс. В каждом дочернем окне - командный, свой собственный интерфейс. Сами вычисления выполняются в том же .exe файле (это уже я додумал, т.к. больше просто негде). Загрузил я exe'шник в Olly и теперь не знаю как бы мне начать. Хочу просто: ввести команду в MVR4 типа "?help" и отследить по какому адресу и функции начинается её обработка. Как правильней поставить BP на строку? И если не сработает стандартная команда, то как поступить далее? P.S. Ещё есть такое соображение. Символьный движок maple использует специальные библиотеки на своём языке более высокого уровня. Так вот эти библиотеки от отдельного релиза MapleV R4 подходят к MC11, более того, они расширяют спектр доступных символьных функций, но важнее всего то, что ни от одного другого релиза (MVR2 или MVR5) такие библиотеки не подходят. Это говорит о возможной даже бинарной идентичности кода символьного движка. Только по-видимому в MVR4 он собран статической компоновкой, а в MC11 поставляется отдельной динамической библиотекой. Думаю, эти соображения возможно сделают более успешной мою задачу. P.S.2 Дополню ещё. На всякий случай. Я тему не с потолка взял и хоть и новичок в этом деле, но кое-что всё-таки умею. Вот немного картинок моего творчества: Экспериментальный Peviewer, восстановленный после прочтения книжки Румянцева: http://l.foto.radikal.ru/0612/f0ba52278f13.gif Отладчик для документов Mathcad 11: http://k.foto.radikal.ru/0612/05095c01e127.gif А эта картинка результат использования dll-ки с функцией CallWin32Api(), с помощью которой я сделал из Mathcad'а транслятор Win32API функций - вещь сама по себе забавная. На картинке ниже я в Mathcad 11 написал классическу программу инициализирующую OpenGL (Hello world был до этого): http://l.foto.radikal.ru/0612/0a1f775bcc12.jpg Поскольку я не ломаю ничего, а исследую, то моя задача не совсем я бы сказал стандартная, потому "бряки" на функции окон Win32API, поиск неких строк под IDA и прочие типовые шалости пока применить не могу, т.к. не знаю вообще что искать. Саму программу MapleV R4 могу выложить где-нить, если кто-то захочет глянуть, весит она около 7,5 метров в архиве.