eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: stronglogic, 3ton (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Софт, инструменты —› Восстановление hints после распаковки
<< . 1 . 2 . 3 . 4 . 5 . 6 . >>
Посл.ответ Сообщение

Ранг: 40.3 (посетитель)
Статус: Участник

Создано: 1 марта 2016 10:01 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #1

Некоторое время назад открыл для себя ручную распаковку исполняемых файлов. В процессе ковыряния столкнулся с тем, что некоторые пакеры заменяют адреса API'шек в IAT на переходники, и в этом случае приходится соответствующим образом редактировать файл, создаваемый тулзой "Import Reconstructor". Восстановление так называемых подсказок для загрузчика показалось мне зело муторным занятием, и после нескольких распаковок я не выдержал и накатал прожку, делающую это автоматически. Вот сцыль, может кому пригодится.

Ранг: 0.0 (гость)
Статус: Участник

Создано: 10 апреля 2017 23:05 New!
Цитата · Личное сообщение · #2

dosprog пишет: А было бы уместно глянуть. Кроме пиздежа ничего. Ноль.

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

Ранг: 407.8 (мудрец)
Статус: Участник

Создано: 10 апреля 2017 23:12 · Поправил: dosprog New!
Цитата · Личное сообщение · #3

shellstorm пишет:
Но специально для тебя сделаю эксклюзивное исключение.

Спецыально ради меня не надо. Если тебе трудно.
) А вот поменьше выебонов - ты бы меня порадовал, правда.
Впрочем, как хош.


Ранг: 0.0 (гость)
Статус: Участник

Создано: 10 апреля 2017 23:16 New!
Цитата · Личное сообщение · #4

dosprog пишет: А вот поменьше выебонов - ты бы меня порадовал, правда.

Себе это чаще повторяй, один раз уже ошибся записав меня в твинки difexacaw, сейчас повторяешь эту же самую ошибку. Умерь ЧСВ.

Ранг: 407.8 (мудрец)
Статус: Участник

Создано: 11 апреля 2017 00:42 · Поправил: dosprog New!
Цитата · Личное сообщение · #5

shellstorm пишет:
На этом форуме я принципиально не буду ничего выкладывать

)) А нахуй ты тогда тут нужен, чуваг? Сам подумай


Ранг: 0.0 (гость)
Статус: Участник

Создано: 11 апреля 2017 01:00 New!
Цитата · Личное сообщение · #6

dosprog пишет:А нахуй ты тогда тут нужен, чуваг?

И этот вопрос задай себе.
1. нативная реализация всегда быстрее jit компиляции?
2. оптимизации cl\lcc\gcc хуже делфи?
3. действительно считаешь говнокод который выкладывался в треде нормальным кодом?
И тут начинает доходить, что независимо от ответов выставишь себя вниманиебл*ядью или нубом.
Даже по клавишам стучать нужно обдумано.

Ранг: 407.8 (мудрец)
Статус: Участник

Создано: 11 апреля 2017 01:01 · Поправил: dosprog New!
Цитата · Личное сообщение · #7

) Чуваг, в сети полно говнокода. У тебя впереди туча работы. Всех поругать, это ж заебёшься. Но не расслабляйся

Ранг: 0.0 (гость)
Статус: Участник

Создано: 11 апреля 2017 01:05 New!
Цитата · Личное сообщение · #8

dosprog пишет: Чуваг, в сети полно говнокода

Что и требовалось доказать, одно пустозвонство и размахивание рангом набитый непосильным флудом, а сколько слов, strcmp, лол.

Ранг: 407.8 (мудрец)
Статус: Участник

Создано: 11 апреля 2017 01:13 · Поправил: dosprog New!
Цитата · Личное сообщение · #9

) Ну, подождём значит от тебя красивой реализации, раз такое дело. Чтоб поучиться, как надо.

--Добавлено--

То, что ты не нужен, уже было?



Ранг: 149.2 (ветеран)
Статус: Участник

Создано: 11 апреля 2017 02:03 · Поправил: -=AkaBOSS=- New!
Цитата · Личное сообщение · #10

