-:[ Новости ]:-
-:[ Начинающим ]:-
-:[ Упаковано ]:-
-:[ Донглы ]:-
-:[ VB и Java ]:-
-:[ Экзотика ]:-
-:[ Знания ]:-
-:[ Кодинг ]:-
-:[ О Инструментах ]:-
-:[ Крэкми ]:-
-:[ Линки ]:-
-:[ Форум ]:-

: подписка :
   Подпишись на новости журнала команды "Xtin".
Мыло:
: !!!внимание!!! :
   Администрация проекта "Xtin" напоминает, что тематика нашего сайта не так называемый "Хак-Кряк" а PC security - безопасность информационных и вычисли- тельных систем. Мы не призываем хакеров к преступным действиям, а лишь хотим указать специалистам на существующие уязвимости.
: обмен :
   Если тематика твоего сайта или хоумпаги как-то граничит с нашим сайтом, помести нашу кнопочку (на выбор) к себе на сайт и напиши письмо team@xtin.org.
: рейтинги :
Рейтинг@Mail.ru
SpyLOG
: Ковыряем MS Access VBA (MDE) :
19.03.2003 Ковыряем MS Access VBA (MDE)

Автор: Hex
   Как много задавался вопрос: "Можно ли декомпиливать MDE файл?" на форумах посвященных БД. И все дружно говорили - нельзя. Но мы то не базами данных занимаемся :) Мы то знаем... :)

   Что такое MDE файл? Это типа обыкновенная Microsoft Jet Database + блок, скомпилированых в pcode, vb скриптов. Что же нам мешает его декомпилировать? - А ничего не мешает. VBA pcode практически ничем не отличается от VB. Просто для сама виртуальная машина лежит в VBA332.DLL. В этой VBA332.DLL точно также как и в msvbvmXX.dll есть секция Engine. Машина эта точно также юзает ESI как EIP для псевдокода. И естественно процедуры и методы вызываются соответственно через ProcCallEngine и MethCallEngine. А проблема заключается в том, что нужно на что-то зацепиться чтобы найти нужную функцию в этом MDE файле, это вам не EXE, тут таблицы процедур хз-куда загружаются. Вызовы процедур можно легко отлавливать по bpx ProcCallEngine. Вот только потом приходится смотреть байт коды в памяти, потом писать их на бумажку, а потом в Hex редакторе искать, где же это в файле. Байткоды слава богу уже люди и без нас расписали. Так нужно бы написать прогу для декомпиляции этих байт кодов в их названия. Все говорят типа "такую прогу любой дурак написать может", а вот почему-то дураков за столько лет так и не нашлось. Вот выступлю в роли такого дурачка :)

Лежит она вместе с исходниками на Delphi 6 вот тут

Что она может? Может просто переводить код указаной длины по словарю байткодов с нужной позиции в указаном файле :)
Словарь байткодов лежит в fullexcodes.mdb поэтому каждый по своему желанию может поправить эту базу. Байткоды VBA и VB отличаются длинами некоторых байткодов так что не стоит запихивать в прогу VB программы, предварительно не поправив базу байткодов. Байткоды в базе брались чужие(т.е. это не я их длины и названия сочинял), поэтому до конца это все не проверено. Я протестил сколько мог, в принципе нормально "декомпилирует". Названия, правда, у команд идиотские. Надо будет попереименовывать. В общем это самый не профессиональный инструмент, который можно себе только представить (зато с исходниками :)). Но главное то, что он работает. Позволяет находить такие милые сердцу вещи как условные переходы, тут они называются "branch". Дальше опять же приходится в айс ломиться и проверять, это оно или нет.

Прога работает медленно из-за того что SQL запросы работают медленно (ну мне в лом было делать все вручную, вот я и запряг это все в MDB). Писалось все для себя любимого, так что предложения принимаю, а критику - нет :) Если б знать структуру всей этой гадости то можно было бы еще и получать имена импортируемых функций. Еще можно было бы поразбираться как оно к строкам обращается... Но инфы как обычно нет :(

Еще знать бы структуру Microsoft Jet Database, а то только догадки... догадки...

Мнения:

Оставь свое мнение:

Nick:
Комментарии:

Вернуться назад.
Copyrights © 2002 xTiN International (www.xtin.org) - IRC: #xtin