Сейчас на форуме: -Sanchez- (+8 невидимых)

 eXeL@B —› Основной форум —› Взлом dotNET программ
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 49 . 50 . >>
Посл.ответ Сообщение

Ранг: 60.6 (постоянный), 20thx
Активность: 0.070
Статус: Участник

Создано: 30 августа 2010 22:59 · Поправил: s0l
· Личное сообщение · #1

Со времени создания топика много обсудили, во много м разобрались и много осталось за кадром. Решил подшить выкладываемый софт и линки

Инструменты:

dnSpy - бодрый декомпилятор и отладчик тут беты

Gray Wolf - DE-ObfuScatE / Edit IL(Live) / Add payloads / Edit attributes(public/privet) / Copy strong names signing on EXE/DLL
ReSharper 6.0 Build 2093 Pre-Release - Очень навороченый декомпилер, побробности --> ТУТ <--.
Рег-данные:
Code:
  1. User Name: ReSharper EAP User
  2. License Key: 0-A60kqsqDMPkvPrLC3bz1/jmns4/DAUV6
  3. which is valid until 31 March 2010

Reflector 8.3.3.115 - платный декомпилятор .NET 8.3.0.95 + (дополнение к нему)
Седьмая версия рефлектора - думаю все знают
Сборка Add-in'ов для Reflector - есть много полезных вещей
.Net ID 1.0.0.3 - определение защиты
DNiD by Rue - сигнатурный анализатор
Dotnet IL Editor (DILE)- Opensource дизассемблер и дебаггер
Xenocode Fox Code Analyzer- профайлер и дизассемблер
Reactor Decryptor 1.7 - что то декриптит, но что не понятно(с) zeppe1in
Simple Assembly Explor (SAE) - Assembler, Disassembler, Deobfuscator, IL editor and more...
DotNet Dumper 1.0 - Дампер .net'овских приложений. Подробное описание
Kurapica dotNET Tracer 1.1 - трейсер от известного автора инструментов для .net
ILSpy 1.0.0.481 - Opensource комбайн, на подобие SAE. Подробности тут
dotTrace Performance 4.0.665.4 - Неплохой трейсер для .Net приложений. Умеет делать трейсы не смешивая потоки как KDT. Умеет сравнивать трейсы двух запусков программы
Рег-данные:
Code:
  1. Name: exelab
  2. Serial: OLgDSHG0hJghkLdXYJh1IjM3ytMrqKcn

Universal Fixer 1.0 - fix dumps after dumping them whit Dotnet Dumper or other similiar tools and will also fix nasty things: multiple assembly/module definitions, wrong extends, etc.
iMPROVE .NET Deobfuscator - деобфускатор


ConfuserDumper
ConfuserDelegateKiller
CodeCrackerTools: ConfuserMethodsDecryptor, ConfuserDelegateKiller, ConfuserStringDecryptor, MegaDumper, etc.

Статьи с хабры:
Защита .NET приложений - Субъективная теоретическая муть с хабры, выдаваемая за обзор обфускаторов(только для фанатов)
Как обмануть NET.Reflector - вот это уже годная статья, в которой рассматривается ручная обфускация в стихах и картинках
Взлом программ для чайников - ну не знаю...прописные истины, но приятно, что все это есть на русском языке и нормально оформлено
Реверс-инжиниринг обфусцированной сборки .NET - один только заголовок чего стоит. По сути статья информативная
Инъекции MSIL кода в стороннюю сборку при помощи Mono.Cecil. Реализация принципов АОП в NET
Избавление .NET программы от регистрации на примере BEM
Снимаем дамп объектов с памяти .Net приложения

