Foxpro что это
Перейти к содержимому

Foxpro что это

Visual FoxPro

Visual FoxPro (VFP) — объектно-ориентированный и процедурный язык программирования систем управления реляционными базами данных, разработанный корпорацией Microsoft. Основой для данного программного продукта послужил язык программирования FoxPro. Относится к семейству языков xBase, разработанных на базе синтаксиса языка программирования dBase. Другими членами данного семейства являются Clipper и Recital.

Первоначально FoxPro (исходное название — FoxBASE) разрабатывалась Fox Software, начиная с 1984 года. В 1992 году Fox Technologies была куплена Microsoft, новые версии продукта значительно видоизменились и приобрели префикс «Visual». Последняя версия оригинального FoxPro — версия 2.6 — работала под Mac OS, DOS, Windows и Unix; уже в версии Visual FoxPro 3.0 от MS список поддерживаемых платформ сократился до Mac OS и Windows, а в более поздних версиях от MS — уже только до Windows. Текущая версия MS Visual FoxPro основана на COM, и Microsoft утверждает, что .NET-версии продукта не будет. Существует проект Sedna, который должен обеспечить возможность взаимодействия Visual FoxPro с .NET.

Содержание

Новейшая история

В конце 2002 года было показано, что Visual FoxPro может работать на Linux под Wine, однако это, по существу, нарушает пользовательское лицензионное соглашение (EULA).

В декабре 2005 года, VFP взлетел в Top 20 на TIOBE индекс в первый раз. В марте 2007 года он был в положении 19, что делает его языком группы «B». По состоянию на август 2010 года, VFP (в сочетании с XBase) находится в позиции 25.

В марте 2007 года Microsoft объявила, что не будет VFP 10, соответственно, VFP 9 (выпущен в производство 17 декабря 2004 г.) — последний коммерческий релиз VFP от Microsoft. Поддержка версии 9 продолжается с пакетами обновления, которые были выпущены 8 декабря 2005 и 11 октября 2007 года.

Идет работа над проектом под кодовым названием «Седна» (названном в честь карликовой планеты Седны, открытой в 2003 году), который представляет собой набор дополнений к VFP 9.0 из xBase-компонентов для поддержки ряда сценариев и алгоритмов взаимодействия с различными технологиями Microsoft, включая SQL Server 2005, .NET Framework, Windows Vista, Office 2007, Windows Search и Team Foundation Server (TFS). Microsoft выпустила «Седну» под лицензией Shared Source на сайте CodePlex. Представители корпорации Microsoft пояснили, что основной VFP будет по-прежнему оставаться закрытым исходным кодом. «Седна» была выпущен 25 января 2008. По состоянию на март 2008 года, все xBase-компоненты VFP 9 SP2 (в том числе «Седна») были доступны для развития сообществом на CodePlex.

История версий

Совместимость с операционными системами

Поддерживаемые версии Windows

Версия VFP 3.0 VFP 5.0 VFP 6.0 VFP 7.0 VFP 8.1 VFP 9.0
Windows 3.x Да Нет Нет Нет Нет Нет
Windows NT 4.0 Да Да Да Да Нет Нет [1]
Windows 95 Да Да Да Только среда запуска (runtime) Нет Нет
Windows 98 Да Да Да Да Только среда запуска (Runtime) Только среда запуска (Runtime)
Windows ME Да Да Да Да Только среда запуска (Runtime) Только среда запуска (Runtime)
Windows 2000 Да Да Да Да Да Да
Windows XP Да Да Да Да Да Да
Windows Server 2003  ? Да Да Да Да Да
Windows Vista В режиме совместимости Да Да Да Да Да
Windows 7 Да Да Да Да Да Да

Исполняемые файлы

