Li_peiang
前段时间用C#写了个启动器(wpf),结果非要加个KMCCC.ProDLL内裤,如果exe的文件夹没有DLL就启动不了,嵌入,代码,APP.XAML,csproj,Fody都试过,看上去并没有任何用。
而且KMCCC好像基于.NET 4.0 这也意味着win7用户可能会无法运行

好好的非要加个dll多不舒服,虽然好像别的dalao可以用KMCCC的内裤蛋不需要dll在外面,研究了几天几夜,从早到凌晨,终于有些新想法了(毕竟无奈)
如果dalao愿意教萌新如何嵌入KMCCC那真是顶礼膜拜


正文开始


或许我们都知道mc的启动原理,他只是一个命令,只不过带了些参数 例如内存 玩家名,java路径等

我们先写个bat运行下看看

@echo off

当然这需要一个客户端(.minecraft) 我们完整的运行了他

那么现在我们发现了2个主要的问题
1.Java路径如何寻找
2.UUID如何生成

解决方案:
Java路径:可以使用寻找注册表来解决
  1.                 String[] js = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\JavaSoft\Java Runtime Environment").GetSubKeyNames();
  2. string javapath = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\JavaSoft\Java Runtime Environment" + js[0]).GetValue("JavaHome") + "\\bin\\javaw.exe";
  3. JavaPath.Text = javapath;
复制代码
UUID: 暂时还不了解MinecraftUUID算法,好像还是固定的来着?
求大佬指点













2021.12 数据,可能有更多内容前段时间用C#写了个启动器(wpf),结果非要加个KMCCC.ProDLL内裤,如果exe的文件夹没有DLL就启动不了,嵌入,代码,APP.XAML,csproj,Fody都试过,看上去并没有任何用。
而且KMCCC好像基于.NET 4.0 这也意味着win7用户可能会无法运行


好好的非要加个dll多不舒服,虽然好像别的dalao可以用KMCCC的内裤蛋不需要dll在外面,研究了几天几夜,从早到凌晨,终于有些新想法了(毕竟无奈)
如果dalao愿意教萌新如何嵌入KMCCC那真是顶礼膜拜


正文开始


或许我们都知道mc的启动原理,他只是一个命令,只不过带了些参数 例如内存 玩家名,java路径等
我们先写个bat运行下看看
@echo off
"C:\Program Files\Java\jre1.8.0_131\bin\javaw.exe" -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Xmn128m -Xmx900m "-Djava.library.path=C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\versions\Minecraft Logic\Minecraft Logic-natives" -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true -cp "C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\net\minecraftforge\forge\1.7.10-10.13.4.1614-1.7.10\forge-1.7.10-10.13.4.1614-1.7.10.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\net\minecraft\launchwrapper\1.12\launchwrapper-1.12.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\ow2\asm\asm-all\5.0.3\asm-all-5.0.3.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\com\typesafe\akka\akka-actor_2.11\2.3.3\akka-actor_2.11-2.3.3.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\com\typesafe\config\1.2.1\config-1.2.1.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\scala-lang\scala-actors-migration_2.11\1.1.0\scala-actors-migration_2.11-1.1.0.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\scala-lang\scala-compiler\2.11.1\scala-compiler-2.11.1.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\scala-lang\plugins\scala-continuations-library_2.11\1.0.2\scala-continuations-library_2.11-1.0.2.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\scala-lang\plugins\scala-continuations-plugin_2.11.1\1.0.2\scala-continuations-plugin_2.11.1-1.0.2.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\scala-lang\scala-library\2.11.1\scala-library-2.11.1.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\scala-lang\scala-parser-combinators_2.11\1.0.1\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\scala-lang\scala-reflect\2.11.1\scala-reflect-2.11.1.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\scala-lang\scala-swing_2.11\1.0.1\scala-swing_2.11-1.0.1.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\scala-lang\scala-xml_2.11\1.0.2\scala-xml_2.11-1.0.2.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\lzma\lzma\0.0.1\lzma-0.0.1.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\net\sf\jopt-simple\jopt-simple\4.5\jopt-simple-4.5.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\com\google\guava\guava\17.0\guava-17.0.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\apache\commons\commons-lang3\3.3.2\commons-lang3-3.3.2.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\com\mojang\netty\1.6\netty-1.6.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\com\mojang\realms\1.3.5\realms-1.3.5.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\apache\commons\commons-compress\1.8.1\commons-compress-1.8.1.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\apache\httpcomponents\httpclient\4.3.3\httpclient-4.3.3.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\commons-logging\commons-logging\1.1.3\commons-logging-1.1.3.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\apache\httpcomponents\httpcore\4.3.2\httpcore-4.3.2.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\java3d\vecmath\1.3.1\vecmath-1.3.1.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\net\sf\trove4j\trove4j\3.0.3\trove4j-3.0.3.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\com\ibm\icu\icu4j-core-mojang\51.2\icu4j-core-mojang-51.2.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\net\sf\jopt-simple\jopt-simple\4.5\jopt-simple-4.5.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\com\paulscode\codecjorbis\20101023\codecjorbis-20101023.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\com\paulscode\codecwav\20101023\codecwav-20101023.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\com\paulscode\libraryjavasound\20101123\libraryjavasound-20101123.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\com\paulscode\librarylwjglopenal\20100824\librarylwjglopenal-20100824.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\com\paulscode\soundsystem\20120107\soundsystem-20120107.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\io\netty\netty-all\4.0.10.Final\netty-all-4.0.10.Final.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\com\google\guava\guava\15.0\guava-15.0.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\apache\commons\commons-lang3\3.1\commons-lang3-3.1.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\commons-io\commons-io\2.4\commons-io-2.4.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\commons-codec\commons-codec\1.9\commons-codec-1.9.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\net\java\jinput\jinput\2.0.5\jinput-2.0.5.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\net\java\jutils\jutils\1.0.0\jutils-1.0.0.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\com\google\code\gson\gson\2.2.4\gson-2.2.4.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\com\mojang\authlib\1.5.21\authlib-1.5.21.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\apache\logging\log4j\log4j-api\2.0-beta9\log4j-api-2.0-beta9.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\apache\logging\log4j\log4j-core\2.0-beta9\log4j-core-2.0-beta9.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl\2.9.1\lwjgl-2.9.1.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl_util\2.9.1\lwjgl_util-2.9.1.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\libraries\tv\twitch\twitch\5.16\twitch-5.16.jar;C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\versions\1.7.10\1.7.10.jar" net.minecraft.launchwrapper.Launch --username Dreamtowards --version "HMCL 2.4.1.450" --gameDir "C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft" --assetsDir "C:\Users\Dreamtowards\Documents\Visual Studio 2015\Projects\Luncher\Luncher\bin\Debug\.minecraft\assets" --assetIndex 1.7.10 --uuid cf3226b08a03f1da9339fc53964aafbf --accessToken cf3226b08a03f1da9339fc53964aafbf --userProperties {} --userType Legacy --tweakClass cpw.mods.fml.common.launcher.FMLTweaker --height 600 --width 1200
当然这需要一个客户端(.minecraft) 我们完整的运行了他


