.net reactor混淆代码导致的无法运行

橘子皮... 2018-08-23 10:23:21
提到net混淆代码这件事真是头大,想在用VS生成exe的时候自动就混淆好代码,试用了几个混淆工具最后选的.net reactor
但昨天遇到个烦人的事,一段程序不混淆没问题,一混淆就出错,不知道怎么办了
报错提示是
在 Microsoft.VisualBasic.CompilerServices.Symbols.Container.GetMembers(String& MemberName, Boolean ReportErrors)
在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.ObjectLateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)
在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)
在 VB.Net.Form1.MNSQB0YbV(Int32 )未找到类型“xYAcCUZ4NNyFkrIlq7”的公共成员“GetCookies”。


GetCookies 这个命令在一个模块里,貌似混淆后代码找不到这个函数,但是我手动把这个函数复制到主窗体代码一起的话,再混淆就不会报错了,这是什么原因导致的呢?
...全文
1934 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanghangz 2018-09-04
  • 打赏
  • 举报
回复
这个问题我也遇到过,加了其他一些dll引用后,在混淆就会出错.所有我遇到这种,就不选obfuscation这个选项了
hanghangz 2018-09-04
  • 打赏
  • 举报
回复
把下面的Control Flow Obfuscation的等级调低一些就可以,试试吧
泡泡龙 2018-08-23
  • 打赏
  • 举报
回复
大概是public和private的区别
stherix 2018-08-23
  • 打赏
  • 举报
回复
需要用反射获取的类/成员/方法不能被混淆
否则会出错
lindexi_gd 2018-08-23
  • 打赏
  • 举报
回复
https://walterlv.gitee.io/post/obfuscation-configurations-of-smart-assembly.html
游北亮 2018-08-23
  • 打赏
  • 举报
回复
最基本的混淆的原理 ,就是对你的程序里的 类名、类成员、类方法进行修改,用一些简单字符或特殊字符替换,
以达到让人反编译后,也不容易理解代码作用,

那么,对程序的入口Main这个函数名肯定是不能混淆的,否则程序无法执行,找不到入口。

同理,你如果在代码里用了反射,获取指定的类名 或成员名 或 方法名,
而混淆修改了这个名称,你的代码自然会运行时出错了。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