Версия Возвращаемое значение VERSION() Размер EXE-файла Дата EXE-файла Размер DLL-файла Название DLL-файла
VFP 9 SP2 with Hotfixes Visual FoxPro 09.00.0000.7423 for Windows 5,648 kb 3 апреля 2009 4,624 kb VFP9R.DLL
VFP 9 SP2 Visual FoxPro 09.00.0000.5721 for Windows 5,648 kb 16 октября 2007 4,624 kb VFP9R.DLL
VFP 9 Visual FoxPro 09.00.0000.2412 for Windows 5,620 kb 13 декабря 2004 4,600 kb VFP9R.DLL
VFP 8 Visual FoxPro 08.00.0000.3117 for Windows 5,236 kb 25 сентября 2003 4,200 kb VFP8R.DLL
VFP 7 Visual FoxPro 07.00.0000.9465 for Windows 4,260 kb 4 января 2002 3,344 kb VFP7R.DLL
VFP 6 Visual FoxPro 06.00.8961.00 for Windows 4,091 kb 18 августа 2000 3,295 kb VFP6R.DLL
VFP 5 Visual FoxPro 5.0.0.415 for Windows 4,065 kb 24 января 1997 3,148 kb VFP500.DLL
VFP 3 Visual FoxPro 03.00.00.0711 for Windows 4,374 kb 16 декабря 1995 3,657 kb VFP300.ESL
FPW 2.6a FoxPro 2.6a for Windows 2,444 kb 28 сентября 1994 2,946 kb FOXW2600.ESL

Дальнейшее развитие

Разработка продукта MS прекращена с выходом SP2 для версии 9.0, поддержка продукта MS будет осуществляться до 2015 года [2] .

В конце марта 2007 организовалось движение испаноязычного FoxPro-сообщества MasFoxPro [3] (MoreFoxPro в английском), целью которого стало написание петиции в Microsoft с предложением продолжить работу по обновлению Visual FoxPro или выпустить его в сообщество с открытым исходным кодом. 3 апреля 2007 года движение было отмечено технической прессой [4] .

Также 3 апреля 2007 Microsoft ответила на просьбы заявителя таким заявлением от Алана Гривера ( Alan Griver ):

Мы очень хорошо понимаем FoxPro сообщество и, то, что сыграло большую роль в том, что мы объявили 13 марта. Это всегда нелегкое решение — объявить, что мы не собираемся выпускать другую версию продукта, и это первое, что мы рассматриваем очень тщательно.

Мы не объявляем конец проекта FoxPro: очевидно, приложения FoxPro будут продолжать работать. Согласно нашим внутренним оценкам, существует больше приложений, работающих в FoxPro 2.6, чем есть в VFP, а ведь FoxPro 2.6 не поддерживается много лет. Visual FoxPro 9.0 будет поддерживаться Microsoft до 2015 года.

Для Microsoft, чтобы сохранить развитие основы FoxPro, надо обратить внимание на создание 64-разрядной среды разработки, что будет включать почти полностью переписанный основной продукт. Мы также инвестировали в создание масштабируемой базы данных SQL Server, включая свободно доступный SQL Server Express Edition. Что касается формирования партнерских отношений с третьей стороной, о которой мы слышали в интерпретации ряда крупных клиентов FoxPro, — это сделает невозможным использование FoxPro, поскольку он больше не будет от утвержденного поставщика. Мы чувствовали, что выложить среду с открытым исходным кодом на CodePlex, которая уравновешивает потребности как сообщества, так и крупных клиентов — лучший путь вперёд.

We’re very aware of the FoxPro community and that played a large part in what we announced on March 13th. It’s never an easy decision to announce that we’re not going to release another version of a product and it’s one that we consider very carefully.

We’re not announcing the end of FoxPro: Obviously, FoxPro applications will continue to work. By some of our internal estimates, there are more applications running in FoxPro 2.6 than there are in VFP and FoxPro 2.6 hasn’t been supported in many years. Visual FoxPro 9 will be supported by Microsoft through 2015.