FalseMaster пишет:
Правильно ли я разумею, что если контрольная сумма "связанной" DLL'ки окажется обнулённой или неверной, то заполнение IAT будет втихаха произведено по стандартной схеме?

Насколько я знаю, црц хидера на этот механизм не влияет. Проверка идёт по таймштампу компиляции.

Про проверку целостности я упомянул чисто так, к слову. Имелось в виду что будет неприятно использовать подобные механизмы оптимизации, и нарваться на самописную/протекторную проверку целостности.
Я видел случаи, когда авторы подобного западла не удосуживались дописывать вывод соответствующих сообщений, а просто устраивали различные ошибки в расчётах.

FalseMaster пишет:
разве что EditBin не сможет найти свободное место для размещения данных bound-импорта

Ну если он не сможет, тогда уже и отдельную утилиту наваять можно.
Кстати, CFF Explorer вроде как тоже умеет импорт связывать. Но я не уверен, что он делает это самостоятельно, а не посредством вышеупомянутого editbin

Ранг: 27.8 (посетитель)
Статус: Участник

Создано: 11 апреля 2017 03:53 New!
Цитата · Личное сообщение · #11

FalseMaster
>>Помнится, дохренища лет назад, когда ещё только начинал
>>"познавать толк в извращениях", наткнулся на твой неистовый
>>срач с ламерьём на тему дров на делфи

Да уж.. Конечно, со временем пришло действительное "просветление", а собстно что в этом такого?
так, дополнение, в отборную копилку, набора инструментальных средств..

Как по мне, главное чтоб это кайф доставляло (а то и адриналинчик), а не выходило в какуюто там рутину...

shellstorm
>>напишу скрипт делающий это же самое и который будет работать быстрее.

очень интересно на чем напишете?

Окей, вот для примера проджект.
--> https://bitbucket.org/fk/porsche-graphics-hacks/ <--
Автор сделал потрясающую работу по репроцессу 3д вершин, из за чего тачки в NFS5-Porche, не выглядят приплющеными на недобуке с разрешением 1024х600.

Там представлен код на пилюсах и релиз бинарь, компиленый на VS2013...
С дистрибутивом рантайма msvcr120.dll (который даже пришлось хачить чтоб
стартанул на XP-SP2)..

Однако вследствии конченой испоганености MS$ компилера, все это дико тормозило,
на нетбуке с атом N435.

Пришлось подключать похаченый в доль и поперек IntelC++ к дельфи
(удалось отжать из него 3регистровую передачу параметров на fastcall)...

Кстати, посмотрел, на нетбуке оказалась финальная реализация, с
рипнутым выхопом intel C++ (c SSE оптимайзом)
--> https://pastebin.com/5pWQWuC7 <--

Вы осилите _это_ хотябы собрать?

и сделать еще шустрее processVertices:
--> BaseWidescreenThrashDriver_private.h <--

shellstorm, или вы всеже твинки?

Ранг: 40.3 (посетитель)
Статус: Участник

Создано: 12 апреля 2017 07:53 New!
Цитата · Личное сообщение · #12

FalseMaster

>А вот о причине её привиредливости было бы неплохо узнать для общего развития.
Выяснил два (пока что) условия, при которых EditBin не хочет биндить:
1) Обнулённое поле OriginalFirstThunk (адрес lookup table) в дескрипторе импорта. Но это и ежу понятно, просто я заторопился и не заметил поначалу. Насколько мне известно, дубликат IAT "забывают" создавать старые линкеры, как багландские так и мелкософтские. Кстати, очень подло ведёт себя системный загрузчик с драйвером без lookup table – в память пихает, а IAT не заполняет, сцуко.
2) Наличие цифровой подписи, точнее запись в соответствующей data directory.
В общем, всё не так уж плохо, как минимум в половине случаев биндинг возможен.

dosprog

>подождём значит от тебя красивой реализации
Вот так просто – подождём? dosprog, тут не все бессмертные

-=AkaBOSS=-

>…и нарваться на самописную/протекторную проверку целостности.
Ага, теперь понятно. Но это редкость, один раз только с таким сталкивался.

