Post here any topics that related to Enigma Protector, its functionality, your misunderstanding, offers to improvements etc etc etc
Ilya
Posts: 82 Joined: Tue Oct 07, 2014 2:31 am
Post
by Ilya » 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: 3085 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: 3085 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: 3085 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")?
Интересно проверить, будут ли в такой конструкции работать маркеры виртуализации кода.
dlr5668
Posts: 11 Joined: Tue Apr 30, 2019 6:44 pm
Post
by dlr5668 » Mon May 06, 2019 2:41 pm
Попробуем спросить у разрабов
https://github.com/dotnet/corert/issues/7401
По поводу маркеров. Их как то вот так оформить в нет коде ?
Code: Select all
byte[] vm_start = new byte[] {
0xEB, 0x08, 0x56, 0x4D, 0x42, 0x45, 0x47, 0x49, 0x4E, 0x00
};
Enigma
Site Admin
Posts: 3085 Joined: Wed Aug 20, 2008 2:24 pm
Post
by Enigma » Mon May 06, 2019 2:45 pm
dlr5668 wrote: ↑ Mon May 06, 2019 2:41 pm
По поводу маркеров. Их как то вот так оформить в нет коде ?
Нет, такое оформление маркеров только для 32 битных программ.
У Вас программа 64 бита, для этого подключите модуль Enigma_IDE.cs к проекту, и из него вызовите EP_Marker.
dlr5668
Posts: 11 Joined: Tue Apr 30, 2019 6:44 pm
Post
by dlr5668 » Mon May 06, 2019 3:27 pm
Открыл The Enigma Protector\Examples\ProtectedStrings\C# (.NET)\Enigma_IDE.cs и там такой функции нет. Это, наверное, потому что я пока только присматриваюсь к продукту и у меня демка
Я попробую потом с простым x86 проектом.
Кстати разраб ответил, можем быть спокойны
https://github.com/dotnet/corert/issues ... -489658520