For Microsoft to continue to evolve the FoxPro base, we would need to look at creating a 64-bit development environment and that would involve an almost complete rewrite of the core product. We’ve also invested in creating a scalable database with SQL Server, including the freely available SQL Server Express Edition. As far as forming a partnership with a third-party is concerned, we’ve heard from a number of large FoxPro customers that this would make it impossible for them to continue to use FoxPro since it would no longer be from an approved vendor. We felt that putting the environment into open source on CodePlex, which balances the needs of both the community and the large customers, was the best path forward. [5]

Ностальгия по Visual FoxPro

Если вы никогда ничего не слышали о Visual FoxPro, значит, вы стали интересоваться информационными технологиями в ту эпоху, когда этот программный продукт уже пережил пик своей популярности. А если нет — почему бы не вспомнить об этом действительно интересном и полезном средстве разработки?


Введение, или совсем чуть-чуть истории

Разработка приложений, взаимодействующих с базами данных, являлась делом более чем актуальным со времен появления первых систем управления базами данных. В связи с этим ничуть не удивительно, что на рынке средств разработки приложений появилось достаточно много программных продуктов, «заточенных» именно под работу с базами данных. Появлялись эти среды, конечно, в такие стародавние времена, что не всякий старожил форума «Компьютерных вестей» их вспомнит, но, тем не менее, было когда-то и такое славное время.

Вот тогда-то и появился инструмент, которому впоследствии суждено было войти в историю индустрии разработки программного обеспечения под именем FoxPro. Началась же история этого, без преувеличений, легендарного средства разработки более четверти века назад, в уже далеком 1984 году, когда компания Fox Software начала проект под названием FoxBase. Долго ли, коротко ли, но в 1992 году компанию приобрела разросшаяся не на шутку корпорация Microsoft, и именно тогда у продукта, который уже назывался FoxPro, в названии появилась приставка Visual. Под руководством Microsoft продукт развивался и совершенствовался на протяжении последующих пятнадцати лет, до тех пор, пока в 2007 году не вышло последнее официальное обновление для Visual FoxPro — до версии 9.0 Service Pack 2. Конечно, на протяжении пятнадцати лет существования Visual FoxPro в историю продукта было вписано немало интересных страниц, но рассматривать их здесь сейчас не стоит, потому что вряд ли кому-то, кроме тех, кто плотно работал с Visual FoxPro, это будет действительно интересно, да и место, которое доступно одной отдельно взятой газетной статье, также ограничено.

Можно, конечно, привести тысячи причин, по которым Microsoft решила прекратить поддержку Visual FoxPro, но главная из них, на мой взгляд, все-таки состоит в том, что Visual FoxPro плохо согласовалась с продвигаемой корпорацией платформой .NET. Тем не менее, Visual FoxPro до сих пор используется многими разработчиками, и не только для внесения по мере эксплуатации исправлений и улучшений в уже существующие проекты. Так что говорить об этом программном продукте исключительно и только в ретроспективном аспекте было бы не совсем правильно. Поэтому, несмотря на название этой статьи, рассказ будет не столько об упадке былой популярности Visual FoxPro, сколько о самом этом программном продукте, даже сейчас, спустя столько лет после выхода своей последней версии, заслуживающем внимания со стороны достаточно широкой аудитории.


Что такое Visual FoxPro?

Итак, я уже упомянул, что Visual FoxPro — это продукт, ориентированный, в первую очередь, на создание приложений, работающих с базами данных. Однако такая краткая характеристика вряд ли может отразить все то, чем Visual FoxPro заслужил уважение и популярность среди разработчиков.

Любое средство разработки, в первую очередь, характеризуется тем языком программирования (или несколькими из них), который оно предлагает использовать в процессе разработки программного обеспечения. В случае Visual FoxPro таким языком, соответственно, будет FoxPro. Язык этот, который может показаться уже несколько морально устаревшим с позиций сегодняшних реалий индустрии программирования, до сих пор, тем не менее, обеспечивает вполне качественное решение задач, возникающих у большинства разработчиков прикладных приложений. Язык, который закладывался в эту среду её первыми разработчиками, берет свои истоки от xBase — языка программирования, который изначально был «заточен» под работу с dBase и, конечно, сильно отличался от того языка, который был «на вооружении» людей, имевших дело с FoxPro в те годы, когда эта среда ещё даже не перешла под «покровительство» Microsoft. В Visual FoxPro в распоряжении программиста имеется мощный объектно-ориентированный язык, позволяющий легко оперировать данными благодаря непосредственно встроенным в язык операторам.


