eXTracted INternals

eXTracted INternals
 
ФорумФорум  ЧаВоЧаВо  ПоискПоиск  РегистрацияРегистрация  ПользователиПользователи  ГруппыГруппы  Вход  

Поделиться | 
 

 Обход Symbian Capabilities

Предыдущая тема Следующая тема Перейти вниз 
На страницу : Предыдущий  1, 2, 3, 4, 5, 6
АвторСообщение
Kwull

avatar

Количество сообщений : 17
Дата регистрации : 2007-04-04

СообщениеТема: Re: Обход Symbian Capabilities   Пт 28 Дек - 12:34

в голову пришла интересная мысль. Параллельной отладки арм кода например z:\sys\bin\installserver.exe и отладки аналогичного виндового ехе из сдк, который с отладочной информацией. Можно использовать HexRays Smile

Например
arm:
Код:

.code:00008BD6 F3 B5                      PUSH    {R0,R1,R4-R7,LR}
.code:00008BD8 B3 B0                      SUB    SP, SP, #0xCC
.code:00008BDA 28 A8                      ADD    R0, SP, #0xE8+var_48
.code:00008BDC 09 F0 B8 EA                BLX    TCapabilitySet::SetEmpty(void)
.code:00008BE0 34 98                      LDR    R0, [SP,#0xE8+var_18]
.code:00008BE2 09 F0 F6 E9                BLX    RPointerArrayBase::Count(void)
.code:00008BE6 27 90                      STR    R0, [SP,#0xE8+var_4C]
.code:00008BE8 00 20                      MOVS    R0, #0
.code:00008BEA 2B E0                      B      loc_8C44
.code:00008BEC
.code:00008BEC            loc_8BEC                                ; CODE XREF: CheckValidCertCapabilities+78j
.code:00008BEC 34 98                      LDR    R0, [SP,#0xE8+var_18]
.code:00008BEE 03 99                      LDR    R1, [SP,#0xE8+var_DC]
.code:00008BF0 09 F0 E6 E9                BLX    RPointerArrayBase::At(int)
.code:00008BF4 00 68                      LDR    R0, [R0]
.code:00008BF6 00 6A                      LDR    R0, [R0,#0x20]
.code:00008BF8 00 28                      CMP    R0, #0
.code:00008BFA 21 D0                      BEQ    loc_8C40

win:
Код:

int __thiscall Swi__CInstallMachine__CheckAndGrantCapabilitiesL(int this, int aFilesToCapabilityCheck)
{
... поскипаны переменные и небольшое начало ...
.text:0040787B                mov    [ebp+this], ecx
.text:00407881                lea    ecx, [ebp+requestedCaps]
.text:00407887                call    TCapabilitySet::TCapabilitySet(void)
.text:0040788C                lea    ecx, [ebp+requestedCaps]
.text:00407892                mov    [ebp+var_4], 0FFFFFFFFh
.text:00407899                call    TCapabilitySet::SetEmpty(void)
.text:0040789E                mov    ecx, [ebp+aFilesToCapabilityCheck]
.text:004078A1                mov    [ebp+var_4], 0FFFFFFFFh
.text:004078A8                call    RPointerArray<Swi::Sis::CFileDescription>::Count(void)
.text:004078AD                mov    [ebp+numFiles], eax
.text:004078B3                mov    edx, 0
.text:004078B8                mov    [ebp+i], edx
.text:004078BE                jmp    loc_4079DB
.text:004078C3 ; ---------------------------------------------------------------------------
.text:004078C3
.text:004078C3 loc_4078C3:                            ; CODE XREF: Swi::CInstallMachine::CheckAndGrantCapabilitiesL(RPointerArray<Swi::Sis::CFileDescription> &)+1A0j
.text:004078C3                push    [ebp+i]        ; anIndex
.text:004078C9                mov    ecx, [ebp+aFilesToCapabilityCheck]
.text:004078CC                mov    [ebp+var_4], 0FFFFFFFFh
.text:004078D3                call    RPointerArray<Swi::Sis::CFileDescription>::operator[](int)
.text:004078D8                mov    ecx, [eax]
.text:004078DA                mov    [ebp+fd], ecx
.text:004078E0                mov    ecx, [ebp+fd]
.text:004078E6                call    Swi::Sis::CFileDescription::Capabilities(void)
.text:004078EB                mov    [ebp+caps], eax
.text:004078F1                cmp    [ebp+caps], 0
.text:004078F8                jz      loc_4079D5

ну и HexRays
Код:

  memset(&this, -858993460, 0xF8u);
  this = this;
  TCapabilitySet__TCapabilitySet();
  v21 = -1;
  TCapabilitySet__SetEmpty(&requestedCaps);
  v21 = -1;
  numFiles = RPointerArray_Swi__Sis__CFileDescription___Count();
  i = 0;
  while ( i < numFiles )
  {
    v21 = -1;
    fd = *(_DWORD *)RPointerArray_Swi__Sis__CFileDescription___operator__(i);
    v3 = Swi__Sis__CFileDescription__Capabilities();
    caps = v3;
    if ( v3 )
    {
......
Вернуться к началу Перейти вниз
Посмотреть профиль
Hex

avatar

Количество сообщений : 397
Возраст : 35
Дата регистрации : 2006-07-12

СообщениеТема: Re: Обход Symbian Capabilities   Сб 29 Дек - 10:03

Можно, но не все сходится.
Вернуться к началу Перейти вниз
Посмотреть профиль
wl



Количество сообщений : 127
Дата регистрации : 2007-02-15

СообщениеТема: Re: Обход Symbian Capabilities   Вс 30 Дек - 5:08

больше всего раздражает, что номера ординалов не совпадают
Вернуться к началу Перейти вниз
Посмотреть профиль
Hex

avatar

Количество сообщений : 397
Возраст : 35
Дата регистрации : 2006-07-12

СообщениеТема: Re: Обход Symbian Capabilities   Пн 18 Фев - 3:12

oott, я отсоединил твою тему вот сюда:
http://xtin.activebb.net/forum-f3/tema-t46.htm
Вернуться к началу Перейти вниз
Посмотреть профиль
intro

avatar

Количество сообщений : 34
Дата регистрации : 2007-03-23

СообщениеТема: Re: Обход Symbian Capabilities   Вс 9 Мар - 20:18

в сети появилась интересная информация о том, как получить все капабилити в системе S60v3 БЕЗ ПЕРЕПРОШИВКИ устройства Exclamation

ниже оригинальный текст. автор FCA00000 с Symbian Freak (http://www.symbian-freak.com/forum/viewtopic.php?t=17479):

------------------------------------------------------------------------------------

Hi all
I got it: All permissions are gone ! The privileges framework in Symbian 9 is broken.

First of all: you can get the needed files from

http://fca00000.googlepages.com/hack_perms_s60v3.rar

1) Current state:
In S60v3, Symbian implemented a security mechanism: applications need to be signed in order to access some services.
A developper can self-sign his own applications, but the most critical services need a powerful certificate, which not everyone can afford.
For example, you can not make a file browser able to access c:\sys . This is not very important, but some people feels that they should be able
to do anything they want.

2) The theory:
When a program is signed and you install it, its privileges are stored in a internal folder. When the program is executed and
tries to access a service, the privileges are checked. If they don't match, the service can not be executed, and gives an error.
In the PC emulator for Symbian, it is possible to overrride this, so that missing privileges give a warning, not an error.
This is controlled through a file called EPOC.INI that includes a line like
PlatSecEnforcement OFF
In the phone, this is not modifiable directly.
The routine controlling this is called

Код:
DProcess::DoHasCapability(TCapability , char const)

In my Nokia N80, this is at F80478BC and says
Код:
....
F8047968                BL      log_missing_capabilities (F80458D8)
....

Look at F80458D8:
Код:
....
F8045930                LDR    R0, =pSuperPage
F8045934                LDR    R0, [R0]
F8045938                LDR    R0, [R0,#0x148]
F804593C                TST    R0, #2
F8045940                BEQ    loc_F804597C
F8045944                ADR    R1, aError
F8045948                MOV    R0, R1
....


Basically, this looks at the data at [pSuperPage+0x148] and checks bit 2.
If it is set, any missing capability will give an error.
If not, it will log the problem, but the check will succeed.

So, all you need to do is to change this value.

In my mobile, pSuperPage has value 0x60000000, so the data is stored at 0x60000148

3) the hack:
The programming enviroment Carbide.c++ v1.2 includes a file called s60_3_0_app_trk_2_7.sisx
It also comes with CodeWarrior Pro for Symbian, although it is version S60_App_TRK_2_5.sisx
This file is a On-Device-Debugger, used to run programs inside the phone, and see the flow and data in the PC.
In my experience, CodeWarrior is easier to use for debugging.
It allows to look at the program registers, phone memory, processes, and change the data.
At memory address 0x60000148 the value stored is 0x0000001E , which means that
Код:
PlatSecEnforcement is ON
So, change it from 0x0000001E to 0x00000010 and you get all the permissions !

4) The tools:
You need a Nokia phone using Symbian 9 .
You also need some way to connect it to a PC, for example USB or bluetooth. Infrared is not valid.
Next step is the MetroTRK.
If you have CodeWarrior, it is the preferred solution. If not, I made a Python program to emulate it.
If you have IDA-disassembler a a ROM dump, then you can investigate in case it doesn't work.

5) The phone:
I have tested with Nokia-N80. I suppose it works with any phone using S60v3.
The changes I make are only in memory. This means that when the phone is switched-off, the hack dissapears.
You need to run it again after a restart. I know this is a limitation, but a permanent solution will come later.
On he other hand, this is good: there is (almost) no risk on permanently breaking your phone.
Of course, do it under your own risk. I take no responsability

6) The connection:
I use a USB cable labelled CA-42 which is a simple data cable; no fancy stuff.
Connect the phone to the PC.
The phone asks the mode you want to use: 'PC Suite'
My operating system is Windows-XP and my PC detects automatically the driver, installing
something called 'Nokia N80 USB modem'.
If not, drivers are available in many places, for example
http://www.nodevice.es/driver/CA-42/get37496.html
If you have PC-Suite, you probably have the driver already. But remember that you need to disable in the PC: stop the program.
At this point, you probably have a new serial port:
Control Panel->System->Hardware->Device Manager->Ports
should show
'Nokia N80 USB (COM6)'
It might happen that you have both COM6 and COM7 . You will need to try both.

7) The MetroTRK:
This is a debugger that installs in the phone. It has powerfull permissions and a strong certificate, which allows to read/write memory.
Transfer the file s60_3_0_app_trk_2_7.sisx into your mobile, and install it.
You should see a new application called 'TRK'.
Run it.
By default it tries to use BlueTooth, so it might give an error because no available ports.
Код:
Options->Settings->Connection=USB
Options->Settings->Port=1
Options->Settings->Baud Rate=115200
Options->Connect should tell:
Welcome to TRK for Symbian OS
Status: Connected
PDD: NONE
LDD: EUSBC
CSY: ECACM
Port Number: 1
Baud rate: 115200

This is the most difficult step.
If you get
Код:
'Failed to open port.Error Code: -21'
this means that your PC is not talking to the mobile. This is the case when the driver is not installed.

7.1) You need another program called HelloCarbide . It is a simple example. Install it in c:
You also need to transfer HelloCarbide.exe directly under c:\HelloCarbide.exe using any FileBrowser, ex: SExplorer

Cool The hacker:
If you have CodeWarrior, go to 8.2 . If not, go to 8.1
8.1) I made a program called hack_perms_s60v3.py
It is written in pyhton, so you need Python25 from www.python.org
It uses the serial port, so you also need pyserial (http://sourceforge.net/projects/pyserial)
and probably pywin32 (http://sourceforge.net/projects/pywin32)
Download the binaries and execute them. As simple as that.

My program uses COM6 at line
Код:
ser = serial.Serial(5)
If you have another port, change this number. COM6 = port 5

Run my program by typing
Код:
hack_perms_s60v3.py

It logs a lot of information. In case of problems, investigate. I _might_ try to help.

If you get
Код:
serial.serialutil.SerialException: could not open port: ... The system cannot find the file specified.
this means that the port doesn' exist.

If you get
Код:
serial.serialutil.SerialException: could not open port: ... The process cannot access the file because it is being used by another process.
this means that there is another program using the port. Most probably you are trying COM7 instead of COM6.

If it hangs after
Код:
sendFrame=00
sendFrame=FF
sendFrame=7E
this means that MetroTRK is not running in the mobile.

If everything goes OK, it takes 40 seconds and the last line are:
Код:
Close
End+Exit

Look at the trace: you should see 2 lines like:
Read Memory 60000148=1E 00 00 00
candidate!!!

This is good. It means that it found the correct address and patched it.

8.2) If you have CodeWarrior and know how to use it, it is better.
Load any program you have (HelloWorld.mmp is perfect) and start a mobile debugging session:
The target should be GCCE UDEB .
In its settings->Remote Debugging->Connection = Symbian Metro TRK
Same window->Edit Connection->Connection Type=Serial ; Port = COM6
Same window->Remote dowload path = c:\
settings->Remote Download-> Remove any file here
Remember that, because of security, applications can't be downloaded into c:\sys\bin , so they
need to be installed before. I do this manually.
See:
http://www.mobilenme.com/content/view/41/26/
http://mikie.iki.fi/wordpress/?p=33#comment-6299
http://www.newlc.com/topic-5398
http://discussion.forum.nokia.com/forum/showthread.php?t=72632
http://discussion.forum.nokia.com/forum/showthread.php?t=80807

Now, start debugging the program.
You should see the 'Metro TRK Communication Log' with lots of information.
Break the program.
Select the stack.
Menu->Data->View Memory . Ignore the error
Display 0x60000000
Look at 0x60000148. Probably has value 0x1E
Double-click, and type 0x10. Hit enter.
Run program.
Close Thread window. Resume.

9) Advanced:
If you have IDA-disassembler and a ROM dump, you can see the actual code.
This is a heavy task, but the main file is ekern.exe
You can get a full Dump using this Symbian code:
Код:
       RFs fileSession;
       fileSession.Connect();
   
       RFile file;
       file.Replace(fileSession, _L("e:\\F8000000.bin"), EFileWrite);
   
       TBuf8<0x200> buf;
   
       TUint8 *p =(TUint8*)0xF8000000; // (TUint8*)0xF8000000;
       TUint8 *pEnd = (TUint8*)0xFA000000; // (TUint8*)0xFA000000;
       TUint8 iVal = 0;
       for(;p < pEnd;p++)
       {
           iVal = *p;
           buf.Append(iVal);
   
           if(buf.Length() == buf.MaxLength())
           {
               file.Write(buf);
               buf.Zero();
           }
       }
   
       file.Close();
       fileSession.Close();
And then extract files using ROMTools from Syminternals. If you can't get it, I can provide it.
To use IDA, get the Symbian SDK, and process through ROMTools . Name the routines and study the disassembled code.

10) Test:
Start any application which needs pivileges. I tried SExplorer and TrueExplorer, and I was able to
browse c:\sys , although:
10.1) SExplorer can not access Z:\sys
10.2) TrueExplorer can not find files under c:\sys\bin



