Как достать базу данных с десктопного приложения

На предприятии используется десктопное приложение по начислению тарифа за услуги по лицевым счетам. База данных храниться в файле ZKP.16(в интернете ничего не смог найти по такому расширению) и занимает 4.67Gb. Обновляется эта база путем простой подмены файла на новый.
Для нормальной роботы программы нужны С++ 2005 и firebird odbc. Но программа "вредная" не всегда и не на всех сборках windows хочет работать

Подскажите, пожалуйста, где смотреть куда копать. Мне нужно достать все данные из базы.

Вот так выглядит директория с программой


Ответы (1 шт):

Автор решения: S.H.

Глядя на файлы в директории, я бы предположил, что расширение не имеет никакого значения: просто файл с базой назван так же, как программа, а цифра .16 - может, что то вроде номера версии.

Гораздо больше можно узнать, открыв начало файла в шестнадцатиричном редакторе, чем то вроде Hex Editor Neo

Вы можете поискать сами по буковкам, которые там встретятся, или дополнить вопрос, включив туда фрагмент дампа.

С приличной вероятностью это окажется какой то известный формат. Тогда - гугл Вам в помощь! Кстати, в качестве первого шага хорошо бы сравнить начало файла с какой то firebase - базой, вдруг совпадёт?

Если же окажется что то уникальное - то задача становится интереснее... я бы рассуждал так:

  1. раз используется Firebase ODBC - значит, именно через DLL с этой ODBC идут вызовы.

  2. вывести список экспортируемых DLL-кой функций, с их аргументами - это чисто техническая задача, обычно решаемая программами типа spyDLL.

  3. Дальше можно подменить эту DLL на свою собсвенную proxy-DLL, которая логгирует все вызовы, и потом передаёт управление на настоящие функции настоящей DLL

я просто уверен, что в наборе инструментов реверс - инженеров есть какой то инструмент для автоматической генерации таких штук, но даже в "ручном" режиме - это не особо сложная, хотя и объемная задача.

Из анализа логов Вам станет ясна, как мне кажется, структура базы. Но напрямую "залезть" в неё - еще не получится.

Зато Вы уже будете знать, как программа к ней обращается, и - барабанная дробь! - сможете написать свою программу, котрая делает те же обращения, но при этом может, получив информацию из базы, записать её в другую базу - а это и есть экспорт.

Задача не простая, но поучительная. Если получится - можно смело назвать себя хакером баз данных!

Кстати, там видны несколько файликов с расширением *.sql и каталог SQL. я бы к ним присмотрелся -а вдруг они сами по себе наведут на мысли о структуре базы?

Ну, и поискать другие выполняемые файлы - вдруг найдется что то вроде "эксплорера", которвый позволяет базу данных открыть и по ней "походить"?

Вообще, если программа старая - вариантов не очень много. Если не firebase - то, может, что то вроде dbase или access, или Sqlite. Начало файла с базой может дать ответ...

→ Ссылка