Язык программирования

Возможно, эти утверждения по поводу языка, предлагаемого программистам в Visual FoxPro, покажутся вам слишком общими. Что ж, позвольте проиллюстрировать их примером. В листинге приведен небольшой пример кода на Visual FoxPro. Думаю, даже не обладая глубокими познаниями в программировании и в работе с базами данных, вполне можно увидеть основные черты, присущие коду на этом языке — то есть, возможность работы с объектами и прозрачность работы с базами данных. Комментарии в коде помогут понять общую логику данного небольшого примера.

Стоит отметить, что поскольку в конечном счете среда Visual FoxPro предназначалась для создания приложений, с которыми должен вести активный диалог конечный пользователь, то в распоряжении разработчика, пользующегося ею, были средства создания полноценного графического пользовательского интерфейса. С учетом того, что Visual FoxPro была ориентирована, конечно же, на создание приложений под Windows, нет ничего удивительного в том, что корпорация Microsoft постаралась снабдить разработчика такими возможностями. Благодаря поддержке объектов в языке программирования Visual FoxPro работать с элементами пользовательского интерфейса достаточно просто. Об этом красноречиво свидетельствует листинг — весьма короткий, но, смею надеяться, достаточно познавательный.


Среда разработки

Как ни крути, но современное средство разработки приложений — это не только сам язык программирования, который, конечно, имеет первостепенную важность, но ещё и такая «мелочь», как среда разработки, с которой непосредственно взаимодействует программист. Поэтому поговорить о Visual FoxPro именно с этой позиции будет, я так полагаю, далеко не лишним.

Давно уже прошло то время, когда среды разработки от Microsoft подвергались повсеместной критике и вызывали желание закрыть их поскорее. Конечно, если сравнивать Visual FoxPro с более современными средами разработки, то можно найти ряд достаточно заметных для глаза несоответствий новейшим стандартам. Но если вспомнить о том, что речь идет о программном продукте, последний раз обновлявшемся несколько лет назад, то можно утверждать, что тогдашним стандартам Visual FoxPro соответствует на 100%.

На самом же деле, среда Visual FoxPro, как и другие продукты, названия которых начинаются с «Visual», весьма дружелюбна к разработчику. Подсветка синтаксиса кода, разнообразные подсказки по ходу написания кода, отладчик (какая же интегрированная среда разработки без него?), визуальный редактор форм, существенно упрощающий жизнь разработчика при проектировании интерфейса. В общем, как ни крути, среда разработки, созданная крупнейшим в мире разработчиком софта, так или иначе должна была соответствовать этому высокому званию.


Закат

Возвращаясь к вопросу о том, почему дальнейшая разработка Visual FoxPro была прекращена, стоит обратиться к первоисточнику — то есть, к объяснениям, которые дала по этому поводу сама корпорация Microsoft.

Во-первых, по словам представителей корпорации, дальнейшее развитие этого программного продукта не мыслилось без создания его 64-битной версии. Для этого пришлось бы практически полностью переписывать «ядро» Visual FoxPro, что не входило в планы Microsoft. Во-вторых, дальнейшее развитие Visual FoxPro — продукта, использовавшего собственный «движок» для работы с базами данных, — выглядело не слишком логично в свете достаточно солидных инвестиций в создание полноценной промышленной СУБД SQL Server, имеющей бесплатную версию SQL Server Express Edition, практически полностью покрывающую потребности большинства пользователей Visual FoxPro. Ну а в-третьих, популярность Visual FoxPro стабильно снижалась, и слухи о том, что это средство разработки планируется перестать совершенствовать, ходили ещё с начала 2000-х годов.