It works in my Nokia-80, and I expect to work also in other models.

Did it work for you? Please post results.

Please try it, and we will notify Nokia about it.
I would like to publish it under full-disclosure, but let's give it some time.

Thanks

http://www.symbian-freak.com/forum/viewforum.php?f=6
http://forum.oslik.ru/viewtopic.php?p=266890#266890
http://rom.reversing.in.t-h-i-s.biz/index.php?act=idx

-------------------------------------------------------------------------------------

вот такие вот дела Smile

пока не проверял, но судя по отзывам в оригинальной ветке этот вариант работает. pirat
Вернуться к началу Перейти вниз
Посмотреть профиль
Hex

avatar

Количество сообщений : 397
Возраст : 35
Дата регистрации : 2006-07-12

СообщениеТема: Re: Обход Symbian Capabilities   Пн 10 Мар - 0:17

Молодец cheers

Вовремя я ему намекнул про то, что MetroTrk может писать/читать где угодно Smile
Вернуться к началу Перейти вниз
Посмотреть профиль
intro

avatar

Количество сообщений : 34
Дата регистрации : 2007-03-23

СообщениеТема: Re: Обход Symbian Capabilities   Пн 10 Мар - 5:04

отлично, всё работает Cool пока проверил только на Е61, прошивка 3.0633.09.04. адрес в памяти абсолютно точно совпал с описанным в посте - 0x60000148, замена 0x1E на 0x10 приводит к желаемому результату.

