好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 moocher 于 2024-6-24 15:08 编辑
如题,忘各位大佬给点思路。
开始以为是strongname检测问题,删除掉后还是不行!
问题已解决:
用de4dot跑一遍
而且是dll文件只要有了修改变动后,都要de4dot给它跑一次。
修改后的文件是194k,de4dot跑完后是195k。
不知道是文件大小问题还是别的问题。
有些混淆程序修改后不用de4dot跑也能运行,所以范了迷糊。
跟着chatGPT摸索一下...
如果你编写的程序集在脱离 dnSpy(.NET 调试和反编译工具)后无法运行,这可能是因为在 dnSpy 中进行了某些修改或设置,而这些修改在正常运行时未被正确应用或是不被允许的。以下是一些可能的原因和解决方案:
可能的原因
跳过验证
你在程序集级别请求跳过代码验证的权限 [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]。在 dnSpy 中,这个设置可能会被忽略或被允许,但在正常运行时,它可能不被授予,导致程序集无法运行。
代码签名和安全设置
如果你修改了签名的程序集,签名可能不再有效。许多系统要求程序集的签名是有效的,尤其是那些需要高权限的操作。
调试环境与运行环境的差异
在 dnSpy 中,调试器环境可能会影响代码的行为。例如,调试器可能自动提供某些权限或以某种方式修改运行时环境,使代码能够在调试时正常工作,但在正常运行时失败。
解决方案
检查权限设置
确保你的程序集在正常运行时具有所需的所有权限。如果需要跳过验证权限,请确保运行环境允许此操作。你可能需要调整应用程序的配置或运行时环境的安全策略。
移除 SkipVerification
尽量避免使用 SkipVerification,除非绝对必要。如果必须使用,请确保理解其风险并配置运行环境以允许此操作。
恢复原始签名
如果修改了签名的程序集,请尝试恢复原始签名或重新签名程序集,以确保签名是有效的。
重新编译程序集
确保在编译过程中没有错误,并且所有依赖项都是正确的。尝试重新编译你的程序集,然后再次运行。
使用强名称签名
如果你的程序集需要强名称签名,确保使用正确的密钥对其进行签名。
调试步骤
在没有 dnSpy 的情况下测试
尝试在没有 dnSpy 的情况下运行你的程序集,观察具体的错误信息。这可以帮助你确定问题的具体原因。
日志记录
在代码中加入日志记录,以便在运行时获取更多信息。日志可以帮助你找到运行时失败的具体位置和原因。
使用其他调试工具
尝试使用 Visual Studio 或其他调试工具来调试你的程序集。这些工具可能会提供更多关于问题的信息。
总结
如果你的程序集在脱离 dnSpy 后无法运行,可能是由于权限设置、代码签名或调试环境与运行环境的差异导致的。通过检查权限设置、恢复签名、重新编译和使用其他调试工具,可以帮助你找到并解决问题。
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|