Visual FoxPro сегодня

Нельзя сказать, что с выходом последней версии земной путь Visual FoxPro оборвался. До сих пор по всему миру успешно работают десятки, если не сотни тысяч приложений, написанные с его использованием. Да и новые никто, в общем-то, не запрещает писать, потому что даже сегодня Visual FoxPro отлично подходит для решения многих задач.

Флешбэки FoxPro. Ломаем приложения на VFX и познаем секреты защиты ReFox

Язык прог­рамми­рова­ния FoxPro при­менял­ся для раз­работ­ки файл‑сер­верных реляци­онных баз дан­ных и управле­ния ими, хотя воз­можнос­ти язы­ка поз­воляли най­ти ему зна­читель­но боль­ше прак­тичес­ких при­мене­ний. Тех­нология, появив­шаяся в 1989 году, базиро­валась на язы­ке dBase, который исполь­зовал­ся, в час­тнос­ти, в одно­имен­ных сис­темах управле­ния базами дан­ных, из‑за чего меж­ду пра­вооб­ладате­лем, ком­пани­ей Ashton-Tate, и Fox Software даже про­исхо­дили судеб­ные раз­биратель­ства. FoxPro быс­тро заво­евал популяр­ность на рын­ке СУБД и стал сво­еоб­разным стан­дартом раз­работ­ки такого рода при­ложе­ний. Были выпуще­ны вер­сии FoxPro для UNIX, MS-DOS и Macintosh.

В 1992 году, пос­ле дол­гих и мучитель­ных перего­воров, длив­шихся целых три года, ком­пания Fox Software была при­обре­тена кор­пораци­ей Microsoft, даль­ше тех­нология FoxPro раз­вивалась уже под кры­лом ком­мерсан­тов из Ред­монда. Со вре­менем была выпуще­на визу­аль­ная сре­да прог­рамми­рова­ния Visual FoxPro, но тех­нология понем­ногу утра­чива­ла позиции в поль­зу более сов­ремен­ных прог­рам­мных про­дук­тов. Пос­ледняя вер­сия FoxPro для Windows уви­дела свет в 1994 году, еще до офи­циаль­ного релиза Windows 95. Одна­ко с пов­семес­тным перехо­дом с 16- на 32-раз­рядную архи­тек­туру осно­ван­ные на FoxPro СУБД окон­чатель­но уста­рели и понем­ногу ушли в исто­рию.

Са­ма Microsoft прек­ратила под­дер­жку этой тех­нологии боль­ше пяти лет назад. Тем не менее, по слу­хам, где‑то в глу­бинах сибир­ской тай­ги еще встре­чают­ся написан­ные на FoxPro при­ложе­ния, которые ник­то не собира­ется перепи­сывать с нуля. Тем более исходни­ки таких прог­рамм обыч­но уте­ряны, а пос­ледний прог­раммист, пом­нивший син­таксис FoxPro, дав­ным‑дав­но умер от ста­рос­ти. Поэто­му чис­то теоре­тичес­ки может воз­никнуть необ­ходимость ревер­синга подоб­ной прог­раммы с целью понять, как она вооб­ще работа­ет. Да и покопать­ся в такой древ­ности — инте­рес­ная задача сама по себе.

Ка­залось бы, ничего слож­ного в этом нет: сре­да пред­став­ляет собой интер­пре­татор псев­докода, дос­таточ­но прос­той и при­митив­ный, деком­пилято­ров для него было написа­но великое мно­жес­тво еще в девянос­тые годы прош­лого века (автор одно­го из них — ваш покор­ный слу­га ;)). С появ­лени­ем VPF и ReFox воп­рос сов­сем потерял акту­аль­ность — любой ском­пилиро­ван­ный модуль мож­но ревер­сировать до сос­тояния ком­пилиру­емо­го про­екта бук­валь­но в одно нажатие кноп­ки. Если бы не одно но.