есть доступ в sys и private, причём даже не пришлось ставить пропатченный файлмен, уже запущенный во время всего действа x-plore на ходу увидел внутренности системных папок.

естественно, работает этот финт до первой перезагрузки аппарата.

--
немного позже, если получится, смогу проверить на 9.2. о результатах сообщу.
Вернуться к началу Перейти вниз
Посмотреть профиль
Hex

avatar

Количество сообщений : 397
Возраст : 35
Дата регистрации : 2006-07-12

СообщениеТема: Re: Обход Symbian Capabilities   Пн 10 Мар - 8:28

intro пишет:
адрес в памяти абсолютно точно совпал с описанным в посте - 0x60000148, замена 0x1E на 0x10 приводит к желаемому результату.
Я думаю оно везде будет одинаково. В Е60 и Е70, точно также
Вернуться к началу Перейти вниз
Посмотреть профиль
intro

avatar

Количество сообщений : 34
Дата регистрации : 2007-03-23

СообщениеТема: Re: Обход Symbian Capabilities   Пн 10 Мар - 9:15

Hex пишет:

Я думаю оно везде будет одинаково. В Е60 и Е70, точно также

точно, в рамках всей линейки s60v3 (OS v9.1) адрес вроде один и тот же.

а вот на s60v3 fp1 (OS v9.2) - по данному адресу лишь FF FF или ?? ??. правильный адрес для 9.2 пока не найден.
Вернуться к началу Перейти вниз
Посмотреть профиль
paimon

