XXTK 发表于 2019-9-7 16:29

NET 测试估计dnSpy遇到检测

感觉正版没有检测可以动态调试,测试版却尴尬了{:301_971:}有兴趣的朋友可以玩玩,方便的话谈谈看法
链接: https://pan.baidu.com/s/19SWgIcTGHAbl_hfSHaPjIA 提取码: hyqd

XXTK 发表于 2019-9-9 10:16

UserXCH 发表于 2019-9-8 13:37

在wwh1004的`JitUnpackerFramework`上稍作修改应该就可以了。
一个地方就是加载程序集的时候要创 ...

估计是卡在这点了,折腾两天,技术无法超越{:301_981:}24                 public void Execute(JitUnpackerSettings settings) {
25                         Module module;
26                         void* moduleHandle;
27                         ModuleDefMD moduleDef;
28                         void*[] methodHandles;
29

30                         PrepareAllMethods();
31                         // 防止陷入编译死循环
32                         module = Assembly.LoadFile(settings.AssemblyPath).ManifestModule;
33                         if (RuntimeEnvironment.IsClr4x)
34                                 moduleHandle = (void*)(IntPtr)module.GetType().GetField("m_pData", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(module);
35                         else
36                                 moduleHandle = (void*)(IntPtr)typeof(ModuleHandle).GetField("m_ptr", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(module.ModuleHandle);
37                         moduleDef = ModuleDefMD.Load(settings.AssemblyPath);
38                         methodHandles = LoadMethodHandles(module, moduleDef);
39                         _unpacker = LoadedUnpackerDetectors.Detect(moduleDef).CreateUnpacker(new UnpackerContext(module, moduleDef, moduleHandle, methodHandles, settings));
40                         Logger.Instance.LogInfo($"Detected {_unpacker.Name} Obfuscator ({Path.GetFullPath(settings.AssemblyPath)})");
41                         Console.CursorVisible = false;
42                         ExecuteImpl();
43                         Console.CursorVisible = true;
44                         SaveAs(PathInsertPostfix(settings.AssemblyPath, ".jupk"));
45                         _unpacker.Context.ModuleDef.Dispose();
46                         _unpacker.Context.DumpedModuleDef.Dispose();
47                         Logger.Instance.LogInfo("Finished");
48                         Logger.Instance.LogNewLine();
49                 }

XXTK 发表于 2019-9-14 20:03

本帖最后由 XXTK 于 2019-9-15 07:46 编辑

UserXCH 发表于 2019-9-13 22:14
`Assembly.LoadFile`处是会出问题的。这样应该会提示:Cannot find managed image.
这个问题2.0的能脱,4.5就那样了无解,我有个程序双层壳的MaxToCode      Dotfuscator,卡在这里跟你请教有没有办法
未处理的异常:System.Reflection.TargetInvocationException: 调用的目标发生了异常
。 ---> System.Reflection.TargetException: 对象与目标类型不匹配。
   在 System.Reflection.RuntimeConstructorInfo.CheckConsistency(Object target)
   在 System.Reflection.RuntimeConstructorInfo.Invoke(Object obj, BindingFlags i
nvokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   在 System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   在 JitTools.JitUnpacker.ExecuteImpl() 位置 F:\Users\126\Deskt
op\JitUnpacker-Framework-master\JitUnpacker\JitUnpacker.cs:行号 74
   在 JitTools.JitUnpacker.Execute(JitUnpackerSettings settings) 位置 F:\Users\126\Desktop\JitUnpacker-Framework-master\JitUnpacker\JitUnpacker.
cs:行号 42
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] argum
ents, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle
typeOwner)
   在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] argume
nts, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwn
er)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invoke
Attr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisib
ilityChecks)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invoke
Attr, Binder binder, Object[] parameters, CultureInfo culture)
   在 System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   在 Tool.Loader.Loader.Execute(String[] args)
   在 Tool.Loader.CLR20.x86.Program.Main(String[] args)

XXTK 发表于 2019-9-8 13:09

@UserXCH跟你请教一是怎么回事,加密后win7可以运行,dnSpy调试却不行

XXTK 发表于 2019-9-8 13:33

UserXCH 发表于 2019-9-8 13:14

首先我可以肯定的是:用dnSpy看不到代码。(你确定要调试?)



的确附加是可以的,(昨天试了一下)就搞不清楚怎么在dnSpy不能运行,本来想断点试一试,感觉机会也渺茫,请教一下可以从哪里入手

XXTK 发表于 2019-9-14 20:08

UserXCH 发表于 2019-9-13 22:14
`Assembly.LoadFile`处是会出问题的。这样应该会提示:Cannot find managed image.

把MDToken的一个值换成Method,再把Invoke(null, null)删掉可以跑起来,但没有效果

XXTK 发表于 2019-9-15 09:30

UserXCH 发表于 2019-9-14 21:59
额😓,你这是什么操作……
那个Invoke,是调用`.cctor()`的,不加载运行时怎么行。
说实话 ...

可以改变Token,当然真正问题出在哪里的确不清楚

XXTK 发表于 2019-9-15 12:43

UserXCH 发表于 2019-9-15 10:41
你为什么要改😣。ResolveMethod这个Token是模块静态构造函数的Token。
能说说你的理解吗?我 ...

我把它理解成了de4dot里MaxtoCode里面的MagicLo = 0x9A683B87 MagicHi = 0x928ECDA3 MagicLo = 0x1A731B13 MagicHi = 0x1723891F
今天分析证明dnlib.dll里MDToken不止一个可以自动切换,发个给你,有时间看看,测试版的没有多大意义,研究一下壳双层壳的MaxToCode      Dotfuscator链接: https://pan.baidu.com/s/11uxr49sHoEGxPs2Qa4oAtw 提取码: mzvx

XXTK 发表于 2019-9-15 15:38

本帖最后由 XXTK 于 2019-9-15 16:32 编辑

UserXCH 发表于 2019-9-15 14:40
怕……不是这样的。以我拙劣的想象力,从来不会想到一起去,你是怎么把它混到一起的。
发给我对你没 ...

重新回答:lol
真是把老师给绕到了,{:1_921:}非常感谢你的细致回答,其实搞了几天基本明白“dnSpy在方法、类、字段等等上面的类似RID=XX Token=0x0XXXXXXX这种”
直接问一下这两处出问题是什么原因造成,
JitUnpacker的Framework版本:3.5
加密样本的Framework版本:2.0
Execute函数的代码:原版未改
提示的错误信息:信息如下

位置 F:\Users\126\Deskt
op\JitUnpacker-Framework-master\JitUnpacker\JitUnpacker.cs:行号 74
位置 F:\Users\126\Desktop\JitUnpacker-Framework-master\JitUnpacker\JitUnpacker.
cs:行号 42

XXTK 发表于 2019-9-22 10:46

UserXCH 发表于 2019-9-22 00:33
其实问题很早已经回答过了。无法加载静态构造函数。原因是MaxtoCode需要新进程。

尴尬,冒昧的问一下,是不是MaxtoCode的运行库的进程:lol
页: [1] 2
查看完整版本: NET 测试估计dnSpy遇到检测