Соз­датели ReFox не явля­ются бес­корыс­тны­ми фаната­ми сво­бод­ного прог­рам­мно­го обес­печения: они соз­дали хороший ком­мерчес­кий про­дукт, спра­вед­ливо полагая, что для любой интеллек­туаль­ной собс­твен­ности неп­ремен­но оты­щут­ся жела­ющие ее спе­реть. И они выпус­тили свою собс­твен­ную защиту ком­пилиру­емых при­ложе­ний, где мож­но выб­рать аж целых пять типов про­тек­ции раз­ной сте­пени слож­ности. Разуме­ется, защищен­ную таким спо­собом прог­рамму не деком­пилиро­вать ReFox’ом в один клик. Но на то мы и хакеры, дабы пре­одо­левать подоб­ные огра­ниче­ния.

Не будем оста­нав­ливать­ся на прос­тых слу­чаях, ког­да при­ложе­ние пред­став­ляет собой клас­сичес­кий набор APP, FXP, FRM, FRX и про­чего (хотя там тоже есть нюан­сы, но о них мы погово­рим поз­же). Давай сра­зу перей­дем к самому нехоро­шему вари­анту.

Итак, к нам попада­ет некий EXE-файл с хорошей ком­прес­сией. По кос­венным приз­накам мы пред­полага­ем, что он похож на защищен­ное VFP-при­ложе­ние. Извес­тные детек­торы про­тек­та нам не осо­бо помога­ют, единс­твен­ная зацеп­ка — наличие овер­лея с сиг­натурой FEF2 ( Overlay : FEF2EE. Nothing discovered ). Вооб­ще‑то, это сиг­натура любого FoxPro-шно­го фай­ла. Раз­вивая дан­ную идею, отре­заем овер­лей и про­буем скор­мить его спе­циаль­но обу­чен­ным ути­литам.

В качес­тве малень­кого лиричес­кого отступ­ления рас­ска­жу пару слов о том, чем мож­но поль­зовать­ся для вивисек­ции VFP. При всем мно­гооб­разии написан­ного на эту тему соф­та, в кон­курен­тной борь­бе выжило все­го нес­коль­ко инс­тру­мен­тов, дос­той­ных упо­мина­ния. В пер­вую оче­редь это, конеч­но, упо­мяну­тый ReFox, которо­му по боль­шей час­ти и пос­вящена дан­ная статья. Нес­мотря ни на что, про­ект под­держи­вает­ся (во вся­ком слу­чае, так за­явле­но на сай­те раз­работ­чиков). Акту­аль­ная вер­сия на дан­ный момент — XII 12.99/16 от нояб­ря 2019 года. Сущес­тву­ет еще фран­цуз­ский про­ект DVFP, но он дав­но не раз­вива­ется, и у меня не получи­лось дос­тичь при исполь­зовании этой тул­зы сколь‑либо зна­чимых резуль­татов.

В сети хва­лили китай­ский Unfoxall, но из‑за спе­цифи­ки китай­ско­го сооб­щес­тва най­ти хотя бы работа­ющую дему для срав­нения лич­но у меня не получи­лось. Прав­да, я осо­бо и не ста­рал­ся. Отдель­ного упо­мина­ния дос­тоин про­ект Corso: он хоть и не явля­ется деком­пилято­ром в пол­ном смыс­ле это­го сло­ва (собс­твен­но, сама деком­пиляция псев­докода в прог­рам­мный текст сде­лана обра­щени­ем к внеш­нему сер­веру и по фак­ту не работа­ет), одна­ко содер­жит мно­го полез­ных фич для раз­борки про­екта, о которых будет ска­зано ниже.

