PercyDan 发表于 2024-10-2 19:41

.NET破解求助

最近需要用到DAEMON Tools Ultra,找不到破解。发现主程序是.NET后且无混淆就想试试自己破解(我是小白,啥壳都不会)

但是很快发现主要验证逻辑都在engine.dll中



这种调用方式没见过,而且我也不大懂汇编。于是我想着搜索这个方法的所有调用修改返回值
但是有部分代码保存时报Error calculating max stack value
我看了好久没明白哪里有问题,ILSpy和dnSpy都能反编译这段IL,但是就是保存报错,使用KeepOldMaxStack保存运行闪退
现在求助哪里有问题,或者对engine.dll破解给点思路或教程

以下是一段问题IL:
.method public hidebysig specialname rtspecialname
      instance void .ctor () cil managed
{
      .maxstack 3
      .locals init (
                valuetype EngineLib.TCheckingResultInfo,
                class DotNetCommon.License.LicenseInfo
      )

      IL_0000: ldarg.0
      IL_0001: call      instance void DiscSoft.NET.Common.View.SecondaryWindows.Base.BaseSecondaryWindow::.ctor()
      IL_0006: ldarg.0
      IL_0007: call      class System.Windows.Application System.Windows.Application::get_Current()
      IL_000C: callvirtinstance class System.Windows.Window System.Windows.Application::get_MainWindow()
      IL_0011: call      instance void System.Windows.Window::set_Owner(class System.Windows.Window)
      IL_0016: ldarg.0
      IL_0017: call      instance void DotNetCommon.View.SecondaryWindows.AboutWindow::InitializeComponent()
      IL_001C: call      class EngineLib.IDaemonProEngine DotNetCommon.Utils.EngineHelper::get_DaemonEngine()
      IL_0021: ldc.i4.2
      IL_0022: ldloca.sV_0
      IL_0024: callvirtinstance void EngineLib.IDaemonProEngine::CheckActivation(valuetype EngineLib.TCheckType, valuetype EngineLib.TCheckingResultInfo&)
      IL_0029: ldloca.sV_0
      IL_002B: ldc.i4.1
      IL_002C: stfld   int32 EngineLib.TCheckingResultInfo::IsSuccessResult
      IL_0031: ldloca.sV_0
      IL_0033: ldc.i4.0
      IL_0034: stfld   valuetype EngineLib.TLicenseCheckingResult EngineLib.TCheckingResultInfo::Result
      IL_0039: ldloca.sV_0
      IL_003B: ldc.i4.3
      IL_003C: stfld   valuetype EngineLib.TLicenseType EngineLib.TCheckingResultInfo::LicenseType
      IL_0041: ldloca.sV_0
      IL_0043: ldc.i4.1
      IL_0044: stfld   valuetype EngineLib.TSubscriptionType EngineLib.TCheckingResultInfo::Subscription
      IL_0049: ldloca.sV_0
      IL_004B: ldc.i4    2147483647
      IL_0050: stfld   int32 EngineLib.TCheckingResultInfo::TrialDaysLeft
      IL_0055: ldloca.sV_0
      IL_0057: ldc.i4.1
      IL_0058: stfld   int32 EngineLib.TCheckingResultInfo::IsInstanceActivated
      IL_005D: ldloca.sV_0
      IL_005F: ldc.i4.1
      IL_0060: stfld   int32 EngineLib.TCheckingResultInfo::IsEmailConfirmed
      IL_0065: newobj    instance void DotNetCommon.License.LicenseInfo::.ctor()
      IL_006A: stloc.1
      IL_006B: ldloc.1
      IL_006C: ldloc.0
      IL_006D: callvirtinstance void DotNetCommon.License.LicenseInfo::GetLicenseInfo(valuetype EngineLib.TCheckingResultInfo)
      IL_0072: ldarg.0
      IL_0073: ldloc.1
      IL_0074: newobj    instance void DotNetCommon.License.LicensePage::.ctor(class DotNetCommon.License.LicenseInfo)
      IL_0079: call      instance void System.Windows.FrameworkElement::set_DataContext(object)
      IL_007E: ret

秋名山 发表于 2024-10-3 14:26

文件发来瞅瞅呗

JonesDean 发表于 2024-10-3 15:55

和rewasd是同一家公司,之前搞过,没混淆但一打补丁就没效果了,应是我差火候

PercyDan 发表于 2024-10-3 18:16

秋名山 发表于 2024-10-3 14:26
文件发来瞅瞅呗

https://www.daemon-tools.cc/products/dtultra

温柔 发表于 2024-10-3 23:59

混淆加壳了的

PercyDan 发表于 2024-10-4 10:14

温柔 发表于 2024-10-3 23:59
混淆加壳了的

请问哪里判断出了加壳?所有方法都能正常反编译,只有我修改的代码有问题

温柔 发表于 2024-10-5 02:33

难道我们的版本不一样?

PercyDan 发表于 2024-10-5 09:12

温柔 发表于 2024-10-5 02:33
难道我们的版本不一样?

真不知道,我就官网下的

SoftCracker 发表于 2024-10-5 23:13

这跟加壳没有关系,这是Com组件,跟pinvoke调用类似,不是.NET开发的,看不到代码
页: [1]
查看完整版本: .NET破解求助