avatar

Количество сообщений : 3
Дата регистрации : 2008-02-25

СообщениеТема: Re: Обход Symbian Capabilities   Пн 10 Мар - 10:35

все парни,теперь и после перезагрузки работает.Сантехник патч выложил уже.
Вернуться к началу Перейти вниз
Посмотреть профиль
intro

avatar

Количество сообщений : 34
Дата регистрации : 2007-03-23

СообщениеТема: Re: Обход Symbian Capabilities   Пн 10 Мар - 10:42

paimon пишет:
все парни,теперь и после перезагрузки работает.Сантехник патч выложил уже.

нет, не всё. только доступ к фс из одной единственной программы (x-plore).
Вернуться к началу Перейти вниз
Посмотреть профиль
intro

avatar

Количество сообщений : 34
Дата регистрации : 2007-03-23

СообщениеТема: Re: Обход Symbian Capabilities   Пн 10 Мар - 14:34

вроде разобрался как найти корректный адрес для 9.2.
жду пока парсится дамп..

UPDATED:
на 9.2 через TRK нельзя прочитать память другого процесса, а это не есть хорошо...


Последний раз редактировалось: intro (Пт 14 Мар - 0:20), всего редактировалось 1 раз(а)
Вернуться к началу Перейти вниз
Посмотреть профиль
Hex