В общем, вытащи­ли мы овер­лей с сиг­натурой наружу, скор­мили по оче­реди всем воз­можным ути­литам и. ничего! Тул­зы говорят: мол, да, сиг­натура есть, да, исполь­зован неиз­вес­тный энкрип­тор и ком­прес­сия, но не более того. Но мы нас­той­чивые и сда­вать­ся в самом начале пути не собира­емся.

Заг­ружа­ем при­ложе­ние в отладчик. Ну, допус­тим, под рукой у нас ока­зал­ся OllyDbg. Для начала прос­то запус­каем прог­рамму и, ког­да заг­рузит­ся основное окно, пре­рыва­емся в про­изволь­ный момент, раду­ясь отсутс­твию защиты от отладчи­ка и всплы­тия. Еще один при­ятный момент — успешный поиск по памяти про­цес­са тек­сто­вых строк (которые мы до это­го тщет­но пытались най­ти в закоди­рован­ном EXE-модуле). Более того, вок­руг най­ден­ных строк явно рас­кодиро­ван­ный псев­докод FoxPro (стро­ки со счет­чиком, име­на про­цедур и так далее).

Од­нако сдам­пить его, как нам хотелось бы, одним кус­ком нель­зя — фраг­менты кода нареза­ны в бло­ки бук­валь­но «по живому»: начало тек­сто­вой стро­ки находит­ся в одном бло­ке, конец в дру­гом. В общем, собирать все это слож­но и грус­тно, тем более объ­ем весь­ма боль­шой. Поп­робу­ем зай­ти с дру­гой сто­роны: пос­коль­ку код явно ком­прес­сирован­ный, веро­ятно, в какой‑то момент он был рас­пакован и уж потом нашин­кован в лап­шу. В окне Memory Map упо­рядо­чива­ем бло­ки по раз­меру — и дей­стви­тель­но, в самом начале спис­ка огромный блок, которо­го не было в момент стар­та прог­раммы. Прав­да, в нем содер­жится, на пер­вый взгляд, пол­ная каша с огромной энтро­пией, но про­буем доб­рать­ся до ее источни­ков.

REFOX не принимает сдампленный APPREFOX не при­нима­ет сдам­плен­ный APP

Пе­реза­пус­каем прог­рамму и ста­вим бряк на какую‑нибудь фун­кцию Kernel32 (ска­жем, WriteFile ). При каж­дом оста­нове про­веря­ем кар­ту памяти — oops! — перелет, в оче­ред­ной раз блок уже при­сутс­тву­ет, при­чем сно­ва запол­нен кашей. Не мудрствуя лукаво, прос­то ста­вим Hardware Breakpoint на пер­вый байт это­го бло­ка и переза­пус­каем прог­рамму. Нам сно­ва повез­ло — этот нечес­тный трюк ока­зал­ся эффектив­ным: аппа­рат­ная точ­ка оста­нова сра­баты­вает имен­но на записи в све­жень­кий, запол­ненный нулями блок FoxPro-шной сиг­натуры FEF2 . Запус­каем выпол­нение до кон­ца про­цеду­ры ( Execute till return ) и получа­ем на блю­деч­ке блок, целиком запол­ненный рас­шифро­ван­ным и рас­пакован­ным кодом, который мож­но дам­пить. Что мы и дела­ем.

Ка­залось бы, тут и сказ­ке конец, а кто сдам­пил — молодец. Судя по сиг­натуре и содер­жимому, мы получи­ли чис­тый APP-модуль со сня­той защитой, который мож­но сме­ло иссле­довать. Но не тут‑то было. ReFox уже приз­нает, что это VFP-при­ложе­ние, даже вер­сию видит, но деком­пилиро­вать и показы­вать струк­туру отка­зыва­ется. Сам APP при запус­ке валит интер­пре­татор с какой‑то умо­пом­рачитель­ной ошиб­кой, дру­гие деком­пилято­ры тоже на него руга­ются, и толь­ко Corso видит спи­сок фай­лов, из которо­го соб­ран дан­ный APP. Выбор у нас неболь­шой, поэто­му про­буем починить файл при помощи Corso.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *