.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
文件发来瞅瞅呗 和rewasd是同一家公司,之前搞过,没混淆但一打补丁就没效果了,应是我差火候 秋名山 发表于 2024-10-3 14:26
文件发来瞅瞅呗
https://www.daemon-tools.cc/products/dtultra 混淆加壳了的 温柔 发表于 2024-10-3 23:59
混淆加壳了的
请问哪里判断出了加壳?所有方法都能正常反编译,只有我修改的代码有问题 难道我们的版本不一样? 温柔 发表于 2024-10-5 02:33
难道我们的版本不一样?
真不知道,我就官网下的 这跟加壳没有关系,这是Com组件,跟pinvoke调用类似,不是.NET开发的,看不到代码
页:
[1]