microxa

>главное чтоб это кайф доставляло
Вооот, в этом-то вся и соль. К сожалению большинство программерского люда наотрез отказывается понимать, что "академический" подход не всем удобен и, соответственно, недоставляющ. Мне, к примеру, жизненно необходим простор для байто**ства и высокая скорость компиляции, т.к. проект иногда пересобирается десятки раз в час, и не из-за какой-то там патологической склонности к синтаксическим ашыпкам (хотя куда ж без них), а просто потому, что в "прихожей" толкутся несколько вариантов и хоцца их поскорее опробовать, дабы выбрать наилучший (а когда он наконец выбран и находится на стадии доводки, из глубин сознания неожиданно всплывает новый концепт и всё начинается с начала ).

| Сообщение посчитали полезным: dosprog


Ранг: 27.8 (посетитель)
Статус: Участник

Создано: 12 апреля 2017 15:37 · Поправил: microxa New!
Цитата · Личное сообщение · #13

FalseMaster
По поводу проекта, некоторая критика, все-же не лишена оснований.

Тут, можно разве что пожелать, практиковать парадигму
--> KISS <--
нежели класс обьектниг c фичами ХЕ3

Полученый размер крут, но вот кодес скорей напоминает .NET&KOL передрать который на D7 (а семерочка этож форева, как и хп, ), хоть и представляется возможным.. но какбы.. не слишком того стоящим мероприятием (выпил класс функций из рекордов, переделка под стандартные модули и т.п.).

Хотя в этой связи скорей припомнились грабли со снятием аспра с dll, но тогда всё решила волшебная программа от PE-Kill (сильно тогда офигел, от настолько чисто снятой гадской паковки)

После чего уже избегал подобных схваток с PE бинарьем...

хинты вроде тоже что и релоки?

p.s
shellstorm извиняюсь что влез в скандал, но цель была, всеголишь напомнить, что дельфе это всетаки asm.. а в руках программирующего кряквакера, это еще и туз в рукавах.. так что немного не тот "дурачок подкидной" вышел..да.. с джокером на SSE)


Ранг: 329.2 (мудрец)
Статус: Участник
born to be evil

Создано: 13 апреля 2017 10:28 New!
Цитата · Личное сообщение · #14

microxa пишет:
После чего уже избегал подобных схваток с PE бинарьем...
хинты вроде тоже что и релоки?

вроде каникулы закончились...

Ранг: 407.8 (мудрец)
Статус: Участник

Создано: 13 апреля 2017 12:01 · Поправил: dosprog New!
Цитата · Личное сообщение · #15

) Каникулы да

Хинт это индекс имени импортируемой функции в таблице экспорта DLL, которая экспортирует эту функцию.
Тогда, зная этот индекс, загрузчику "при динамическом связывании по именам" не нужно перебирать последовательно все имена функций,экспортируемых библиотекой, - он быстро находит имя нужного экспорта по этом индексу, сравнивает строку с именем запрашиваемой функции и, если они совпадают, то импорт найден.
Если хинт ошибочный (для линковки с другой версией библиотеки), тогда имя запрашиваемой функции не совпадёт с нйденным в таблице экспорта DLL по индексу-хинту, и загрузчик станет перебирать все имена в экспорте DLL, пока не найдёт запрашиваемую строку-имя функции. Или пока не закончатся эти строки - тогда он выведет сообщение "..linked to missing service ИмяБиблиотеки.dll: ИмяФункции.." и программа не старует.


Ранг: 40.3 (посетитель)
Статус: Участник

Создано: 13 апреля 2017 22:27 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #16

microxa

>некоторая критика, все-же не лишена оснований
Дело в том, что утиль весьма примитивна и вдобавок, как выяснилось по ходу обсуждения, малополезна, чтобы говорить о каком бы то ни было её развитии/поддержке. К тому же, несмотря на нападки злопыхателей, никакого индуизЬма в сурсах нет, и dosprog, которому вынь да положь логирование в файл (на мой взгляд совершенно бессмысленное), ничтоже напрягшися перепилил на свой лад.