Другое:
.NET Reflector v7.0.0.198 (C# Source by wangshy)
[url=http://lifeinhex.com/string-decryption-with-de4dot/]String decryption with de4dot[/url

-

Last edit: 2012-02-17, Links fixed. Jupiter]



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 09 февраля 2011 10:31
· Личное сообщение · #2

практически ничего, в принципе, если есть исходники плагина, то можно пересобрать под актуальную




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 09 февраля 2011 13:30
· Личное сообщение · #3

CodeSearch вроде работает в последней, хоть и написан для 5.0

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 95.2 (постоянный), 26thx
Активность: 0.060
Статус: Участник

Создано: 10 февраля 2011 09:06
· Личное сообщение · #4

А что вот делать с такой хренатенью?

картинго

поверх вроде .net reactor 4+



Ранг: 78.7 (постоянный), 43thx
Активность: 0.070
Статус: Участник

Создано: 10 февраля 2011 11:29
· Личное сообщение · #5

inf1kek пишет:
А что вот делать с такой хренатенью?

Может и МексКод
rghost.ru/4281487
Так Посмотри !



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 10 февраля 2011 11:34
· Личное сообщение · #6

inf1kek
для начала надо получить .NET сборку проги



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 10 февраля 2011 13:28 · Поправил: sendersu
· Личное сообщение · #7

Reflector 7 beta3

что нового
.NET Reflector 7 Beta 3 is now available. This build is feature complete and contains numerous enhancements to decompilation and .NET 4 support, along with tabbed decompilation, and PowerCommands integration. This beta fixes an exception that occurred when Reflector was closed due to an expected folder not being created.

Внимание! ета версия требует активации
время на поиграццо - 14 дней



Ранг: 47.8 (посетитель), 16thx
Активность: 0.020.01
Статус: Участник

Создано: 17 февраля 2011 23:22
· Личное сообщение · #8

Пара вопросов:
Может кто подскажет (сам пока не нашел) где в метаданных прописывается список сборок для аттрибута InternalsVisibleToAttribute? И можно ли, оставив InternalsVisibleToAttribute рабочим для дружественной сборки, убрать зависимость от publickey, т.е. сделать сборку дружественной только по имени (в случае если у дружественной сборки нет publickey).



Ранг: 47.8 (посетитель), 16thx
Активность: 0.020.01
Статус: Участник

Создано: 18 февраля 2011 00:41
· Личное сообщение · #9

Отвечу сам себе
1. table CustomAttribute
2. от паблик ключа можно отвязать забиванием его нулями в блобе с правкой размера аттрибута




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 18 февраля 2011 23:14
· Личное сообщение · #10

На подходе ReShaper 6
blogs.jetbrains.com/dotnet/2011/02/resharper-6-bundles-decompiler-free-standalone-tool-to-follow/

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.


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

Ранг: 47.8 (посетитель), 16thx
Активность: 0.020.01
Статус: Участник

Создано: 23 февраля 2011 01:13
· Личное сообщение · #11

Нужен .Net отладчик
есть приложение, основной запускаемый файл - нативный, в процессе запуска выполняется куча длл - нативных, .Net и Mixed сборок
программа падает на одном методе Mixed сборки
хочется посмотреть это дело в отладке
чем лучше дебажить такой случай?
Dile я не смог туда прикрутить
В принципе идеальным вариантом был бы отладчик Visual Studio, только не понимаю пока как запустить отладку и остановиться именно на нужном мне методе. Может есть какие-то примочки для студии?



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 24 февраля 2011 08:20
· Личное сообщение · #12

Tyrus, можно попробовать вот это для отладки
www.smidgeonsoft.prohosting.com/pebrowse-pro-interactive-debugger.html



Ранг: 47.8 (посетитель), 16thx
Активность: 0.020.01
Статус: Участник

Создано: 24 февраля 2011 23:02
· Личное сообщение · #13

Av0id
Спасибо, но это помоему не подходит.

Проблема такая:
Убил во всех файлах сборки StrongName
Загрузка идет полным ходом до появления такого экспешена:

Code:
  1. Microsoft.Practices.Unity.ResolutionFailedException was unhandled
  2.   Message="Resolution of the dependency failed, type = "TEMS.Domain.ServiceModel.ServiceProviderSupplierFactory", name = "AppDomainFactory". Exception message is: The current build operation (build key Build Key[TEMS.Equipment.Server.AppDomainServerFactory, AppDomainFactory]) failed: Evidence has no strong name key (Strategy type BuildPlanStrategy, index 5)"
  3.   Source="TEMS.Domain"
  4.   NameRequested="AppDomainFactory"
  5.   TypeRequested="ServiceProviderSupplierFactory"
  6.   StackTrace:
  7.        в TEMS.Domain.DomainResolver.get_ServiceProviderSupplierFactories()
  8.        в TEMS.ServiceModel.ServiceProviderManager.Activate()
  9.        в tem.MixedEquipmentManagerSink.onStartServer(MixedEquipmentManagerSink* )
  10.   InnerException: Microsoft.Practices.ObjectBuilder2.BuildFailedException
  11.        Message="The current build operation (build key Build Key[TEMS.Equipment.Server.AppDomainServerFactory, AppDomainFactory]) failed: Evidence has no strong name key (Strategy type BuildPlanStrategy, index 5)"
  12.        Source="Microsoft.Practices.ObjectBuilder2"
  13.        BuildKey="Build Key[TEMS.Equipment.Server.AppDomainServerFactory, AppDomainFactory]"
  14.        ExecutingStrategyIndex=5
  15.        ExecutingStrategyTypeName="BuildPlanStrategy"
  16.        StackTrace:
  17.             в Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuild erContext  context)
  18.             в Microsoft.Practices.ObjectBuilder2.Builder.BuildUp(IReadWriteLocator locator, ILifetimeContainer lifetime, IPolicyList policies, IStrategyChain strategies, Object buildKey, Object existing)
  19.             в Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name)
  20.        InnerException: System.ArgumentException
  21.             Message="Evidence has no strong name key"
  22.             Source="TEMS.Core"
  23.             StackTrace:
  24.                  в TEMS.Core.Utilities.AppDomainRemoteObjectFactory`1..ctor(String name, String configurationFile, String assemblyName, Evidence evidence)
  25.                  в TEMS.Core.Utilities.AppDomainRemoteObjectFactory`1..ctor(AppDomainInfo rmation  info)
  26.                  в TEMS.Core.Utilities.AppDomainRemoteObjectFactory`1..ctor(KnownAppDomai n  domain)
  27.                  в BuildUp_TEMS.Equipment.Server.AppDomainServerFactory(IBuilderContext )
  28.                  в Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBui lderContext  context)
  29.                  в Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuild erContext  context)
  30.                  в Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuild erContext  context)
  31.             InnerException: 


Падение происходит в этой функции из-за отсутствия строгого имени:

Code:
  1. public AppDomainRemoteObjectFactory(string name, string configurationFile, string assemblyName, Evidence evidence)
  2. {
  3.     this.= string.Empty;
  4.     this.= string.Empty;
  5.     this.= string.Empty;
  6.     this.= name;
  7.     if (string.IsNullOrEmpty(configurationFile))
  8.     {
  9.         System.Configuration.Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) ;
  10.         this.= configuration.FilePath;
  11.     }
  12.     else
  13.     {
  14.         this.= configurationFile;
  15.     }
  16.     if (string.IsNullOrEmpty(assemblyName))
  17.     {
  18.         this.= Assembly.GetExecutingAssembly().FullName;
  19.     }
  20.     else
  21.     {
  22.         this.= assemblyName;
  23.     }
  24.     StrongName name2 = null;
  25.     if (evidence != null)
  26.     {
  27.         this.= evidence;
  28.         name2 = AppDomainRemoteObjectFactory<T>.a(evidence);
  29.     }
  30.     else
  31.     {
  32.         Evidence evidence2 = AppDomain.CurrentDomain.Evidence;
  33.         name2 = AppDomainRemoteObjectFactory<T>.a(evidence2);
  34.         if (name2 == null)
  35.         {
  36.             evidence2 = Assembly.GetExecutingAssembly().Evidence;
  37.             name2 = AppDomainRemoteObjectFactory<T>.a(evidence2);
  38.         }
  39.         this.= new Evidence(evidence2);
  40.     }
  41.     if (name2 == null)
  42.     {
  43.         throw new ArgumentException("Evidence has no strong name key");
  44.     }
  45.     this.a.RemoveType(name2.GetType());
  46.     this.a.AddHost(new StrongName(name2.PublicKey, this.a, name2.Version));
  47. }
  48.  


Code:
  1. private static StrongName a(Evidence A_0)
  2. {
  3.     StrongName current = null;
  4.     IEnumerator hostEnumerator = A_0.GetHostEnumerator();
  5.     while (hostEnumerator.MoveNext())
  6.     {
  7.         current = hostEnumerator.Current as StrongName;
  8.         if (current != null)
  9.         {
  10.             return current;
  11.         }
  12.     }
  13.     return current;
  14. }


Что нужно поправить чтобы не ругалось на отсутствие строгого имени?




Ранг: 500.6 (!), 7thx
Активность: 0.260
Статус: Участник

Создано: 25 февраля 2011 05:10
· Личное сообщение · #14

Tyrus пишет:
 if (name2 == null)    {        throw new ArgumentException("Evidence has no strong name key");    }


эксепшин эдесь.



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 25 февраля 2011 09:05 · Поправил: sendersu
· Личное сообщение · #15

Если убрать (занопить) проверку на null,

if (name2 == null)
{
throw new ArgumentException("Evidence has no strong name key");
}

тогда будет падать дальше, вот здесь

this.a.RemoveType(name2.GetType());
this.a.AddHost(new StrongName(name2.PublicKey, this.a, name2.Version));

Тут, видимо, надо разобраться что делает a.RemoveType() и a.AddHost()
тоесть можно ли их тоже проскочить. Если нельзя - надо сделать какой нибудь свой фейковый name2
(в САЕ или любом другом инструменте что умеет править IL код)



Ранг: 47.8 (посетитель), 16thx
Активность: 0.020.01
Статус: Участник

Создано: 25 февраля 2011 11:49 · Поправил: Tyrus
· Личное сообщение · #16

Убираем эксепшен - упадет дальше, как и сказал sendersu, т.к. в AddHost добавляется политика
безопасности строго имени который тут null, предыдущая команда (RemoveType) убивает в политеке
безопасности существующую привязанность к строгому имени (освобождает ее). В принципе было бы
логично убить экспепшен и убить AddHost, но все равно где-то падает.
Я хочу попробовать в начале функции подменить assemblyName на имя какого-нибудь левого файла, но
имеющего валидное строгое имя, а в конце убрать AddHost, таким образом весь код до конца выполнится
как и было задумано, но в политику безопастности не будет добавлено строгое имя. SAE IL код
действительно нормально редактирует при помощи Mono.Cecil




Ранг: 500.6 (!), 7thx
Активность: 0.260
Статус: Участник

Создано: 26 февраля 2011 09:29
· Личное сообщение · #17

а что мешает подписать сборку своим строгим именем ?



Ранг: 47.8 (посетитель), 16thx
Активность: 0.020.01
Статус: Участник

Создано: 26 февраля 2011 17:07 · Поправил: Tyrus
· Личное сообщение · #18

NIKOLA
Мешает то, что у меня файлов там 400 сотни и все они между собой связаны референсами со строгим именем + через InternalsVisibleToAttribute с паблик ключом строгого имени. И прежде чем наложить на них свой стронг нэйм я должен буду еще и пропатчить все связки. Вот этот Evidence не могу пока победить. Вроде понял как правильно пройти эту функцию для моих файлов - использовал Evidence.Clear(), но вот теперь надо вводить условие, т.к. через нее еще проходят и системные файлы и соответственно Clear() убивает и их зависимости и дальше все падает.
Кстати Dile примостился аттачить - хоть этим можно дебажить, но такой неудобный..

Вот инфа про Evidence:
msdn.microsoft.com/ru-ru/library/system.security.policy.evidence.aspx



Ранг: 47.8 (посетитель), 16thx
Активность: 0.020.01
Статус: Участник

Создано: 26 февраля 2011 23:17
· Личное сообщение · #19

Победил таки. Все оказалось элементарно.
if (evidence != null)
{
this.a = evidence;
name2 = AppDomainRemoteObjectFactory<T>.a(evidence);
}
else
{
goto ret;
}
т.е. если идет сборка с Evidence и строгим именем - все идет по оригинальному коду
а если с null, то вообще не лезем в назначения свойств политик безопастности, а просто выходим
и загрузка пошла!



Ранг: 47.8 (посетитель), 16thx
Активность: 0.020.01
Статус: Участник

Создано: 27 февраля 2011 21:44 · Поправил: Tyrus
· Личное сообщение · #20

Code:
  1. private void InitializeComponent()
  2. {
  3.     base.SuspendLayout();
  4.     base.AutoScaleDimensions = new SizeF(6f, 13f);
  5.     base.AutoScaleMode = AutoScaleMode.Font;
  6.     this.BackColor = Color.White;
  7.     base.ClientSize = new Size(0x250, 0x16e);
  8.     this.DoubleBuffered = true;
  9.     this.MinimumSize = new Size(0x93, 0x2f);
  10.     base.Name = 349452901.349452936.93650356("&#53332;&#45945;&#8454;&#43639;&#22233;&#44263;\ud85c\uf220&#7549;&#19320;&#2645;&#13316;&#48031;&#60632;&#37403;&#44850;");
  11.     this.Text = 349452901.349452936.93650356("&#64825;&#41124;&#32000;&#21586;&#22928;&#10705;&#57890;&#36549;&#38562;&#48167;&#32437;&#33233;&#52299;&#8753;&#50445;&#3764;&#5679;&#30271;&#60849;&#53116;&#26210;&#54396;&#10902;&#6045;");
  12.     base.ResumeLayout(false);
  13. }


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

Пока вижу только такой способ:
1. Изучить как работает метод 349452901.349452936.93650356 по восстановлению строк
2. Пройтись им по шифрованным строкам в блобе "US"
3. Занопить вызовы 349452901.349452936.93650356



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 27 февраля 2011 23:34
· Личное сообщение · #21

Tyrus пишет:
Может есть где-то сорцы какого-нибудь деобфускатора, который может восстанавливать строки?

САЕ идет с плагином 9Ray - если помедитировать чуток то можно под себя сделать для етого случая
там правда есть нюанс - как правило етот декодер строк проверяет как его метод запустили.....
если ето пропатчить - все должно заработать



Ранг: 47.8 (посетитель), 16thx
Активность: 0.020.01
Статус: Участник

Создано: 27 февраля 2011 23:57
· Личное сообщение · #22

sendersu
Спасибо.
А тут похоже лежать сорцы этого плагина:
code.google.com/p/simple-assembly-explorer/source/browse/trunk/SAE.Deobf9RayHelper/?r=412




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 28 февраля 2011 22:33
· Личное сообщение · #23

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

-----
zzz




Ранг: 2.6 (гость)
Активность: 0.010
Статус: Участник

Создано: 28 февраля 2011 23:29 · Поправил: verissimo
· Личное сообщение · #24

У кого-нибудь есть опыт взлома программ, защищенных MaxToCode -ом?




Ранг: 88.2 (постоянный), 111thx
Активность: 0.070.01
Статус: Участник

Создано: 01 марта 2011 00:34
· Личное сообщение · #25

verissimo, а что за прога им защищена? Не ЗенноПостер случаем



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 01 марта 2011 09:44
· Личное сообщение · #26

zeppe1in пишет:
тебе нужно только определить нужный метод

ет точно, только определение ето кхммм чуть наугад. В код можно напихать 1000 и одну функу с такой сигнатурой
Для 100% лучше найти самому у указать плагину как токенID например.




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 01 марта 2011 13:32
· Личное сообщение · #27

sendersu
А можно и на каждую строку сделать свой метод).
один пакостный обфускатор, не помню какой. наделал целую кучу методов для декодирования стрингов, код вроде один и тот же, а методов много) в ручную каждый указывать не вариант и я именно по сигнатуре искал. точнее я смотрел чтобы метод подходил по входным и выходным параметрам, а потом искал в нём вызов ГетПабликКей.

-----
zzz




Ранг: 47.8 (посетитель), 16thx
Активность: 0.020.01
Статус: Участник

Создано: 01 марта 2011 17:27
· Личное сообщение · #28

Подскажите .Net пакер, который может жать Mixed .Net Dll-ки
Именно жать, а не обфусцировать и защищать.



Ранг: 81.0 (постоянный), 88thx
Активность: 0.070.02
Статус: Участник

Создано: 01 марта 2011 17:41 · Поправил: uncleua
· Личное сообщение · #29

Можешь попробовать mpress. Токо на него ругаются антивирусы...
Можно енигмой, но там еще вопрос - упакуется оно или раздуется... )

Пардон-с - mpress дллки не жмет...

madebits.com/netz/index.php



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 04 марта 2011 09:04
· Личное сообщение · #30

DotNet Dumper 1.0

-will show only .NET processes under list,
-all dumps will be saved under dumps
- now can fix raw size/address (Themida targets)
- now will fix AddressofEntryPoint
- now dumps more assemblies
- Dump native - dump native not only .NET
- Smart Dump - dump sections page by page
- Now you can dump a specific module
- Bugs fixed
- Rename of dumped files improved!

new:
- ability suspend/resume/kill processes
- view Environment Variables,
- abilty to Inject / Free a dll (under Selected process->Module)
this one needs some bug check - don't know if is working on Vista / Windows 7


--> DOWNLOad<--



Ранг: 81.0 (постоянный), 88thx
Активность: 0.070.02
Статус: Участник

Создано: 04 марта 2011 09:44 · Поправил: uncleua
· Личное сообщение · #31

Тогда вот еще в коллекцию...

****************************

dotNET Tracer -

This is the final version, it was supposed to stay private but I

decided to release it for the advantage of the RCE community.

this tool works best in Windows 7 but also works with XP-SP2

follow this topic if you face any problem on Windows 7

board.b-at-s.info/showtopic=6921

Download from here :

www.4shared.com/file/tSj6cvgj/KDT.html

****************************

ILSpy -

ILSpy is the open-source .NET assembly browser and decompiler.

Development started after Red Gate announced that the free version of .NET Reflector would cease to exist by end of February 2011.

ILSpy Features:
•Assembly browsing
•IL Disassembly
•Decompilation to C#
•Saving of resources
•Search for types/methods/properties (substring)
•Hyperlink-based type/method/property navigation
•Base/Derived types navigation
•Navigation history
•BAML to XAML decompiler
•Save Assembly as C# Project

wiki.sharpdevelop.net/ilspy.ashx


<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 49 . 50 . >>
 eXeL@B —› Основной форум —› Взлом dotNET программ
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати