├── Logging
├── app.config
├── Logging.csproj
└── Program.cs
├── BDSBaseLib
├── C#插件开发指南.txt
├── MyClass.cs
├── BDS
│ ├── Plugin.cs
│ ├── Component.cs
│ └── MCCSAPI.cs
├── ConfigReader.cs
└── BDSBaseLib.csproj
├── README.md
├── NoAutoCompactionTip
├── BDS
│ ├── Plugin.cs
│ └── MCCSAPI.cs
├── NoAutoCompactionTip.cs
└── NoAutoCompactionTip.csproj
├── AntiWsCmd
├── BDS
│ ├── Plugin.cs
│ └── MCCSAPI.cs
├── AntiWsCmd.cs
└── AntiWsCmd.csproj
├── HideSeed
├── Hook.cs
├── Program5.cs
└── HideSeed.csproj
├── AlwaysNoCheat
├── Program2.cs
├── Hook.cs
└── AlwaysNoCheat.csproj
├── Vbtest
├── NewClass.vb
└── Vbtest.vbproj
├── Visitor
├── Visitor.csproj
└── Program4.cs
├── Testcase
├── Testcase.csproj
├── SimpleGUI.cs
└── Program3.cs
├── CSRMods.sln
└── LICENSE
/Logging/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/BDSBaseLib/C#插件开发指南.txt:
--------------------------------------------------------------------------------
1 | 本插件开发采用启动器加载framework并调用指定入口方法启动。基本运作机制同JSRunner。
2 |
3 | 1. 创建.net framework类库工程;
4 | 2. 复制模板工程中的BDS文件夹至工程目录;
5 | 3. 在自己的主类里实现 CSR.Plugin.onStart 方法;
6 | 4. 修改工程生成的dll文件后缀名为.csr.dll,放置插件到BDS服务端下的CSR文件夹下即可被插件平台加载运行。
7 |
8 | 自由发挥创意吧!
9 |
10 | 构建注意:建议设置目标框架版本 4 以上,生成目标平台强制为 x64(AMD/Intel 64位处理器)。
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CSRMods
2 | 构建基于BDSNetRunner的插件示例
3 |
4 | 注:由于github官方策略限制,本项目源码将迁移至
5 |
6 | https://mzgl.coding.net/public/csrmods/CSRMods/git/files
7 |
8 | ### BDSBaseLib
9 |
10 | 提供公共方法的CSR通用的BDS API接口,动态更新时只需更新此处
11 |
12 | #### Logging
13 |
14 | 基本监控信息输出,可通过配置文件修改路径或选择是否保存LOG
15 |
16 | #### AlwaysNoCheat
17 |
18 | 解锁所有指令为非作弊模式,hook方式调用,需随版本更新
19 |
20 | #### Testcase
21 |
22 | 提供一个启动API测试用例的指令(社区版)
23 |
24 | #### Visitor
25 |
26 | 提供后台降级访客的命令
27 |
28 | #### HideSeed
29 |
30 | 隐藏种子,hook方式调用,需随版本更新
31 |
32 | #### Vbtest
33 |
34 | 提供一个 VB.Net 的开发用例(一次性监听)
35 |
36 | #### NoAutoCompactionTip
37 |
38 | 隐藏 “Running AutoCompaction ...” 这个提示,hook方式调用,需随版本更新
39 |
--------------------------------------------------------------------------------
/BDSBaseLib/MyClass.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * 由SharpDevelop创建。
3 | * 用户: BDSNetRunner
4 | * 日期: 2020/7/28
5 | * 时间: 0:45
6 | *
7 | * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
8 | */
9 | using System;
10 | using System.Collections.Generic;
11 |
12 | namespace BDSBaseLib
13 | {
14 | ///
15 | /// Template
16 | ///
17 | public class MyClass
18 | {
19 | }
20 | }
21 |
22 | namespace CSR {
23 | partial class Plugin {
24 | // TODO
25 | //public static int onServerStart(string pathandversion) {
26 | // Console.WriteLine("----Base CSR api is loaded----");
27 | // return -1;
28 | //}
29 | // TODO
30 | //public static void onStart(MCCSAPI api) {
31 | //}
32 | }
33 | }
--------------------------------------------------------------------------------
/NoAutoCompactionTip/BDS/Plugin.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * 由SharpDevelop创建。
3 | * 用户: BDSNetRunner
4 | * 日期: 2020/7/18
5 | * 时间: 12:32
6 | *
7 | * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
8 | */
9 | using System;
10 |
11 | namespace CSR
12 | {
13 | partial class Plugin
14 | {
15 | #region 插件统一调用接口,请勿随意更改
16 | // 采用第三方引用时候,全部由用户实现
17 | public static int onServerStart(string pathandversion) {
18 | string path = null, version = null;
19 | bool commercial = false;
20 | string [] pav = pathandversion.Split(',');
21 | if (pav.Length > 1) {
22 | path = pav[0];
23 | version = pav[1];
24 | commercial = (pav[pav.Length - 1] == "1");
25 | var api = new MCCSAPI(path, version, commercial);
26 | if (api != null) {
27 | onStart(api);
28 | return 0;
29 | }
30 | }
31 | Console.WriteLine("Load failed.");
32 | return -1;
33 | }
34 | #endregion
35 |
36 | #region 必要接口 onStart ,由用户实现
37 | // public static void onStart(MCCSAPI api)
38 | #endregion
39 | }
40 | }
--------------------------------------------------------------------------------
/AntiWsCmd/BDS/Plugin.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * 由SharpDevelop创建。
3 | * 用户: BDSNetRunner
4 | * 日期: 2020/7/18
5 | * 时间: 12:32
6 | *
7 | * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
8 | */
9 | using System;
10 |
11 | namespace CSR
12 | {
13 | partial class Plugin
14 | {
15 | private static MCCSAPI mapi = null;
16 | ///
17 | /// 静态api对象
18 | ///
19 | public static MCCSAPI api { get { return mapi; } }
20 | #region 插件统一调用接口,请勿随意更改
21 | public static int onServerStart(string pathandversion) {
22 | string path = null, version = null;
23 | bool commercial = false;
24 | string [] pav = pathandversion.Split(',');
25 | if (pav.Length > 1) {
26 | path = pav[0];
27 | version = pav[1];
28 | commercial = (pav[pav.Length - 1] == "1");
29 | mapi = new MCCSAPI(path, version, commercial);
30 | if (mapi != null) {
31 | onStart(mapi);
32 | GC.KeepAlive(mapi);
33 | return 0;
34 | }
35 | }
36 | Console.WriteLine("Load failed.");
37 | return -1;
38 | }
39 | #endregion
40 |
41 | ~Plugin()
42 | {
43 | //Console.WriteLine("[CSR Plugin] Ref released.");
44 | }
45 |
46 | #region 必要接口 onStart ,由用户实现
47 | // public static void onStart(MCCSAPI api)
48 | #endregion
49 | }
50 | }
--------------------------------------------------------------------------------
/BDSBaseLib/BDS/Plugin.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * 由SharpDevelop创建。
3 | * 用户: BDSNetRunner
4 | * 日期: 2020/7/18
5 | * 时间: 12:32
6 | *
7 | * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
8 | */
9 | using System;
10 |
11 | namespace CSR
12 | {
13 | partial class Plugin
14 | {
15 | private static MCCSAPI mapi = null;
16 | ///
17 | /// 静态api对象
18 | ///
19 | public static MCCSAPI api { get { return mapi; } }
20 | #region 插件统一调用接口,请勿随意更改
21 | // public static int onServerStart(string pathandversion) {
22 | // string path = null, version = null;
23 | // bool commercial = false;
24 | // string [] pav = pathandversion.Split(',');
25 | // if (pav.Length > 1) {
26 | // path = pav[0];
27 | // version = pav[1];
28 | // commercial = (pav[pav.Length - 1] == "1");
29 | // mapi = new MCCSAPI(path, version, commercial);
30 | // if (mapi != null) {
31 | // onStart(mapi);
32 | // GC.KeepAlive(mapi);
33 | // return 0;
34 | // }
35 | // }
36 | // Console.WriteLine("Load failed.");
37 | // return -1;
38 | // }
39 | #endregion
40 |
41 | ~Plugin()
42 | {
43 | //Console.WriteLine("[CSR Plugin] Ref released.");
44 | }
45 |
46 | #region 必要接口 onStart ,由用户实现
47 | // public static void onStart(MCCSAPI api)
48 | #endregion
49 | }
50 | }
--------------------------------------------------------------------------------
/HideSeed/Hook.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.InteropServices;
3 | using CSR;
4 |
5 | namespace HideSeed
6 | {
7 | ///
8 | /// 隐藏种子
9 | ///
10 | public class Hook
11 | {
12 | static int fakeseed;
13 |
14 | delegate ulong HIDESEEDPACKET(IntPtr a1, ulong a2);
15 | static IntPtr hideorg = IntPtr.Zero;
16 | ///
17 | /// 新方法,hook方式修改数据包,隐藏种子
18 | ///
19 | /// StartGamePacket指针
20 | /// BinaryStream引用
21 | ///
22 | private static readonly HIDESEEDPACKET hide = (a1, a2) => {
23 | Marshal.WriteInt32(a1 + 40, fakeseed);
24 | var org = Marshal.GetDelegateForFunctionPointer(hideorg);
25 | return org(a1, a2);
26 | };
27 |
28 | // 注册hook
29 | public static void init(MCCSAPI api, int seed) {
30 | fakeseed = seed;
31 | int rva = 0;
32 | switch(api.VERSION) { // 版本适配
33 | case "1.16.1.2":
34 | rva = 0x00380010;
35 | break;
36 | case "1.16.10.2":
37 | rva = 0x0037FFE0;
38 | break;
39 | case "1.16.20.3":
40 | rva = 0x00386260;
41 | break;
42 | case "1.16.40.2":
43 | rva = 0x00386270;
44 | break;
45 | case "1.16.100.4":
46 | case "1.16.101.1":
47 | rva = 0x00972F80;
48 | break;
49 | }
50 | if (rva != 0) {
51 | bool ret = api.cshook(rva, // IDA StartGamePacket::write
52 | Marshal.GetFunctionPointerForDelegate(hide),
53 | out hideorg);
54 | if (ret)
55 | Console.WriteLine("[HideSeed] 种子已隐藏。");
56 | }
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/AlwaysNoCheat/Program2.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using CSR;
3 |
4 | namespace AlwaysNoCheat
5 | {
6 | ///
7 | /// 实现解锁全部命令为无需作弊状态可使用
8 | ///
9 | public class Program
10 | {
11 | public static readonly string LOGCONFIG = @"CSR\configs\logconfig.txt";
12 |
13 | // 主入口实现
14 | public static void init(MCCSAPI api) {
15 | // 读取配置 根据配置设置hook
16 | ConfigReader cf = new ConfigReader(LOGCONFIG);
17 |
18 | bool nocheatable = cf.getValue("AlwaysNoCheat").ToLower() == "true";
19 | string nocheatablestr = ("" + nocheatable).ToLower();
20 | cf.setValue("AlwaysNoCheat", nocheatablestr);
21 | cf.save();
22 | if (nocheatable) {
23 | Hook.init(api);
24 | }
25 | }
26 | }
27 | }
28 |
29 | namespace CSR {
30 | partial class Plugin {
31 | // 用户主实现
32 | public static void onStart(MCCSAPI api) {
33 | AlwaysNoCheat.Program.init(api);
34 | }
35 |
36 | private static MCCSAPI mapi = null;
37 | ///
38 | /// 静态api对象
39 | ///
40 | public static MCCSAPI api { get { return mapi; } }
41 | public static int onServerStart(string pathandversion) {
42 | string path = null, version = null;
43 | bool commercial = false;
44 | string [] pav = pathandversion.Split(',');
45 | if (pav.Length > 1) {
46 | path = pav[0];
47 | version = pav[1];
48 | commercial = (pav[pav.Length - 1] == "1");
49 | mapi = new MCCSAPI(path, version, commercial);
50 | if (mapi != null) {
51 | onStart(mapi);
52 | GC.KeepAlive(mapi);
53 | return 0;
54 | }
55 | }
56 | Console.WriteLine("Load failed.");
57 | return -1;
58 | }
59 | }
60 | }
--------------------------------------------------------------------------------
/AntiWsCmd/AntiWsCmd.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * 由SharpDevelop创建。
3 | * 用户: classmates
4 | * 日期: 2021/8/6
5 | * 时间: 15:04
6 | *
7 | * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
8 | */
9 | using System;
10 | using System.Runtime.InteropServices;
11 | using CSR;
12 |
13 | namespace AntiWsCmd
14 | {
15 | ///
16 | /// ws指令显形
17 | ///
18 | public class MyClass
19 | {
20 | static MCCSAPI mapi;
21 | static IntPtr org;
22 |
23 | public delegate long ClientAutomationCommandOrigin_getName(long a, long b);
24 |
25 | static readonly ClientAutomationCommandOrigin_getName wsf = (a, b) => {
26 | IntPtr func_PlayerCommandOrigin_getName = IntPtr.Zero;
27 | switch(mapi.VERSION) {
28 | case "1.17.10.04": // IDA PlayerCommandOrigin::getName
29 | func_PlayerCommandOrigin_getName = mapi.dlsym(0x00786150);
30 | break;
31 | }
32 | if (func_PlayerCommandOrigin_getName != IntPtr.Zero) {
33 | ClientAutomationCommandOrigin_getName pgname = Marshal.GetDelegateForFunctionPointer(
34 | func_PlayerCommandOrigin_getName);
35 | return pgname(a, b);
36 | }
37 | return 0;
38 | };
39 |
40 | public static void init(MCCSAPI api) {
41 | mapi = api;
42 | switch (api.VERSION) {
43 | case "1.17.10.04": // IDA ClientAutomationCommandOrigin::getName
44 | if (api.cshook(0x00786020, Marshal.GetFunctionPointerForDelegate(wsf), out org)) {
45 | Console.WriteLine("[AntiWsCmd] ws指令显形已加载。");
46 | }
47 | break;
48 | }
49 | }
50 | }
51 | }
52 |
53 | namespace CSR {
54 | partial class Plugin {
55 | public static void onStart(MCCSAPI api) {
56 | AntiWsCmd.MyClass.init(api);
57 | }
58 | }
59 | }
--------------------------------------------------------------------------------
/HideSeed/Program5.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using CSR;
3 |
4 | namespace HideSeed
5 | {
6 | ///
7 | /// 隐藏种子
8 | ///
9 | public class Program
10 | {
11 | static MCCSAPI mapi;
12 |
13 | ///
14 | /// 固定配置文件所在路径
15 | ///
16 | static readonly string LOGCONFIG = @"CSR\configs\logconfig.txt";
17 |
18 | public static void init(MCCSAPI api) {
19 | mapi = api;
20 |
21 | var cf = new ConfigReader(LOGCONFIG);
22 |
23 | var seedstr = cf.getValue("fakeseed");
24 | if (!string.IsNullOrEmpty(seedstr)) {
25 | // 此处隐藏种子
26 | try {
27 | int fakeseed = Convert.ToInt32(seedstr);
28 | Hook.init(api, fakeseed);
29 | } catch(Exception e) {Console.WriteLine(e.StackTrace);}
30 | } else {
31 | Console.WriteLine("[HideSeed] 默认值为空,不予隐藏。");
32 | cf.setValue("fakeseed", null);
33 | cf.save();
34 | }
35 | }
36 | }
37 | }
38 |
39 | namespace CSR
40 | {
41 | partial class Plugin
42 | {
43 | private static MCCSAPI mapi = null;
44 | ///
45 | /// 静态api对象
46 | ///
47 | public static MCCSAPI api { get { return mapi; } }
48 | public static int onServerStart(string pathandversion) {
49 | string path = null, version = null;
50 | bool commercial = false;
51 | string [] pav = pathandversion.Split(',');
52 | if (pav.Length > 1) {
53 | path = pav[0];
54 | version = pav[1];
55 | commercial = (pav[pav.Length - 1] == "1");
56 | mapi = new MCCSAPI(path, version, commercial);
57 | if (mapi != null) {
58 | onStart(mapi);
59 | GC.KeepAlive(mapi);
60 | return 0;
61 | }
62 | }
63 | Console.WriteLine("Load failed.");
64 | return -1;
65 | }
66 |
67 | ///
68 | /// 通用调用接口,需用户自行实现
69 | ///
70 | /// MC相关调用方法
71 | public static void onStart(MCCSAPI api) {
72 | Console.WriteLine("[HideSeed] 已装载。请等待版本适配...");
73 | // TODO 此接口为必要实现
74 | HideSeed.Program.init(api);
75 | }
76 | }
77 | }
--------------------------------------------------------------------------------
/AlwaysNoCheat/Hook.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Runtime.InteropServices;
4 | using CSR;
5 |
6 | namespace AlwaysNoCheat
7 | {
8 | ///
9 | /// 解锁所有指令为无作弊即可使用状态
10 | ///
11 | public class Hook
12 | {
13 | delegate ulong CMD_REG_Func(ulong a1, ulong a2, ulong a3, byte level, byte f1, byte f2);
14 | private static IntPtr _CS_REGISTERCOMMAND_org = IntPtr.Zero;
15 | ///
16 | /// 新方法,修改注册的命令标识,所有指令全部增加一个无需作弊可用的flag
17 | ///
18 | /// CommandRegistry句柄
19 | /// 指令原型
20 | /// 指令描述
21 | /// 需求op等级
22 | /// 指令属性flag1
23 | /// 指令属性flag2
24 | ///
25 | private static ulong _cshook_registerCommand(ulong a1, ulong a2, ulong a3, byte level, byte f1, byte f2) {
26 | f1 |= (byte)MCCSAPI.CommandCheatFlag.NotCheat;
27 | var org = Marshal.GetDelegateForFunctionPointer(_CS_REGISTERCOMMAND_org, typeof(CMD_REG_Func)) as CMD_REG_Func;
28 | return org(a1, a2, a3, level, f1, f2);
29 | }
30 | private static readonly CMD_REG_Func cs_reghookptr = _cshook_registerCommand;
31 |
32 | // 注册hook
33 | public static void init(MCCSAPI api) {
34 | int rva = 0;
35 | switch(api.VERSION) { // 版本适配
36 | case "1.16.1.2":
37 | rva = 0x00429850;
38 | break;
39 | case "1.16.10.2":
40 | rva = 0x00429820;
41 | break;
42 | case "1.16.20.3":
43 | rva = 0x0042D250;
44 | break;
45 | case "1.16.40.2":
46 | rva = 0x0042D260;
47 | break;
48 | case "1.16.100.4":
49 | case "1.16.101.1":
50 | rva = 0x00A1E8E0;
51 | break;
52 | }
53 | if (rva != 0) {
54 | bool ret = api.cshook(rva, // IDA CommandRegistry::registerCommand
55 | Marshal.GetFunctionPointerForDelegate(cs_reghookptr),
56 | out _CS_REGISTERCOMMAND_org);
57 | if (ret)
58 | Console.WriteLine("作弊指令已解锁。");
59 | }
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/Vbtest/NewClass.vb:
--------------------------------------------------------------------------------
1 | '
2 | ' 由SharpDevelop创建。
3 | ' 用户: BDSNetRunner
4 | ' 日期: 2020/8/4
5 | ' 时间: 17:34
6 | '
7 | ' 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
8 | '
9 | Imports CSR
10 |
11 | REM 本测试程序提供一个VB.Net调用范例,监听一次破坏方块
12 | Public Class MyVBClass
13 |
14 | Shared cb As MCCSAPI.EventCab
15 |
16 | Public Shared Sub init(api As MCCSAPI)
17 | cb = Function(x As Events)
18 | Dim e As DestroyBlockEvent = CType(BaseEvent.getFrom(x), DestroyBlockEvent)
19 | If (Not IsNothing(e)) Then
20 | Console.WriteLine("[vbtest] 玩家" + e.playername + " 在 " + e.dimension + " (" + e.XYZ.x.ToString() +
21 | "," + e.XYZ.y.ToString() + "," + e.XYZ.z.ToString() + ")处破坏 " + e.blockname + " 方块。")
22 | REM 此处卸载监听器
23 | api.removeAfterActListener(EventKey.onDestroyBlock, cb)
24 | End If
25 | Return False
26 | End Function
27 | api.addAfterActListener(EventKey.onDestroyBlock, cb)
28 |
29 | api.logout("这是一个vb测试插件。" + "api version=" + api.VERSION)
30 | End Sub
31 |
32 | End Class
33 |
34 |
35 | REM 注意工程根命名空间为CSR,保证接口可被调用
36 | namespace Global.CSR
37 |
38 | Public Class Plugin
39 | Shared mapi as MCCSAPI
40 | #Region "初始化通用接口,请勿随意更改"
41 | Public Shared Function onServerStart(pathandversion As String) As Int32
42 | Dim path as string, Version as string
43 | Dim commercial = False
44 | Dim pav() = pathandversion.Split(",".ToCharArray())
45 | If pav.Length > 1 Then
46 | path = pav.GetValue(0).ToString()
47 | Version = pav.GetValue(1).ToString()
48 | commercial = pav.GetValue(pav.Length - 1).Equals("1")
49 | mapi = New MCCSAPI(path, Version, commercial)
50 | If Not IsNothing(mapi) Then
51 | onStart(mapi)
52 | GC.KeepAlive(mapi)
53 | Return 0
54 | End If
55 | End If
56 | Console.WriteLine("Load failed.")
57 | Return -1
58 | End Function
59 | #End Region
60 |
61 | Private Shared Sub onStart(api As MCCSAPI)
62 | REM TODO 此处需要自行实现
63 | Vbtest.MyVBClass.init(api)
64 | End Sub
65 | End Class
66 |
67 | end namespace
--------------------------------------------------------------------------------
/BDSBaseLib/ConfigReader.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * 由SharpDevelop创建。
3 | * 用户: BDSNetRunner
4 | * 日期: 2020/7/27
5 | * 时间: 23:47
6 | *
7 | * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
8 | */
9 | using System;
10 | using System.Collections;
11 | using System.IO;
12 |
13 | namespace CSR
14 | {
15 | ///
16 | /// 等号分割符用的配置文件
17 | ///
18 | public class ConfigReader
19 | {
20 | public string configpath;
21 | private Hashtable mconfigs;
22 |
23 | public ConfigReader(string filepath)
24 | {
25 | configpath = filepath;
26 | reload();
27 | }
28 |
29 | ///
30 | /// 保存配置
31 | ///
32 | public void save() {
33 | var al = new ArrayList();
34 | foreach(string k in mconfigs.Keys) {
35 | string pair = k + "=" + mconfigs[k];
36 | al.Add(pair);
37 | }
38 | try {
39 | string dir = Path.GetDirectoryName(configpath);
40 | if (!Directory.Exists(dir))
41 | Directory.CreateDirectory(dir);
42 | File.WriteAllLines(configpath, (string[])al.ToArray(typeof(string)));
43 | }catch(Exception e){Console.WriteLine(e.StackTrace);}
44 | }
45 |
46 | ///
47 | /// 重载配置文件
48 | ///
49 | public void reload() {
50 | mconfigs = new Hashtable();
51 | string [] datas = null;
52 | try {
53 | datas = File.ReadAllLines(configpath);
54 | } catch {}
55 | if (datas != null && datas.Length > 0) {
56 | // 读取配置文件
57 | foreach(string s in datas) {
58 | var sec = s.Split('=');
59 | if (sec.Length == 2) {
60 | string k = sec[0].Trim();
61 | string v = sec[1].Trim();
62 | mconfigs[k] = v;
63 | }
64 | }
65 | } else {
66 | Console.WriteLine("[Base] 读取配置失败,使用默认配置。配置文件位于 {0}", configpath);
67 | }
68 | }
69 |
70 | ///
71 | /// 添加一个配置项
72 | ///
73 | ///
74 | ///
75 | ///
76 | public bool setValue(string k, string v) {
77 | if (mconfigs == null || string.IsNullOrEmpty(configpath))
78 | return false;
79 | mconfigs[k] = v;
80 | return true;
81 | }
82 |
83 | ///
84 | /// 获取一个配置项
85 | ///
86 | ///
87 | ///
88 | public string getValue(string k) {
89 | string ret = string.Empty;
90 | if (mconfigs != null) {
91 | object o = mconfigs[k];
92 | if (o != null)
93 | ret = o.ToString();
94 | }
95 | return ret;
96 | }
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/NoAutoCompactionTip/NoAutoCompactionTip.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Runtime.InteropServices;
4 | using CSR;
5 |
6 | namespace NoAutoCompactionTip
7 | {
8 | ///
9 | /// 隐藏 “Running AutoCompaction ...” 这个提示
10 | ///
11 | public class Program
12 | {
13 | public static MCCSAPI mapi;
14 |
15 | public static Hashtable rva_bedlogs = new Hashtable();
16 | public static Hashtable rva_docalls = new Hashtable();
17 |
18 | static IntPtr f_bed_log;
19 | static IntPtr f_do_call;
20 |
21 | public delegate long TASK_DO_CALL(long a, long b);
22 | public delegate void BED_LOG(int a1, int a2, long a3, int a4, int a5, long a6, int a7, long a8);
23 |
24 | // 隐藏输出,直接返回
25 | static readonly BED_LOG hidelog = (a1, a2, a3, a4, a5, a6, a7, a8) => {}; // Console.WriteLine("[NoAutoCompactionTip] 此处隐藏自动压缩提示。");
26 |
27 | // 压缩任务期间,输出前截断LOG,完成任务后恢复log功能
28 | static readonly TASK_DO_CALL hook_task_do_call = (a, b) => {
29 | int rva = (int)rva_bedlogs[mapi.VERSION];
30 | mapi.cshook(rva, Marshal.GetFunctionPointerForDelegate(hidelog), out f_bed_log);
31 | TASK_DO_CALL org = Marshal.GetDelegateForFunctionPointer(f_do_call);
32 | long ret = org(a, b);
33 | mapi.csunhook(Marshal.GetFunctionPointerForDelegate(hidelog), ref f_bed_log);
34 | return ret;
35 | };
36 |
37 |
38 |
39 | public static void init(MCCSAPI api) {
40 | mapi = api;
41 |
42 | rva_bedlogs["1.16.220.02"] = 0x01051430; // IDA BedrockLog::log
43 | rva_bedlogs["1.16.221.01"] = 0x01051590;
44 | rva_bedlogs["1.17.0.03"] = 0x0134F520;
45 | rva_bedlogs["1.17.2.01"] = 0x0134EFF0;
46 | rva_bedlogs["1.17.10.04"] = 0x0137BF70;
47 | rva_docalls["1.16.220.02"] = 0xD50380; // IDA "Running AutoCompaction..."
48 | rva_docalls["1.16.221.01"] = 0xD50510;
49 | rva_docalls["1.17.2.01"] = 0xFC19D0;
50 | rva_docalls["1.17.10.04"] = 0xFAE630;
51 | int rva = (int)rva_docalls[api.VERSION];
52 | if (rva != 0)
53 | if (api.cshook(rva, Marshal.GetFunctionPointerForDelegate(hook_task_do_call), out f_do_call)) {
54 | Console.WriteLine("[NoAutoCompactionTip] 隐藏AutoCompaction提示已加载。适配版本:" + api.VERSION);
55 | }
56 | }
57 | }
58 | }
59 |
60 | namespace CSR
61 | {
62 | partial class Plugin
63 | {
64 |
65 | ///
66 | /// 通用调用接口,需用户自行实现
67 | ///
68 | /// MC相关调用方法
69 | public static void onStart(MCCSAPI api) {
70 | Console.WriteLine("[NoAutoCompactionTip] 已装载。请等待版本适配...");
71 | // TODO 此接口为必要实现
72 | NoAutoCompactionTip.Program.init(api);
73 | }
74 | }
75 | }
--------------------------------------------------------------------------------
/NoAutoCompactionTip/NoAutoCompactionTip.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {B31F56C3-CA13-42BA-8B6D-ACEA726E277E}
5 | {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
6 | Debug
7 | AnyCPU
8 | Library
9 | NoAutoCompactionTip
10 | NoAutoCompactionTip.csr
11 | v4.5.1
12 | Properties
13 |
14 | False
15 | False
16 | False
17 | False
18 | obj\$(Configuration)\
19 | 4
20 |
21 |
22 | x64
23 | 4194304
24 | False
25 | Auto
26 | 4096
27 |
28 |
29 | bin\Debug\
30 | True
31 | Full
32 | False
33 | True
34 | DEBUG;TRACE
35 | obj\
36 |
37 |
38 | bin\Release\
39 | False
40 | None
41 | True
42 | False
43 | TRACE
44 |
45 |
46 |
47 | 4.0
48 |
49 |
50 |
51 | 3.5
52 |
53 |
54 |
55 | 3.5
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/HideSeed/HideSeed.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {4029AB3A-B7C0-4BED-BA29-75B6A11DB545}
5 | {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
6 | Debug
7 | AnyCPU
8 | Library
9 | HideSeed
10 | HideSeed.csr
11 | v4.5.1
12 | Properties
13 | False
14 | False
15 | False
16 | False
17 | obj\$(Configuration)\
18 | 4
19 |
20 |
21 | x64
22 | 4194304
23 | False
24 | Auto
25 | 4096
26 |
27 |
28 | bin\Debug\
29 | True
30 | Full
31 | False
32 | True
33 | DEBUG;TRACE
34 | obj\
35 |
36 |
37 | bin\Release\
38 | False
39 | None
40 | True
41 | False
42 | TRACE
43 |
44 |
45 |
46 | 4.0
47 |
48 |
49 |
50 | 3.5
51 |
52 |
53 |
54 | 3.5
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 | {cd9cca4e-2796-401a-9fc5-5e21165957c5}
64 | BDSBaseLib
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/AlwaysNoCheat/AlwaysNoCheat.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {ABD35EC4-F8D6-4AFD-B2ED-2296ADF1CD1F}
5 | {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
6 | Debug
7 | AnyCPU
8 | Library
9 | AlwaysNoCheat
10 | AlwaysNoCheat.csr
11 | v4.5.1
12 | Properties
13 | False
14 | False
15 | False
16 | False
17 | obj\$(Configuration)\
18 | 4
19 |
20 |
21 | x64
22 | 4194304
23 | False
24 | Auto
25 | 4096
26 |
27 |
28 | bin\Debug\
29 | True
30 | Full
31 | False
32 | True
33 | DEBUG;TRACE
34 | obj\
35 |
36 |
37 | bin\Release\
38 | False
39 | None
40 | True
41 | False
42 | TRACE
43 |
44 |
45 |
46 | 4.0
47 |
48 |
49 |
50 | 3.5
51 |
52 |
53 |
54 | 3.5
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 | {cd9cca4e-2796-401a-9fc5-5e21165957c5}
64 | BDSBaseLib
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/AntiWsCmd/AntiWsCmd.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {BC9D245C-2C25-4AA8-B0AC-C1E6462CA585}
5 | {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
6 | Debug
7 | AnyCPU
8 | Library
9 | AntiWsCmd
10 | AntiWsCmd.csr
11 | v4.5.1
12 | Properties
13 |
14 | False
15 | False
16 | False
17 | OnBuildSuccess
18 | False
19 | False
20 | False
21 | obj\$(Configuration)\
22 | 4
23 |
24 |
25 | AnyCPU
26 | 4194304
27 | False
28 | Auto
29 | 4096
30 |
31 |
32 | bin\Debug\
33 | True
34 | Full
35 | False
36 | True
37 | DEBUG;TRACE
38 | obj\
39 | Project
40 |
41 |
42 | bin\Release\
43 | False
44 | None
45 | True
46 | False
47 | TRACE
48 |
49 |
50 |
51 | 4.0
52 |
53 |
54 |
55 | 3.5
56 |
57 |
58 |
59 | 3.5
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/Visitor/Visitor.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {EF71BE68-EB03-4529-8D30-5BCE06939166}
5 | {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
6 | Debug
7 | AnyCPU
8 | Library
9 | Visitor
10 | Visitor.csr
11 | v4.5.1
12 | Properties
13 | False
14 | False
15 | False
16 | False
17 | obj\$(Configuration)\
18 | 4
19 |
20 |
21 | x64
22 | 4194304
23 | False
24 | Auto
25 | 4096
26 |
27 |
28 | bin\Debug\
29 | True
30 | Full
31 | False
32 | True
33 | DEBUG;TRACE
34 | obj\
35 |
36 |
37 | bin\Release\
38 | False
39 | None
40 | True
41 | False
42 | TRACE
43 |
44 |
45 |
46 | 4.0
47 |
48 |
49 |
50 | 3.5
51 |
52 |
53 | 3.5
54 |
55 |
56 |
57 | 3.5
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | {cd9cca4e-2796-401a-9fc5-5e21165957c5}
66 | BDSBaseLib
67 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/Testcase/Testcase.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {E45B1153-ED6C-4188-8402-542629847203}
5 | {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
6 | Debug
7 | AnyCPU
8 | Library
9 | Testcase
10 | Testcase.csr
11 | v4.5.1
12 | Properties
13 | False
14 | False
15 | False
16 | False
17 | obj\$(Configuration)\
18 | 4
19 |
20 |
21 | x64
22 | 4194304
23 | False
24 | Auto
25 | 4096
26 |
27 |
28 | bin\Debug\
29 | True
30 | Full
31 | False
32 | True
33 | DEBUG;TRACE
34 | obj\
35 |
36 |
37 | bin\Release\
38 | False
39 | None
40 | True
41 | False
42 | TRACE
43 |
44 |
45 |
46 | 4.0
47 |
48 |
49 |
50 | 3.5
51 |
52 |
53 | 3.5
54 |
55 |
56 |
57 | 3.5
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 | {cd9cca4e-2796-401a-9fc5-5e21165957c5}
67 | BDSBaseLib
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/BDSBaseLib/BDSBaseLib.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {CD9CCA4E-2796-401A-9FC5-5E21165957C5}
5 | {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
6 | Debug
7 | AnyCPU
8 | Library
9 | BDSBaseLib
10 | BDSBaseLib.csr
11 | v4.5.1
12 | Properties
13 | False
14 | OnBuildSuccess
15 | False
16 | False
17 | False
18 | obj\$(Configuration)\
19 | 4
20 |
21 |
22 | x64
23 | 4194304
24 | False
25 | Auto
26 | 4096
27 |
28 |
29 | bin\Debug\
30 | True
31 | Full
32 | False
33 | True
34 | DEBUG;TRACE
35 | obj\
36 |
37 |
38 | bin\Release\
39 | False
40 | None
41 | True
42 | False
43 | TRACE
44 |
45 |
46 |
47 | 4.0
48 |
49 |
50 |
51 | 3.5
52 |
53 |
54 |
55 | 3.5
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/Vbtest/Vbtest.vbproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {493FBFDD-1AB0-4578-B4FF-ED1DDE4C3576}
5 | {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
6 | Debug
7 | AnyCPU
8 | Library
9 | Windows
10 | Vbtest
11 | Vbtest.csr
12 | v4.5.1
13 | Properties
14 | On
15 | False
16 | Off
17 | Binary
18 | False
19 | obj\$(Configuration)\
20 | 4
21 |
22 |
23 | x64
24 | 4194304
25 | False
26 | Auto
27 | 4096
28 |
29 |
30 | bin\Debug\
31 | True
32 | Full
33 | False
34 | DEBUG=1,TRACE=1
35 | obj\
36 |
37 |
38 | bin\Release\
39 | False
40 | None
41 | True
42 | TRACE=1
43 |
44 |
45 |
46 | 4.0
47 |
48 |
49 |
50 | 3.5
51 |
52 |
53 |
54 | 3.5
55 |
56 |
57 |
58 | 3.5
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | {cd9cca4e-2796-401a-9fc5-5e21165957c5}
75 | BDSBaseLib
76 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/Logging/Logging.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {517728DB-1EF1-4845-A678-CE1001492856}
5 | {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
6 | Debug
7 | AnyCPU
8 | Library
9 | CSR
10 | Logging.csr
11 | v4.5.1
12 | Properties
13 | False
14 | False
15 | False
16 | obj\$(Configuration)\
17 | 4
18 | False
19 | False
20 | False
21 | OnBuildSuccess
22 |
23 |
24 |
25 | x64
26 | 4194304
27 | False
28 | Auto
29 | 4096
30 |
31 |
32 | bin\Debug\
33 | True
34 | Full
35 | False
36 | True
37 | DEBUG;TRACE
38 | obj\
39 |
40 |
41 | bin\Release\
42 | False
43 | None
44 | True
45 | False
46 | TRACE
47 | obj\
48 |
49 |
50 |
51 | 4.0
52 |
53 |
54 |
55 | 3.5
56 |
57 |
58 |
59 | 3.5
60 |
61 |
62 |
63 | 3.5
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | {cd9cca4e-2796-401a-9fc5-5e21165957c5}
75 | BDSBaseLib
76 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/Testcase/SimpleGUI.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Threading;
4 | using System.Web.Script.Serialization;
5 | using CSR;
6 |
7 | namespace Testcase
8 | {
9 | ///
10 | /// 简易表单处理程序
11 | ///
12 | public class SimpleGUI {
13 | private MCCSAPI mapi;
14 |
15 | public delegate void ONSELECT(string selected);
16 | public delegate void ONTIMEOUT();
17 | ///
18 | /// 表单id
19 | ///
20 | public uint id;
21 | ///
22 | /// 玩家uuid
23 | ///
24 | public string uuid;
25 | ///
26 | /// 返回的选项
27 | ///
28 | public string selected;
29 | ///
30 | /// 表单标题
31 | ///
32 | public string title;
33 | ///
34 | /// 内容
35 | ///
36 | public string content;
37 | ///
38 | /// 按钮内容
39 | ///
40 | public ArrayList buttons;
41 | ///
42 | /// 处理选择程序
43 | ///
44 | public ONSELECT onselected;
45 | ///
46 | /// 超时处理程序
47 | ///
48 | public ONTIMEOUT ontimeout;
49 | ///
50 | /// 超时毫秒数
51 | ///
52 | public int timeout;
53 | ///
54 | /// 注册回调
55 | ///
56 | public MCCSAPI.EventCab fmcb;
57 | ///
58 | /// 是否取消
59 | ///
60 | public bool canceled;
61 | ///
62 | /// 创建一个简单表单
63 | ///
64 | ///
65 | /// 玩家uuid
66 | /// 标题
67 | /// 内容
68 | /// 按钮列表
69 | public SimpleGUI(MCCSAPI api, string u, string t, string c, ArrayList b) {
70 | mapi = api;
71 | uuid = u;
72 | title = t;
73 | content = c;
74 | buttons = (b ?? new ArrayList());
75 | }
76 | ///
77 | /// 开始超时监听
78 | ///
79 | public void startTimeout() {
80 | Thread t = new Thread(()=>{
81 | Thread.Sleep(timeout);
82 | if (!canceled) {
83 | mapi.releaseForm(id);
84 | mapi.removeBeforeActListener(EventKey.onFormSelect, fmcb);
85 | if (ontimeout != null)
86 | ontimeout();
87 | }
88 | });
89 | t.Start();
90 | }
91 | ///
92 | /// 取消一个超时监听
93 | ///
94 | public void cancelTimeout() {
95 | canceled = true;
96 | }
97 | ///
98 | /// 发送一个简易表单
99 | ///
100 | /// 超时时间
101 | /// 主选择处理函数
102 | /// 超时处理函数
103 | ///
104 | public bool send(int tout, ONSELECT func, ONTIMEOUT tofunc) {
105 | timeout = tout;
106 | onselected = func;
107 | ontimeout = tofunc;
108 | fmcb = (x) => {
109 | var e = BaseEvent.getFrom(x) as FormSelectEvent;
110 | if (e.formid == id) { // 确定是当前表单
111 | mapi.removeBeforeActListener(EventKey.onFormSelect, fmcb);
112 | cancelTimeout();
113 | onselected(e.selected);
114 | }
115 | return true;
116 | };
117 | mapi.addBeforeActListener(EventKey.onFormSelect, fmcb);
118 | string bts = "[]";
119 | if (buttons != null && buttons.Count > 0) {
120 | var ser = new JavaScriptSerializer();
121 | bts = ser.Serialize(buttons);
122 | }
123 | id = mapi.sendSimpleForm(uuid, title, content, bts);
124 | bool ret = (id != 0);
125 | if (timeout > 0) {
126 | startTimeout();
127 | }
128 | return ret;
129 | }
130 | }
131 | }
132 |
--------------------------------------------------------------------------------
/NoAutoCompactionTip/BDS/MCCSAPI.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * 由SharpDevelop创建。
3 | * 用户: BDSNetRunner
4 | * 日期: 2020/7/17
5 | * 时间: 16:27
6 | *
7 | * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
8 | */
9 | using System;
10 | using System.Runtime.InteropServices;
11 | using System.Text;
12 |
13 | namespace CSR
14 | {
15 | ///
16 | /// API接口定义
17 | ///
18 | public class MCCSAPI
19 | {
20 | [DllImport("kernel32.dll")]
21 | private extern static IntPtr LoadLibrary(String path);
22 | [DllImport("kernel32.dll")]
23 | private extern static IntPtr GetProcAddress(IntPtr lib, String funcName);
24 | [DllImport("kernel32.dll")]
25 | private extern static bool FreeLibrary(IntPtr lib);
26 |
27 | private readonly string mVersion;
28 | ///
29 | /// 插件版本
30 | ///
31 | public string VERSION {get{return mVersion;}}
32 | private readonly bool mcommercial;
33 | ///
34 | /// 平台类型
35 | ///
36 | public bool COMMERCIAL {get{return mcommercial;}}
37 |
38 | private IntPtr hLib;
39 | public MCCSAPI(String DLLPath, string ver, bool commercial)
40 | {
41 | mVersion = ver;
42 | mcommercial = commercial;
43 | hLib = LoadLibrary(DLLPath);
44 | if (hLib != IntPtr.Zero) {
45 | initApis();
46 | }
47 | }
48 | ~MCCSAPI()
49 | {
50 | FreeLibrary(hLib);
51 | }
52 | //将要执行的函数转换为委托
53 | private T Invoke(String APIName)
54 | {
55 | IntPtr api = GetProcAddress(hLib, APIName);
56 | if (api != IntPtr.Zero)
57 | //return (T)Marshal.GetDelegateForFunctionPointer(api, typeof(T));
58 | //若.net framework版本高于4.5.1可用以下替换以上
59 | return Marshal.GetDelegateForFunctionPointer(api);
60 | Console.WriteLine("Get Api {0} failed.", APIName);
61 | return default(T);
62 | }
63 |
64 | private delegate bool CSHOOKFUNC(int rva, IntPtr hook, out IntPtr org);
65 | private CSHOOKFUNC ccshook;
66 | private delegate bool CSUNHOOKFUNC(IntPtr hook, out IntPtr org);
67 | private CSUNHOOKFUNC ccsunhook;
68 | private delegate IntPtr DLSYMFUNC(int rva);
69 | private DLSYMFUNC cdlsym;
70 | private delegate bool READHARDMEMORY(int rva, byte[] odata, int size);
71 | private READHARDMEMORY creadHardMemory, cwriteHardMemory;
72 |
73 | // 初始化所有api函数
74 | void initApis()
75 | {
76 | ccshook = Invoke("cshook");
77 | ccsunhook = Invoke("csunhook");
78 | cdlsym = Invoke("dlsym");
79 | creadHardMemory = Invoke("readHardMemory");
80 | cwriteHardMemory = Invoke("writeHardMemory");
81 | }
82 |
83 | // 底层相关
84 |
85 | ///
86 | /// 设置一个钩子
87 | ///
88 | /// 原型函数相对地址
89 | /// 新函数
90 | /// 待保存原型函数的指针
91 | ///
92 | public bool cshook(int rva, IntPtr hook, out IntPtr org)
93 | {
94 | IntPtr sorg = IntPtr.Zero;
95 | var ret = ccshook != null && ccshook(rva, hook, out sorg);
96 | org = sorg;
97 | return ret;
98 | }
99 | ///
100 | /// 卸载一个钩子
101 | ///
102 | /// 待卸载的函数
103 | /// 已保存了原型函数的指针
104 | ///
105 | public bool csunhook(IntPtr hook, ref IntPtr org) {
106 | IntPtr sorg = org;
107 | var ret = ccsunhook != null && ccsunhook(hook, out sorg);
108 | org = sorg;
109 | return ret;
110 | }
111 | ///
112 | /// 取相对地址对应的实际指针
113 | ///
114 | ///
115 | ///
116 | public IntPtr dlsym(int rva) {
117 | return cdlsym != null ? cdlsym(rva) :
118 | IntPtr.Zero;
119 | }
120 | ///
121 | /// 读特定段内存硬编码
122 | ///
123 | /// 函数片段起始位置相对地址
124 | /// 内存长度
125 | ///
126 | public byte[] readHardMemory(int rva, int size) {
127 | byte[] x = new byte[size];
128 | if (creadHardMemory != null)
129 | if (creadHardMemory(rva, x, size))
130 | return x;
131 | return null;
132 | }
133 | ///
134 | /// 写特定段内存硬编码
135 | ///
136 | /// 函数片段起始位置相对地址
137 | /// 新数据内容
138 | /// 内存长度
139 | ///
140 | public bool writeHardMemory(int rva, byte[] data, int size) {
141 | return (cwriteHardMemory != null) && cwriteHardMemory(rva, data, size);
142 | }
143 | }
144 | }
145 |
--------------------------------------------------------------------------------
/CSRMods.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2012
4 | # SharpDevelop 5.1
5 | VisualStudioVersion = 12.0.20827.3
6 | MinimumVisualStudioVersion = 10.0.40219.1
7 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Logging", "Logging\Logging.csproj", "{517728DB-1EF1-4845-A678-CE1001492856}"
8 | EndProject
9 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AlwaysNoCheat", "AlwaysNoCheat\AlwaysNoCheat.csproj", "{ABD35EC4-F8D6-4AFD-B2ED-2296ADF1CD1F}"
10 | EndProject
11 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BDSBaseLib", "BDSBaseLib\BDSBaseLib.csproj", "{CD9CCA4E-2796-401A-9FC5-5E21165957C5}"
12 | EndProject
13 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Testcase", "Testcase\Testcase.csproj", "{E45B1153-ED6C-4188-8402-542629847203}"
14 | EndProject
15 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Visitor", "Visitor\Visitor.csproj", "{EF71BE68-EB03-4529-8D30-5BCE06939166}"
16 | EndProject
17 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Vbtest", "Vbtest\Vbtest.vbproj", "{493FBFDD-1AB0-4578-B4FF-ED1DDE4C3576}"
18 | EndProject
19 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HideSeed", "HideSeed\HideSeed.csproj", "{4029AB3A-B7C0-4BED-BA29-75B6A11DB545}"
20 | EndProject
21 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NoAutoCompactionTip", "NoAutoCompactionTip\NoAutoCompactionTip.csproj", "{B31F56C3-CA13-42BA-8B6D-ACEA726E277E}"
22 | EndProject
23 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AntiWsCmd", "AntiWsCmd\AntiWsCmd.csproj", "{BC9D245C-2C25-4AA8-B0AC-C1E6462CA585}"
24 | EndProject
25 | Global
26 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
27 | Debug|Any CPU = Debug|Any CPU
28 | Release|Any CPU = Release|Any CPU
29 | EndGlobalSection
30 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
31 | {517728DB-1EF1-4845-A678-CE1001492856}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
32 | {517728DB-1EF1-4845-A678-CE1001492856}.Debug|Any CPU.Build.0 = Debug|Any CPU
33 | {517728DB-1EF1-4845-A678-CE1001492856}.Release|Any CPU.ActiveCfg = Release|Any CPU
34 | {517728DB-1EF1-4845-A678-CE1001492856}.Release|Any CPU.Build.0 = Release|Any CPU
35 | {ABD35EC4-F8D6-4AFD-B2ED-2296ADF1CD1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
36 | {ABD35EC4-F8D6-4AFD-B2ED-2296ADF1CD1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
37 | {ABD35EC4-F8D6-4AFD-B2ED-2296ADF1CD1F}.Release|Any CPU.ActiveCfg = Release|Any CPU
38 | {ABD35EC4-F8D6-4AFD-B2ED-2296ADF1CD1F}.Release|Any CPU.Build.0 = Release|Any CPU
39 | {CD9CCA4E-2796-401A-9FC5-5E21165957C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
40 | {CD9CCA4E-2796-401A-9FC5-5E21165957C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
41 | {CD9CCA4E-2796-401A-9FC5-5E21165957C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
42 | {CD9CCA4E-2796-401A-9FC5-5E21165957C5}.Release|Any CPU.Build.0 = Release|Any CPU
43 | {E45B1153-ED6C-4188-8402-542629847203}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
44 | {E45B1153-ED6C-4188-8402-542629847203}.Debug|Any CPU.Build.0 = Debug|Any CPU
45 | {E45B1153-ED6C-4188-8402-542629847203}.Release|Any CPU.ActiveCfg = Release|Any CPU
46 | {E45B1153-ED6C-4188-8402-542629847203}.Release|Any CPU.Build.0 = Release|Any CPU
47 | {EF71BE68-EB03-4529-8D30-5BCE06939166}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
48 | {EF71BE68-EB03-4529-8D30-5BCE06939166}.Debug|Any CPU.Build.0 = Debug|Any CPU
49 | {EF71BE68-EB03-4529-8D30-5BCE06939166}.Release|Any CPU.ActiveCfg = Release|Any CPU
50 | {EF71BE68-EB03-4529-8D30-5BCE06939166}.Release|Any CPU.Build.0 = Release|Any CPU
51 | {493FBFDD-1AB0-4578-B4FF-ED1DDE4C3576}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
52 | {493FBFDD-1AB0-4578-B4FF-ED1DDE4C3576}.Debug|Any CPU.Build.0 = Debug|Any CPU
53 | {493FBFDD-1AB0-4578-B4FF-ED1DDE4C3576}.Release|Any CPU.ActiveCfg = Release|Any CPU
54 | {493FBFDD-1AB0-4578-B4FF-ED1DDE4C3576}.Release|Any CPU.Build.0 = Release|Any CPU
55 | {4029AB3A-B7C0-4BED-BA29-75B6A11DB545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
56 | {4029AB3A-B7C0-4BED-BA29-75B6A11DB545}.Debug|Any CPU.Build.0 = Debug|Any CPU
57 | {4029AB3A-B7C0-4BED-BA29-75B6A11DB545}.Release|Any CPU.ActiveCfg = Release|Any CPU
58 | {4029AB3A-B7C0-4BED-BA29-75B6A11DB545}.Release|Any CPU.Build.0 = Release|Any CPU
59 | {B31F56C3-CA13-42BA-8B6D-ACEA726E277E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
60 | {B31F56C3-CA13-42BA-8B6D-ACEA726E277E}.Debug|Any CPU.Build.0 = Debug|Any CPU
61 | {B31F56C3-CA13-42BA-8B6D-ACEA726E277E}.Release|Any CPU.ActiveCfg = Release|Any CPU
62 | {B31F56C3-CA13-42BA-8B6D-ACEA726E277E}.Release|Any CPU.Build.0 = Release|Any CPU
63 | {BC9D245C-2C25-4AA8-B0AC-C1E6462CA585}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
64 | {BC9D245C-2C25-4AA8-B0AC-C1E6462CA585}.Debug|Any CPU.Build.0 = Debug|Any CPU
65 | {BC9D245C-2C25-4AA8-B0AC-C1E6462CA585}.Release|Any CPU.ActiveCfg = Release|Any CPU
66 | {BC9D245C-2C25-4AA8-B0AC-C1E6462CA585}.Release|Any CPU.Build.0 = Release|Any CPU
67 | EndGlobalSection
68 | EndGlobal
69 |
--------------------------------------------------------------------------------
/AntiWsCmd/BDS/MCCSAPI.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * 由SharpDevelop创建。
3 | * 用户: BDSNetRunner
4 | * 日期: 2020/7/17
5 | * 时间: 16:27
6 | *
7 | * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
8 | */
9 | using System;
10 | using System.Collections;
11 | using System.Collections.Generic;
12 | using System.Runtime.InteropServices;
13 |
14 | namespace CSR
15 | {
16 | ///
17 | /// API接口定义
18 | ///
19 | public class MCCSAPI
20 | {
21 | [DllImport("kernel32.dll")]
22 | private extern static IntPtr LoadLibrary(String path);
23 | [DllImport("kernel32.dll")]
24 | private extern static IntPtr GetProcAddress(IntPtr lib, String funcName);
25 | [DllImport("kernel32.dll")]
26 | private extern static bool FreeLibrary(IntPtr lib);
27 |
28 | private readonly string mVersion;
29 | ///
30 | /// 插件版本
31 | ///
32 | public string VERSION {get{return mVersion;}}
33 | private readonly bool mcommercial;
34 | ///
35 | /// 平台类型
36 | ///
37 | public bool COMMERCIAL {get{return mcommercial;}}
38 |
39 | // 注册事件回调管理,避免回收
40 | private Dictionary callbks = new Dictionary();
41 | // 发送tick方法管理,避免回收
42 | private Dictionary