>передрать который на D7
Передирать ничего не требуется, весь стафф для компиляции здесь.

>семерочка этож форева
Очень не рекомендую пользоваться багландскими компилями до XE включительно. Выше ты кидал семплы с задействованием SSE. Так вот, при линковке объектника с проектом на делфях старые компили кладут болт на выравнивание сегментов, заданное при трансляции, и принудительно равняют на DWORD. К чему ведёт подсовывание SIMD инструкциями невыравненных адресов, думаю, напоминать не надо (да-да, к лишнему поводу обвинить "клятых паскальщиков" в говнокоденье). Алсо начиная с XE 8/10-байтные данные стали выравниваться правильно и появилась возможность задавать выравнивание структурам и внутри асм-блоков. Но с XE вышла крайне неприятная история. Вот такие пироги.

Ранг: 27.8 (посетитель)
Статус: Участник

Создано: 14 апреля 2017 02:04 New!
Цитата · Личное сообщение · #17

FalseMaster
я толком не вьехал (и чота врядли хочу) что там с джампами было попутано,
но "проблемы" невыравненых SSE, особо и небыло, а если и было- лехко
можно в ручную решить, ну как пример for-переборщик волшебных значений в
инструкции shufps, (можно пошаманить a1/a2)
--> кулкаковый for-переборщик <--
так что не надо ляля..

А вот после того как на D7 (простым жмаком энера в фаре -> dcc.exe) собрался вот этот вот шедевр
сплоита(в очень хорошем смысле) по захвату удаленного управления рабочим
столом win10 (хомки), c нетбука на хп... то теперь и вобще нафик чота другое

--> rdpwrap <--

вот это, даже не кулхак.. это нечто илитарное..

p.s
благоговею пред автором кодеса, но чота не горю желанием знать шо там за фигня происходит, при помощи WriteProcessMemory в раковую slc.dll

Ранг: 40.3 (посетитель)
Статус: Участник

Создано: 14 апреля 2017 06:04 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #18

microxa

>"проблемы" невыравненых SSE, особо и небыло
>кулкаковый for-переборщик
Ну вот, пожалуйста, о чём я и говорил (без подгонки посредством переменных-пустышек, т.к. в реальном проекте с сотнями 16-байтных переменных, раскиданных по юнитам, за**ёшься ляжкой дрыгать с такими финтами):

А теперь меняем
Code:
  1. PS = array [0..3] of INT32;

на
Code:
  1. PS = record
  2.          d0, d1, d2, d3 : INT32
  3. end align 16;

и всё в ажуре:

Только на старых делфях такой номер не прокатит и любой сишный компиль тебя уделает, да не просто уделает, а порвёт на мельчайшие кусочки, ибо MOVAPS в отличие от MOVUPS генерит исключение от корявых адресов.

Ранг: 27.8 (посетитель)
Статус: Участник

Создано: 14 апреля 2017 12:22 · Поправил: microxa New!
Цитата · Личное сообщение · #19

ой ну прям пиcец с этим алигном:
--> DELPHI+SSE - большая проблема <--

помню после распаковки delphi7.zip вдруг оказалось что там нету маленькой програмулины, с веселой такой трекерской музычкой.

пришлось дорабатать, чтоб не парил меня этот регистри.асалям
Code:
  1. delphi32.exe
  2.  
  3. 00007C70: 55 31      xor eax, eax
  4. 00007C71: 8B C0      
  5. 00007C72: EC C2      ret 8
  6. 00007C73: 51 08
  7. 00007C74: B9 00
  8.  
  9. 00008F18: 53 C7      mov [eax],0
  10. 00008F19: 8B 00
  11. 00008F1A: D8 00
  12. 00008F1B: 53 00
  13. 00008F1C: 33 00
  14. 00008F1D: C9 00
  15. 00008F1E: 33 C3      ret
  16.  