avatar

Количество сообщений : 397
Возраст : 35
Дата регистрации : 2006-07-12

СообщениеТема: Re: Обход Symbian Capabilities   Вт 11 Мар - 1:05

Поидее можно открыть Logical Device MetroTRK и через IOCTL запросы читать/писать память.
Вернуться к началу Перейти вниз
Посмотреть профиль
Zorn



Количество сообщений : 45
Дата регистрации : 2007-05-28

СообщениеТема: Re: Обход Symbian Capabilities   Ср 26 Мар - 19:12

Сварганил на досуге пакет для отключения капсов на теле (комп нужен только один раз). Основан на методе FCA, за что ему большой респектище.
Пока тока первая бетка, без автостарта и с гиморной установкой. К тому же проверяется тока один адрес на одно значение ([60000148]==1E), правда в TRKpatcher эти значения можно изменить. Для ROMPatcher это доделаю позже.

Потом, как доделаю, TRKpatcher превратится в инсталлер, а ROMPatcher в менеджер патчей

Инструкции внутри
DisCaps.zip
Вернуться к началу Перейти вниз
Посмотреть профиль
LazyCat



Количество сообщений : 11
Дата регистрации : 2008-04-03

СообщениеТема: Re: Обход Symbian Capabilities   Чт 3 Апр - 16:52

В связи со всеобщей эксплуатацией полного доступа к файловой системе Symbian 9.x возник вопрос! Так как SIS - это обычный архив, то нельзя ли сделать прогу(типа китайского инсталятора с пакетным режимом работы), которая будет просто распаковывать в нужные папки, считать хэш и ложить его в нужное место? При этом вообще не нужны какие-либо подписи и сертификаты! В принципе!!! Или я чего-то не понимаю?
Вернуться к началу Перейти вниз
Посмотреть профиль
intro

