я так и не внял
есть результат? или нету?
есть результат? или нету?
Ничего опасного нет от слова совсем, пользуюсь давненькоЯ тебе про Ивана А ты мне про Ивана дурака? Я не говорю что я не проверила его там!
Вот я проверила сегодня https://www.virustotal.com/gui/file...8f13a0d3c1d7982fcd6189d14706bdc2275/detection
Я еще и тут проверила. https://www.hybrid-analysis.com/sam...1c3facc2ce8f13a0d3c1d7982fcd6189d14706bdc2275
Ладно можешь еще минус поставитьАй какая я плохая взяла и слила на вт 6 часов назад. а то что до меня его на вт проверили всем походу пофиг ? + вам пофиг что он светится как новогодняя елка. Пользуйтесь на здоровье ?
И вот до меня https://www.virustotal.com/gui/file...ea8cb25224cbf1a538e4516dd19082f9bfd/detection
Если хорошо поискать еще как минимум три ссылки найдешь!
using System;
using dnlib.DotNet.Emit;
using dnlib.DotNet;
using dnlib.DotNet.Writer;
using System.Reflection;
namespace ProxyStrings
{
class cMain
{
static void Main(string[] args)
{
ModuleDefMD mdModule = ModuleDefMD.Load(args[0]);
foreach (TypeDef tdType in mdModule.Types)
{
foreach (MethodDef mdMethod in tdType.Methods)
{
if (mdMethod.HasBody && mdMethod.Body.HasInstructions)
{
for (int i = 0; i < mdMethod.Body.Instructions.Count; i++)
{
if(mdMethod.Body.Instructions[i].OpCode == OpCodes.Call && mdMethod.Body.Instructions[i + 1].OpCode == OpCodes.Stsfld)
{
try
{
MethodDef mdProxyMeth = (MethodDef)mdMethod.Body.Instructions[i].Operand;
if (mdProxyMeth.Body.Instructions[0].OpCode == OpCodes.Ldstr)
{
Console.WriteLine("Found proxy string --> " + mdProxyMeth.FullName);
mdMethod.Body.Instructions[i].OpCode = OpCodes.Ldstr;
mdMethod.Body.Instructions[i].Operand = mdProxyMeth.Body.Instructions[0].Operand;
}
}
catch { }
}
}
}
}
}
ModuleWriterOptions mwoOptions = new ModuleWriterOptions(mdModule);
mwoOptions.Logger = DummyLogger.NoThrowInstance;
mdModule.Write(args[0].Replace(".exe", "_deob.exe"), mwoOptions);
Console.WriteLine("Saved!");
}
}
}
О, благодарю, а то выше вообще одни обвинения только.Сегодня решил глянуть на данный обфускатор, раньше руки не доходили.В любом случае, лучше поздно, чем никогда)) Как обфускатору я бы ему поставил 4/10.Виртуализация в этом протекторе вообще ломает софт, должного control flow нету, есть только что-то похожее на него(скопипащено с гитхаба), строки расшифровываются статически.Единственное, что понравилось - HiddenMethods.
В архив положил оригинальный файл, запротекченный файл, анпакнутый файл и тулзу для декрипта строк...
Как анпакнуть:
1.Удаляем HiddenMethods (https://github.com/CursedSheep/Atomic-Deobfuscator)
2.Чистим Math.* и int cflow (https://github.com/MindSystemm/SuperCalculator)
3.Декриптим строки (моя тулза)
4.Удалим Junks и anti-de4dot (JunksRemover by OFF_LINE или аналоги, можно найти на гите)
5.Ренейминг через de4dot
6.Удаление некоторых прокси через Proxy call fixer 1.2 by TheProxy (можно найти на tuts4you)
7.Удаление строковых прокси
8.Опять чистим Math как в шаге 2C#:using System; using dnlib.DotNet.Emit; using dnlib.DotNet; using dnlib.DotNet.Writer; using System.Reflection; namespace ProxyStrings { class cMain { static void Main(string[] args) { ModuleDefMD mdModule = ModuleDefMD.Load(args[0]); foreach (TypeDef tdType in mdModule.Types) { foreach (MethodDef mdMethod in tdType.Methods) { if (mdMethod.HasBody && mdMethod.Body.HasInstructions) { for (int i = 0; i < mdMethod.Body.Instructions.Count; i++) { if(mdMethod.Body.Instructions[i].OpCode == OpCodes.Call && mdMethod.Body.Instructions[i + 1].OpCode == OpCodes.Stsfld) { try { MethodDef mdProxyMeth = (MethodDef)mdMethod.Body.Instructions[i].Operand; if (mdProxyMeth.Body.Instructions[0].OpCode == OpCodes.Ldstr) { Console.WriteLine("Found proxy string --> " + mdProxyMeth.FullName); mdMethod.Body.Instructions[i].OpCode = OpCodes.Ldstr; mdMethod.Body.Instructions[i].Operand = mdProxyMeth.Body.Instructions[0].Operand; } } catch { } } } } } } ModuleWriterOptions mwoOptions = new ModuleWriterOptions(mdModule); mwoOptions.Logger = DummyLogger.NoThrowInstance; mdModule.Write(args[0].Replace(".exe", "_deob.exe"), mwoOptions); Console.WriteLine("Saved!"); } } }
Осталось убрать Local2Fields, это можно сделать через ILReplacer....