那么现在我们发现了2个主要的问题
1.Java路径如何寻找
2.UUID如何生成


解决方案:
Java路径:可以使用寻找注册表来解决

代码:

  1.     String[] js = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\JavaSoft\Java Runtime Environment").GetSubKeyNames();
  2. string javapath = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\JavaSoft\Java Runtime Environment" + js[0]).GetValue("JavaHome") + "\\bin\\javaw.exe";
  3. JavaPath.Text = javapath;
UUID: 暂时还不了解MinecraftUUID算法,好像还是固定的来着?
求大佬指点



~Daisy
本帖最后由 ~Daisy 于 2017-7-22 12:37 编辑

盗版UUID:Guid UUID = Guid.NewGuid()

Li_peiang
~Daisy 发表于 2017-7-21 16:52
Guid UUID = Guid.NewGuid()

这样的UUID岂不是随机的嘛

~Daisy
Li_peiang 发表于 2017-7-21 18:02
这样的UUID岂不是随机的嘛

KMCCC就是这样生成的

Li_peiang
~Daisy 发表于 2017-7-21 18:09
KMCCC就是这样生成的

不知道能不能var UUID = Guid.NewGuid().ToString();,不然Grid好像无法转字符串uuid.Text = UUID;

Li_peiang
Li_peiang 发表于 2017-7-21 23:17
不知道能不能var UUID = Guid.NewGuid().ToString();,不然Grid好像无法转字符串uuid.Text = UUID; ...

var uuidN = Guid.NewGuid().ToString("N"); 32位好像,蛋他是随机的,JMCH和mcuuid.net却是固定的

nsisogf
正版UUID需要在官网验证服务器上获取
post账号密码等

~Daisy
Li_peiang 发表于 2017-7-21 23:17
不知道能不能var UUID = Guid.NewGuid().ToString();,不然Grid好像无法转字符串uuid.Text = UUID; ...

可以.....

gundamMC
kmccc源码在github上有,大部分原理可以自己看。。 虽说直接复制不太好,不过如果不想有多个dll的话可以尝试下直接复制他的代码。
当然, 不是直接复制。。就是。。合理的复制一些什么的。。直接复制当然是不行的
uuid算法有online uuid和offline uuid
online的话看下wiki上的那个api的文章, 里面各种验证登录啥的都讲了.
offline的话一般根据id来生成, 你说的
Guid.NewGuid()

是随机生成一个uuid
可以看看这篇文章 https://weblogs.asp.net/haithamk ... -any-string-using-c

第一页 上一页 下一页 最后一页