.net - 调试混淆的 .Net 程序集

标签 .net debugging runtime obfuscation disassembly

我试图评估我应用于我的程序集的混淆是否足够,我主要关心的是保护包含密码或私钥的字符串。
我成功地用 Salamander Decompiler 反编译了我的程序集看到我的字符串已被加密,但在运行时必须解密字符串才能使用。
有人告诉我可以调试应用程序并查看汇编代码,知道怎么做吗?

解决方案
这对我有用,尽管使用 WinDbg 可能有更好的方法。

1-执行程序
2-打开命令行并键入:

adplus -crash -pn [executablename] -o [ output directory ]

* adplus 和 WinDBG 放在同一个文件夹

3-关闭程序或等待它关闭
4-打开放置在指定输出目录中的FULLDUMP*.dmp
5- 打开 NotePad++ anb 选择 TextFX->Characters->Zap all non-printable characters to #
6- 以这种格式搜索字符串 's#t#r#i#n#g'
或将所有 '#' 替换为 '' 并搜索 'string'(这可能需要一段时间)

*顺便说一下,我找不到 SecureString也以明文的形式存在于内存中

最佳答案

对于密码和私钥等敏感数据,您应该使用 SecureString .

至于看汇编代码——当应用程序运行时,可以使用windbg获取内存转储,然后查看windbg 中的实际汇编程序。

关于.net - 调试混淆的 .Net 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4266069/

相关文章:

c# - 多次实例化类的性能问题

c# - 为什么其他不可变类型没有 StringBuilder 的等价物?

debugging - 如何将 erlang dbg 附加到正在运行的进程?

Scala 不允许我执行路径包含空格的批处理文件。相同的 Java 代码允许。什么给了?

java 编译与运行时计算

android - 如何根据Android API级别加载不同的Activity实现?

c# - .NET 垃圾收集器是否执行代码的预测分析?

c# - 在 Repository<T> 中返回 Queryable<T> 或 List<T>

regex - 如何调试正则表达式?

java - Eclipse Java 调试器使 if 语句条件为 true