Реверс по-французски. Изучаем приложение, написанное на WLanguage в среде WinDev

Иног­да в мои руки попада­ют весь­ма экзо­тичес­кие про­дук­ты, для иссле­дова­ния которых отсутс­тву­ют про­верен­ные инс­тру­мен­ты, а информа­ции о них в интерне­те — кот нап­лакал. Давай раз­берем имен­но такой слу­чай и рас­ковыря­ем при­ложе­ние, соз­данное в сре­де WinDev.

Се­год­ня мы погово­рим о фран­цуз­ской ком­пании PC SOFT и ее про­дук­те WinDev — сре­де для раз­работ­ки СУБД, а так­же веб- и мобиль­ных при­ложе­ний. Нес­мотря на то что соз­датели изна­чаль­но замахи­вались на кросс‑плат­формен­ность, про­дукт получил­ся дей­стви­тель­но очень экзо­тичес­кий: он под­держи­вает все­го три наци­ональ­ных язы­ка и за пре­дела­ми Фран­ции прак­тичес­ки неиз­вестен. Зато, если загуг­лить по его наз­ванию, из выбор­ки кар­тинок мож­но соб­рать набор длин­ноногих девиц для эро­тичес­кого жур­нала сред­ней сте­пени целомуд­реннос­ти.

Яв­ляет­ся ли это при­чиной, почему мировая закули­са уси­лен­но зад­вига­ет на зад­ний план про­дук­цию ком­пании и ее фир­менный язык прог­рамми­рова­ния WLanguage (или на фран­цуз­ский манер — WLangage), — решать тебе, а мы перей­дем от лирики к прак­тичес­кой задаче.

Итак, у нас есть некое тор­говое при­ложе­ние на очень экзо­тичес­ком язы­ке, при запус­ке пред­лага­ющее ввес­ти серий­ный номер в ответ на аппа­рат­ный ID.

Слег­ка нер­виру­ет тот факт, что фор­мат кода неясен, а при вво­де неп­равиль­ного зна­чения ничего не про­исхо­дит от сло­ва сов­сем. Судя по раз­меру запус­каемо­го модуля (око­ло 300 Кбайт), это прос­то лаун­чер, не содер­жащий в себе ничего инте­рес­ного. Detect It Easy нам тоже не помощ­ник — с такой экзо­тикой это при­ложе­ние нез­накомо.

Оп­ределить при­над­лежность паци­ента к нашей полик­линике мы можем лишь по кос­венным приз­накам: в ком­плект вхо­дит биб­лиоте­ка WD553HF.dll, которая гуг­лится как «дви­жок Hyper File вер­сии 5.5 WinDev», а так­же весь­ма уве­сис­тый файл с рас­ширени­ем .WDL, который, по информа­ции с того же сай­та, пред­став­ляет собой основную биб­лиоте­ку про­екта и содер­жит фор­мы, исполня­емый шитый код и про­чие исполь­зуемые ресур­сы. И наконец, при бег­лом прос­мотре исполня­емо­го фай­ла в Hex-редак­торе в юни­код­ном режиме мы видим мно­жес­твен­ные упо­мина­ния WinDev и его слу­жеб­ных биб­лиотек.

Об­ретен­ное зна­ние нас мало раду­ет: файл биб­лиоте­ки .WDL при бли­жай­шем рас­смот­рении ока­зыва­ется запако­ван или зашиф­рован, при­чем этот Джо нас­толь­ко неуло­вим, что нагуг­лить в паб­лике деком­пилятор для акту­аль­ной вер­сии невоз­можно. Видимо, ког­да‑то дав­но исходный код WLanguage хра­нил­ся пря­мо внут­ри exe-фай­ла в явном виде (о чем сви­детель­ству­ет наличие весь­ма при­митив­ного «деком­пилято­ра», но сей­час эти счас­тли­вые вре­мена прош­ли, и нам сно­ва при­ходит­ся делать все самос­тоятель­но.

По‑хороше­му надо бы разоб­рать фор­мат WDL и написать собс­твен­ный деком­пилятор, но (учи­тывая чуть менее чем никакую прак­тичес­кую полез­ность это­го экзо­тичес­кого про­дук­та) сно­ва пой­дем путем наимень­шего соп­ротив­ления — поп­робу­ем най­ти код про­вер­ки серий­ного номера и написать его генера­тор.

Источник: xakep.ru

Ответить

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