楼主
长久以来,一直在用 .NET Reactor 给 C# 程序做保护。用久了感觉,对付直接拖进 dnSpy、ILSpy 看代码确实有用,尤其是字符串和方法体保护。
但程序总要运行,运行时该解开的还是会解开。真碰上 JIT Dump,这层保护就没想象中那么硬。
重命名也不能乱开。项目一大,反射、序列化和按名称绑定的地方很多,排除规则得一直跟着维护。虚拟化更挑代码,热路径不敢碰,有些复杂方法还可能直接被跳过。光看“保护成功”没什么意义,最后还是得反编译成品确认。
现在更倾向于 Reactor 负责托管层,真正关键的逻辑放到 Native,或者干脆不下发。
长期用 Reactor 的朋友,运行时 Dump 这块还有没有更实用的处理方式?
希望可以交流一下。