avatar

Количество сообщений : 34
Дата регистрации : 2007-03-23

СообщениеТема: Re: Обход Symbian Capabilities   Чт 3 Апр - 22:54

LazyCat пишет:
В связи со всеобщей эксплуатацией полного доступа к файловой системе Symbian 9.x возник вопрос! Так как SIS - это обычный архив, то нельзя ли сделать прогу(типа китайского инсталятора с пакетным режимом работы), которая будет просто распаковывать в нужные папки, считать хэш и ложить его в нужное место? При этом вообще не нужны какие-либо подписи и сертификаты! В принципе!!! Или я чего-то не понимаю?

В принципе можно. Так что можешь начинать писать, если есть желание. Только таким образом ставить проги можно будет только на диск C. На данный момент проще установить корневой сертификат от Leftup и подписывать (прилагающимся к нему сертом и ключем) программы можно будет даже без компа, прямо на смарте.
Вернуться к началу Перейти вниз
Посмотреть профиль
Zorn



Количество сообщений : 45
Дата регистрации : 2007-05-28

СообщениеТема: Re: Обход Symbian Capabilities   Чт 3 Апр - 23:33

intro пишет:
В принципе можно. Так что можешь начинать писать, если есть желание. Только таким образом ставить проги можно будет только на диск C.
Почему, можно и на Е ставить, тока в c:\sys\hash\ закинуть SHA-1 хеши исполняемых файлов.
Тока смысла не вижу в такой проге. Скоро доделаю ROMPatcher и можно будет проверку сертов отрубать нах...
Вернуться к началу Перейти вниз
Посмотреть профиль
intro

avatar

Количество сообщений : 34
Дата регистрации : 2007-03-23

СообщениеТема: Re: Обход Symbian Capabilities   Пт 4 Апр - 0:52

Zorn пишет:

Почему, можно и на Е ставить, тока в c:\sys\hash\ закинуть SHA-1 хеши исполняемых файлов.

Это понятно, только у меня например после этого иконка проги в меню всё равно не появляется.

Zorn пишет:

Тока смысла не вижу в такой проге. Скоро доделаю ROMPatcher и можно будет проверку сертов отрубать нах...

Всё верно. Ждём релиза! pirat
Вернуться к началу Перейти вниз
Посмотреть профиль
LazyCat



Количество сообщений : 11
Дата регистрации : 2008-04-03

СообщениеТема: Re: Обход Symbian Capabilities   Пт 4 Апр - 3:09

Я действительно чего-то не понимаю, ведь патчить ROM - это неуниверсально ! Не факт, что Nokia не изменит теперь структуру прошивки и не введет контроль CRC ! И что, опять ковырять прошивку ? Да и не каждый пользователь согласится менять прошивку(да и не у каждого есть такая возможность). А как же апдейты ? Да и небезопасно это с точки зрения противовирусной защиты. И скорее всего Nokia внесет китайский сертификат в "черный" список и на новых прошивках он работать не будет Sad
А подобный инсталятор универсален - один раз открыл доступ к системным папкам, кинул exe & sha-1 with all capabilites, а дальше не страшны никакие перезагрузки и перепрошивки (все сохранит и восстановит PC Suite) !!!
Но я написать такое и не смогу(потому я здесь) - пока не хватает опыта работы с Symbian Sad Это скорее смогут Hex & wl
Вернуться к началу Перейти вниз
Посмотреть профиль
Hex

avatar

Количество сообщений : 397
Возраст : 35
Дата регистрации : 2006-07-12

СообщениеТема: Re: Обход Symbian Capabilities   Вт 8 Апр - 0:21

Продолжение теперь тут:
http://xtin.activebb.net/forum-f1/tema-t54.htm
Вернуться к началу Перейти вниз
Посмотреть профиль
Спонсируемый контент




СообщениеТема: Re: Обход Symbian Capabilities   

Вернуться к началу Перейти вниз
 
Обход Symbian Capabilities
Предыдущая тема Следующая тема Вернуться к началу 
Страница 6 из 6На страницу : Предыдущий  1, 2, 3, 4, 5, 6

Права доступа к этому форуму:Вы не можете отвечать на сообщения
eXTracted INternals :: Вопросы и ответы :: Общий форум-
Перейти: