Post here any topics that related to Enigma Protector, its functionality, your misunderstanding, offers to improvements etc etc etc
-
sanyock
- Posts: 58
- Joined: Sat May 12, 2012 7:36 am
-
Contact:
Post
by sanyock » Tue Apr 09, 2019 3:23 pm
Enigma wrote: ↑Tue Apr 09, 2019 9:23 am
sanyock wrote: ↑Sun Apr 07, 2019 5:47 am
А что с поддержкой DotNet Core v2/v3 на X86, хотя бы только под Windows?
В плане протектора? А какие проблемы, вроде бы без проблем можно защищать...
А DotNet Core приложение, скомпилированные в Native тоже можно защищать Энигмой?
Можно ли каким-то образом помечать участки кода для Энигмы аналогично Delphi?
Enigma wrote: ↑Tue Apr 09, 2019 9:23 am
Клиенты сообщают, что хорошие результаты дает использование ConfuserEx для защиты, и затем Enigma Protector.
Так ConfuserEx вроде не развивается больше? Может быть, он перекочевал в какой-то коммерческий проект.
-
dlr5668
- Posts: 11
- Joined: Tue Apr 30, 2019 6:44 pm
Post
by dlr5668 » Wed May 01, 2019 10:55 pm
sanyock wrote: ↑Tue Apr 09, 2019 3:23 pm
Так ConfuserEx вроде не развивается больше? Может быть, он перекочевал в какой-то коммерческий проект.
Два форка с небольшими изменениями
https://github.com/yck1509/ConfuserEx/issues/671 Надеется на него не стоит, но применять можно. Я лично разделил проект на 2 части - небольшую часть логики (10%) в отдельное приложение. Его компилю в native через core rt и защищаю. Обмен данными через named pipes. Основную часть накрыл конфузером.
Сore rt еще в альфе, иногда валится с простых конструкций вроде
Code: Select all
using var ms = new MemoryStream();
img.Save(ms, ImageFormat.Bmp);
var array = ms.ToArray();
-
ilya01
- Posts: 114
- Joined: Tue Oct 07, 2014 2:31 am
Post
by ilya01 » Thu May 02, 2019 7:41 am
dlr5668 wrote: ↑Wed May 01, 2019 10:55 pm
Его компилю в native через core rt и защищаю. Обмен данными через named pipes.
Здравствуйте!
Можете отправить пример файла скомпилированного в натив?
-
ilya01
- Posts: 114
- Joined: Tue Oct 07, 2014 2:31 am
Post
by ilya01 » Thu May 02, 2019 5:24 pm
Да, в явном виде ничего нет. Я сомневался, потому что увидел вот это:

-
dlr5668
- Posts: 11
- Joined: Tue Apr 30, 2019 6:44 pm
Post
by dlr5668 » Fri May 03, 2019 3:44 pm
Если добавить в csproj
Code: Select all
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<IlcGenerateCompleteTypeMetadata>true</IlcGenerateCompleteTypeMetadata>
<RootAllApplicationAssemblies>true</RootAllApplicationAssemblies>
<IlcOptimizationPreference>Speed</IlcOptimizationPreference>
</PropertyGroup>
Первые две опции и так активны по умолчанию но лучше подстрахаваться (
https://github.com/dotnet/corert/blob/m ... -corert.md)
Получается вот так:

Исходник:
Code: Select all
private bool DeadLockCheck(out ICollection<IBotTask> tasks)
{
tasks = new List<IBotTask>();
var extra = Services.Container.GetInstance<IExtra>();
var hand = Services.Container.GetInstance<IHand>();
var handCount = hand.Count();
if (handCount == 0)
return false;
if (handCount == LastHandSize &&
extra.IsOurTurn == true)
{
SameHandSizeTimes++;
}
else
{
LastHandSize = handCount;
SameHandSizeTimes = 0;
}
if (SameHandSizeTimes >= MaxSameHandSize)
{
tasks.Add(new TooltipTask("[DEADLOCK] Lets try to press some keys"));
tasks.Add(new KeyboardTask(Messaging.VKeys.Left));
tasks.Add(new KeyboardTask(Messaging.VKeys.Enter));
return true;
}
return false;
}
Еще можно поэксперементировать с IlcFoldIdenticalMethodBodies и IlcGenerateStackTraceData
-
Enigma
- Site Admin
- Posts: 2526
- Joined: Wed Aug 20, 2008 2:24 pm
Post
by Enigma » Mon May 06, 2019 7:46 am
dlr5668 wrote: ↑Fri May 03, 2019 3:44 pm
Получается вот так:
Можете добавить на форум бинарники, посмотреть?
Само наличие названия функции где то в hex ни о чем не говорит.
-
Enigma
- Site Admin
- Posts: 2526
- Joined: Wed Aug 20, 2008 2:24 pm
Post
by Enigma » Mon May 06, 2019 2:10 pm
dlr5668 wrote: ↑Mon May 06, 2019 11:19 am
Я так понял название классов остается для совместимости с рефлексией и сериализации
Лишь бы они managed код не оставляли, для какой нибудь тоже совместимости)
-
Enigma
- Site Admin
- Posts: 2526
- Joined: Wed Aug 20, 2008 2:24 pm
Post
by Enigma » Mon May 06, 2019 2:18 pm
Да, подтверждаю, файл скомпилирован в нейтив, очень интересно. Явно managed кода в файле не прописано.
Хотя это не значит, что его там нет. Смущает название первой секции как "managed", вполне возможно там лежит managed код, который запускается вручную при старте программы (а значит его можно достать).
Можете в этот файл добавить пару вызовов Enigma API - EP_Marker с параметрами:
EP_Marker("vm_begin") и EP_Marker("vm_end")?
Интересно проверить, будут ли в такой конструкции работать маркеры виртуализации кода.