代码之家  ›  专栏  ›  技术社区  ›  Cristian T

调试模糊的.Net程序集

  •  4
  • Cristian T  · 技术社区  · 14 年前

    我试图评估我对程序集应用的模糊处理是否足够,我主要关心的是保护包含密码或私钥的字符串。

    我成功地用 Salamander Decompiler 看到我的字符串被加密了,但是在运行时必须解密才能使用。

    我被告知可以调试应用程序并查看汇编程序代码,知道怎么做吗?

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

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

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

    *adplus与WinDBG放在同一文件夹中

    3-关闭程序或等待它关闭
    4-打开位于指定输出目录中的FULLDUMP*.dmp
    5-打开记事本++并选择TextFX->字符->将所有不可打印字符压缩到#
    6-搜索此格式的字符串“s#t#r#i#n#g”
    或将所有“35;”替换为“”并搜索“字符串”(这可能需要一段时间)

    *顺便说一下,我找不到 SecureString 记忆里也有明文

    2 回复  |  直到 14 年前
        1
  •  4
  •   Oded    14 年前

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

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

        2
  •  1
  •   XenocodeRCE    9 年前

    如果要调试某些硬混淆的应用程序,可以考虑通过0xd4d查找dnSpy,它是一个免费的开源.NET反编译程序,可以调试任何.NET程序集,&您可以放置断点并获取该变量的值。就调试而言非常有趣,让我告诉您,能够调试一个没有WinDBG或Olly2的应用程序显然是一种乐趣。

    现在,关于字符串混淆,您可以看看 .NETGuard's string encryption ,它使用非常复杂的方法(.NET stackframe+私钥+资源解密+指针)来保护字符串的安全。在我看来,保护字符串是首要任务,因为黑客会浏览你的应用程序,并主要引用字符串。