Как достать базу данных с десктопного приложения
На предприятии используется десктопное приложение по начислению тарифа за услуги по лицевым счетам.
База данных храниться в файле ZKP.16(в интернете ничего не смог найти по такому расширению) и занимает 4.67Gb.
Обновляется эта база путем простой подмены файла на новый.
Для нормальной роботы программы нужны С++ 2005 и firebird odbc.
Но программа "вредная" не всегда и не на всех сборках windows хочет работать
Подскажите, пожалуйста, где смотреть куда копать. Мне нужно достать все данные из базы.
Ответы (1 шт):
Глядя на файлы в директории, я бы предположил, что расширение не имеет никакого значения: просто файл с базой назван так же, как программа, а цифра .16 - может, что то вроде номера версии.
Гораздо больше можно узнать, открыв начало файла в шестнадцатиричном редакторе, чем то вроде Hex Editor Neo
Вы можете поискать сами по буковкам, которые там встретятся, или дополнить вопрос, включив туда фрагмент дампа.
С приличной вероятностью это окажется какой то известный формат. Тогда - гугл Вам в помощь! Кстати, в качестве первого шага хорошо бы сравнить начало файла с какой то firebase - базой, вдруг совпадёт?
Если же окажется что то уникальное - то задача становится интереснее... я бы рассуждал так:
раз используется Firebase ODBC - значит, именно через DLL с этой ODBC идут вызовы.
вывести список экспортируемых DLL-кой функций, с их аргументами - это чисто техническая задача, обычно решаемая программами типа spyDLL.
Дальше можно подменить эту DLL на свою собсвенную proxy-DLL, которая логгирует все вызовы, и потом передаёт управление на настоящие функции настоящей DLL
я просто уверен, что в наборе инструментов реверс - инженеров есть какой то инструмент для автоматической генерации таких штук, но даже в "ручном" режиме - это не особо сложная, хотя и объемная задача.
Из анализа логов Вам станет ясна, как мне кажется, структура базы. Но напрямую "залезть" в неё - еще не получится.
Зато Вы уже будете знать, как программа к ней обращается, и - барабанная дробь! - сможете написать свою программу, котрая делает те же обращения, но при этом может, получив информацию из базы, записать её в другую базу - а это и есть экспорт.
Задача не простая, но поучительная. Если получится - можно смело назвать себя хакером баз данных!
Кстати, там видны несколько файликов с расширением *.sql и каталог SQL. я бы к ним присмотрелся -а вдруг они сами по себе наведут на мысли о структуре базы?
Ну, и поискать другие выполняемые файлы - вдруг найдется что то вроде "эксплорера", которвый позволяет базу данных открыть и по ней "походить"?
Вообще, если программа старая - вариантов не очень много. Если не firebase - то, может, что то вроде dbase или access, или Sqlite. Начало файла с базой может дать ответ...
