beijer ix developer 2.40 sp7 授权

ix developer 2.40 sp7

使用 dnspy

修改2个dll 内的LicenseFound方法

 Tools.dll

// Neo.ApplicationFramework.Tools.License.LicenseService

// Token: 0x060002B8 RID: 696 RVA: 0x00011A94 File Offset: 0x0000FC94

protected override bool LicenseFound()

{

return true;

}

 

ToolsCF.dll

// Neo.ApplicationFramework.Tools.License.LicenseServiceBase

// Token: 0x06001E27 RID: 7719 RVA: 0x00085F8C File Offset: 0x0008418C

protected virtual bool LicenseFound()

{

return true;

}

 

 到此, pc上面发布组态应该可以用了.

 sp6,同上

 

 sp4,差不多如下

 

CommonCF.dll

  

Neo.ApplicationFramework.Tools.License.LicenseServiceCF

 

protected virtual int ConnectedDataItemsLimit()

{

return 1220927819;

}

protected virtual int UnconnectedDataItemsLimit()

{

return 748856307;

}

 

protected virtual void Run(bool showStartupMessage)

{

}

 

protected virtual bool LicenseFound()

{

return true;

}

 

也可以使用内存钩子,动态拦截相关方法.自己写个dll ,如:ToolVip.Ix24LocalVip,在程序启动时候调用1次即可.

dll 使用了DotNetDetour 相关技术

using System.Reflection;

 

namespace ToolVip

{

/// <summary>

/// iX Developer 2.40 SP4 vip

/// 菜单--项目--引用的程序集--添加此控件

/// 主画面启动时候,脚本里面,调用:

/// ToolVip.Ix24LocalVip.Vip();

/// </summary>

public class Ix24LocalVip

{

public static bool Vip()

{

var mem = new MemVip();

var arg = new VipArg()

{

DllName = "ToolsCF",

ClassName = "Neo.ApplicationFramework.Tools.License.LicenseServiceCF",

MethondName = "LicenseFound",

BindingFlags1 = BindingFlags.Instance | BindingFlags.NonPublic,

};

 

var method2 =

typeof(Ix24LocalVip).GetMethod("LicenseFound", BindingFlags.Instance | BindingFlags.NonPublic);

 

var r = mem.Init(arg, method2);

return r;

}

 

 

protected virtual bool LicenseFound()

{

return true;

}

}

}

 

 

// C:\Program Files (x86)\Beijer Electronics AB\iX Developer 2.40 SP5\Bin\CommonCF.dll

// CommonCF, Version=2.45.167.0, Culture=neutral, PublicKeyToken=null

// Global type: <Module>

// Architecture: AnyCPU (64-bit preferred)

// Runtime: v2.0.50727

// Hash algorithm: SHA1

 

 

// Neo.ApplicationFramework.Interfaces.License.ILicenseService

 

using System.ComponentModel;

 

public interface ILicenseService

{

[EditorBrowsable(EditorBrowsableState.Always)]

bool ShowLicenseMessage { get; set; }

 

void Run(bool showStartupMessage);

 

int GetConnectedDataItemsLimit();

 

int GetUnconnectedDataItemsLimit();

 

bool LicenseFound();

}



posted @ 2022-07-11 09:47  重构灵魂  阅读(406)  评论(0)    收藏  举报