我试图评估我应用于我的程序集的混淆是否足够,我主要关心的是保护包含密码或私钥的字符串。
我成功地用 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/