другой биг траблой, при локализациях форм, оказался не нужный ни разу вобще, кракозябровый utf8
в строках.
тоже пришлось решить, чтоб в нормальном ascii win1251 оно было (как у D4, ага)
Code:
  1.    rtl70.bpl        FWO EDITMODE          a32 PE  
  2. @System@UnicodeToUtf8$qqrpcuipbui:
  3. 00008598: 55                 push        ebp
  4. 00008599: 8BEC             mov         ebp,esp
  5. 0000859B: FF7508          push        d,[ebp][8]
  6. 0000859E: E829D8FFFF  call   000005DCC ; CharFromWChar
  7. 000085A3: 40                  inc            eax
  8. 000085A4: 5D                 pop          ebp
  9. 000085A5: C20400         retn        4


так то ide мелкая, инсталла не просит. 64метра хватает на всё(с)..
чтоб менять на какоето ояебушеще..

а тут да... на {$ALIGN 16}
>>test.dpr(3) Error: Invalid compiler directive: 'ALIGN'

ну шож, занесем в список тодо всех этих крякми

Ранг: 40.3 (посетитель)
Статус: Участник

Создано: 15 апреля 2017 11:32 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #20

>ой ну прям пиcец с этим алигном:
>--> DELPHI+SSE - большая проблема <--
Да не, ну понятно, что эта недостающая фича легко обходится самостоятельным выделением памяти через VirtualAlloc (ни в коем случае не HeapAlloc'ом), но ведь как ни крути, это существенная прореха в функционале.

>помню после распаковки delphi7.zip вдруг оказалось…
А я уж и не помню. Так давно это было.

>не нужный ни разу вобще, кракозябровый utf8



>так то ide мелкая, инсталла не просит. 64метра
У меня она почему-то за сотню весит, но это с хелпом.

>какоето ояебушеще..
Ну зря ты так. Всё чинно, благородно.


Ранг: 27.8 (посетитель)
Статус: Участник

Создано: 15 апреля 2017 12:29 · Поправил: microxa New!
Цитата · Личное сообщение · #21

>>Да не, ну понятно, что эта недостающая фича легко обходится самостоятельным
>>выделением памяти через VirtualAlloc (ни в коем случае не HeapAlloc'ом),
>>но ведь как ни крути, это существенная прореха в функционале.

ой мляяя... ну вот что ты опять гонишь а? и кому...

В этой связи мне припоминается одно ресурсоемкое приложение FL-Studio,
хаченое/паченое не то что вдоль и поперек. а даже пересобраное в exe,
(по крайней мере 6-рка, нормально перегонялась в OBJ через dll2lib),
и переделаные из dll в exe тоже..
(ну фан. всетоки лампочки светодиодики там, синтезаторы, крутилочки...
циферки зеленые, бубны, ситары и таблами для медитаций).
Да и в общем представляет собой шедевр коденый на дельфи..
(как техно-маг, черпаю вдохновение на новые техники, не ток в программайзе
но и по электронным артефактам).

И как то да, хучу в целях оптимайза и кастоминга, аццкий кусок функционалити
редирекчу->GetMem на свою прикладуху с консольным writeln мониторингом
(не хватило меня на цвета, да). И прикладуха то тормозит то валицо.
как оказалось из за того что движок юзал FastMM...

Ну и какие проблемы то? запилил на семерку, (getmem, перепилил от D2007 -ой чтоли,
даже идут неспешные переработки и тесты, замены копирования через fpu/mmx/sse/sse2)..

С этим просто отлично, поэтому про этот алигн чота даже не загонялся...

тем более в старенький фрютилупс, вполне полным ходом шёл внедреж
оптимайзеных фунок (замест fpu-шных) из новых жиртрестовых студий

както так, да:


зы
какое то время, сидел на 'более-новом' dcc32 от d2007 (version 18.5),
ну да, казалось вау фичи, перегрузка операторов, инлайны ..

казалось то казалось, да только не слишком полезным оказалось...
точней слишком бесполезным..

Ранг: 40.3 (посетитель)
Статус: Участник

Создано: 16 апреля 2017 04:32 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #22

>getmem, перепилил от D2007 -ой чтоли,
>С этим просто отлично, поэтому про этот алигн чота даже не загонялся…
Так за тебя в Борланде "загнались" (строки из System.pas от Delphi 2006):
Code:
  1. {Set the minimum block alignment. In the current implementation blocks >=160
  2.  bytes will always be at least 16 byte aligned, even if only 8-byte alignment
  3.  (the default) is required.}
  4. function GetMinimumBlockAlignment: TMinimumBlockAlignment;
  5. procedure SetMinimumBlockAlignment(AMinimumBlockAlignment: TMinimumBlockAlignment);

Хотя конечно такой "загон" напоминает русскую рулетку.

>както так, да:
А если функа вызывается по условию и вершина стёка имеет зависимость от выполненного кода?

Да что мы зациклились на выравнивании? Ведь помимо него появились и другие плюшки. Например юникодные строки теперь можно оформлять как обычные, а не в виде массива символов. Алиасы применимы не только для импортируемых из внешних либ апишек, но и для функций в подключаемых объектниках. Ешё говорят, что DCC подружился с COFF, правда я сам пока не пробовал, всё руки никак не дойдут.

>какое то время, сидел на 'более-новом' dcc32 от d2007 (version 18.5)
Я как раз эту версию эксплуатировал долгие годы… собственно на XE'шную-то не так давно переполз. Очень не хотелось расставаться, да и патчить заново жуть как ломало, но таки не устоял перед соблазном, о чём нисколько не жалею.

Ранг: 407.8 (мудрец)
Статус: Участник

Создано: 17 апреля 2017 01:36 · Поправил: dosprog New!
Цитата · Личное сообщение · #23

) C "Жопой_Бегемота" это так и было, или поредактирована таблица символов?

Ранг: 40.3 (посетитель)
Статус: Участник

Создано: 17 апреля 2017 20:00 New!
Цитата · Личное сообщение · #24

dosprog
Не, ничего не мухлевал, просто набрал, сохранил (в ANSI и в UTF-8 с BOM) и запустил.

Ранг: 407.8 (мудрец)
Статус: Участник

Создано: 17 апреля 2017 22:51 · Поправил: dosprog New!
Цитата · Личное сообщение · #25

Я это к тому, что в делфи теперь можно использовать кириллицу в именах переменных?
Как-то неожиданно.

Это так, к слову - вспомнился старинный прикол с кириллицей в именах переменных: --> TASM 2 CYR <--


Ранг: 40.3 (посетитель)
Статус: Участник

Создано: 19 апреля 2017 17:55 · Поправил: FalseMaster New!
Цитата · Личное сообщение · #26

>прикол с кириллицей в именах переменных: --> TASM 2 CYR <--
Эх, гулять так гулять




Ранг: 291.0 (наставник)
Статус: Участник

Создано: 22 апреля 2017 15:47 New!
Цитата · Личное сообщение · #27

microxa

Ух ты, это же дос. Синяя консоль, как же не приятно это видеть. Но приятно вспомнить.

Ранг: 407.8 (мудрец)
Статус: Участник

Создано: 22 апреля 2017 16:43 · Поправил: dosprog New!
Цитата · Личное сообщение · #28

где там дос?

difexacaw пишет:
Turbo asm v5^


Это WIN23 PE-EXE программа.

А с синим окном то FAR, тоже WIN32.


Ранг: 291.0 (наставник)
Статус: Участник

Создано: 22 апреля 2017 16:47 New!
Цитата · Личное сообщение · #29

dosprog

Turbo asm v5^

Ранг: 15.5 (новичок)
Статус: Участник

Создано: 22 апреля 2017 17:21 New!
Цитата · Личное сообщение · #30

dosprogdosprog пишет:
где там дос?

в эмуляторе досбокс, наверное ?


Ранг: 291.0 (наставник)
Статус: Участник

Создано: 22 апреля 2017 17:27 New!
Цитата · Личное сообщение · #31

VanHelsing

Да, он не понимает смысл. Запуск в вм для него это нечто иное, чем прямой запуск. Не смотря на то, что это не перестаёт быть синей консолью и досом.
<< . 1 . 2 . 3 . 4 . 5 . 6 . >>
 eXeL@B —› Софт, инструменты —› Восстановление hints после распаковки

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS