30 апреля 2011 г.

"взлом" результатов программы VBto дампингом памяти

Есть такая программка VBto для конвертирования проектов, написанных на VisualBasic в разные другие проекты, например вариации .NET проектов и даже C++/MFC.
Мне нужно было позарез преобразовать текст из VB в удобоваримое на C++. строчек там было много, ибо целый проект, хоть и с открытыми исходниками. А отдельных символов ещё больше.
Сия программка не хочет скидывать исходники в желаемом формате, если количество строк превышает 700. программа самораспаковывается в памяти и вникать в особенности защиты особого интереса не было.
Программка зато всё-таки преобразовывает исходники из одного формата в другой и хранит их в памяти, не давая их записывать на диск. это видно при включении конвертации - программка активно что-то делала. а денежек они хотят много. и платить я не очень-то хочу.
на 32-битовой Linux системе я смог через программку Wine установить программку и даже её запустить. Это не чудо, просто программа Wine позволяет запускать под линуксом очень много программ, написанных для виндов.
Пакет VBto был установлен и успешно запущен. Далее для "взлома" программы, а точнее - для извлечения результатов работы аппликации мне нужен был дампер области памяти, занимаемой оной. Конечно, таким образом скидывается на винчестер не только данные, но и код. Также нужно учесть то, что текстовики хранятся не в чистом виде, а со "следами" аллокирования памяти malloc/new.
в качестве дампера памяти я выбрал этот: Process Dumper
в принципе, подойдёт и любой другой, хорошо справляющийся со своей работой. кстати, есть и версия программы для виндов.

задав ID номер самой VBto после процесса конвертации Wink

pd -p 12345 > filedump.dat


мы получаем файлик, который можно несколько изучить. благо, места он не так и много занимает - 80 мегабайт, а уж текстовики из него можно быстро выудить. кстати, под линуксом можно накидать не такой уж большой скриптик, который бы выловил более-менее удобоваримые участки, то есть, без всякого нетекстового "мусора". после этого, пораскинув мозгами, знающий человек из исходного материала может составить проект, который должен был экспортироваться. в нашем примере - C++/MFC со структурами таких проектов можно ознакомиться на огромном количестве (или просто на одном) примеров с источников программ с открытыми текстами (Open Source).

а можно поступить вообще очень борзо, взломав программку и безпрепятственно экспортировать в "нормальном" виде.

Правда, нужно учесть то, что программка самораспаковывающаяся и это начало трудностей. Так что при достаточно крупном количестве исходников этот вариант более приемлем.

Существуют также способы сделать дампы памяти средствами линукса, без использования дополнительных программ:

cat /proc/$process_id/smaps

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

Отправить комментарий