wangyw15 / CeVIOActivator

Just for research
MIT License
20 stars 5 forks source link

无法导出音频文件 #1

Closed KdaiP closed 1 month ago

KdaiP commented 9 months ago

当想要将已调校工程导出音频的时候(File→Export→Audio Mixdown),会弹出以下提示: WAV export is currently not available due to offline status. Please connect to the Internet and restart the application.

看起来在离线激活情况下没有办法导出音频

KdaiP commented 9 months ago

CeVIO AI版本:8.6.10

wangyw15 commented 9 months ago

理论上来说离线激活状态下应该是可以导出wav的

可能是因为离线激活不完全的问题,我再分析确定一下

wangyw15 commented 9 months ago

当然最差的结果是修改原程序来做了

wangyw15 commented 9 months ago

分析一通发现,如果不修改可执行文件,这个导出是没法用的。

在尝试修改文件让导出能用

KdaiP commented 9 months ago

分析一通发现,如果不修改可执行文件,这个导出是没法用的。

在尝试修改文件让导出能用

感谢大佬!!

wangyw15 commented 8 months ago

修改后回编译直接报xaml错误了,感觉有点难弄 临时的变通方法是挂调试器,在导出的函数下断点,暂停后更改下一条指令直接跳过验证

Eternal973 commented 4 months ago

大佬现在有找到修改的方法吗 CeVIO AI 9.1.6.0 除了导出wav需要联机验证外都可以正常使用

wangyw15 commented 4 months ago

之前看过了,修改很简单,但是回编译之后就打不开了 如果有什么办法能在不修改本体的前提下修改函数返回值那应该就好做了

Eternal973 commented 4 months ago

我有自己反编译研究了一下,.net的软件还蛮友好的,不过修改后报错的地方好像不是修改的那个位置,可能是有什么验证?我试着直接改IL指令,还是出问题

wangyw15 commented 4 months ago

我有自己反编译研究了一下,.net的软件还蛮友好的,不过修改后报错的地方好像不是修改的那个位置,可能是有什么验证?我试着直接改IL指令,还是出问题

对的,修改C#和直接修改IL都会使得软件回编译之后无法运行,暂时找不到问题所在

wangyw15 commented 4 months ago

我有自己反编译研究了一下,.net的软件还蛮友好的,不过修改后报错的地方好像不是修改的那个位置,可能是有什么验证?我试着直接改IL指令,还是出问题

对的,修改C#和直接修改IL都会使得软件回编译之后无法运行,暂时找不到问题所在

实际用调试器下断点走一遍可以发现ProductLicense.IsAuthorized还是false状态,用调试器修改为true就可以导出了

wangyw15 commented 4 months ago

我有自己反编译研究了一下,.net的软件还蛮友好的,不过修改后报错的地方好像不是修改的那个位置,可能是有什么验证?我试着直接改IL指令,还是出问题

对的,修改C#和直接修改IL都会使得软件回编译之后无法运行,暂时找不到问题所在

实际用调试器下断点走一遍可以发现ProductLicense.IsAuthorized还是false状态,用调试器修改为true就可以导出了

更正:ProductLicense.IsAuthorized改为Authorizer.HasAuthorized

wangyw15 commented 4 months ago

问题用间接的方式解决了,修改CeVIO.ToolBarControl.dllCeVIO.ToolBarControl.ToolBarControl的静态构造函数,添加

System.Reflection.Assembly.GetEntryAssembly().GetType("CeVIO.Editor.MissionAssistant.Authorizer").GetProperty("HasAuthorized").SetValue(null, true);

用反射的方式给变量赋值为true绕过验证

回编译之后需要删除所有CeVIO的ngen映像(可能需要再关闭强签名验证,如果可以麻烦测试一下)

Eternal973 commented 2 months ago

Loading... Activated all pacakages Authorized Patching CeVIO.ToolBarControl.dll

未经处理的异常: System.IO.IOException: 文件“D:\Program Files\CeVIO AI\CeVIO.ToolBarControl.dll”正由另一进程使用,因此该进程无法访问此文件。 在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 在 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) 在 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) 在 Mono.Cecil.ModuleDefinition.Write(String fileName, WriterParameters parameters) 在 CeVIOActivator.AssemblyPatcher.PatchFile(String cevioInstallPath) 在 CeVIOActivator.Program.Main(String[] args)

CeVIO AI version 9.1.14.0

Eternal973 commented 2 months ago

我使用dnSpy手动修改了CeVIO.ToolBarControl.dll,现在已经可以正常使用,感谢提供思路。

wangyw15 commented 2 months ago

Loading... Activated all pacakages Authorized Patching CeVIO.ToolBarControl.dll 未经处理的异常: System.IO.IOException: 文件“D:\Program Files\CeVIO AI\CeVIO.ToolBarControl.dll”正由另一进程使用,因此该进程无法访问此文件。 在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 在 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) 在 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) 在 Mono.Cecil.ModuleDefinition.Write(String fileName, WriterParameters parameters) 在 CeVIOActivator.AssemblyPatcher.PatchFile(String cevioInstallPath) 在 CeVIOActivator.Program.Main(String[] args)

CeVIO AI version 9.1.14.0

这个问题应该是反射引起的文件占用,但是我暂时不知道怎么用AppDomain做程序集卸载

所以目前的解决办法是结束自身进程,启动cmd进行替换

如果有思路感谢提供一下