none
winform程序 如何阻止解密后的工具不被内存读取工具获取到? RRS feed

  • 问题

  • 如题,在我的winform程序中,有一段逻辑是通过des解密方法解密密码密文,从而得到明文,但是此时如果使用winhex工具读取内存就会搜索到解密后的明文密码,请问该如何解密或者保护解密之后的明文密码?谢谢。
    2015年8月11日 11:39

答案

  • 如题,在我的winform程序中,有一段逻辑是通过des解密方法解密密码密文,从而得到明文,但是此时如果使用winhex工具读取内存就会搜索到解密后的明文密码,请问该如何解密或者保护解密之后的明文密码?谢谢。

    理论上无法保护。因为无论你怎么保护,都是要解密这个过程,都一定会通过内存作为交互媒介的。此时,费尽心机处心积虑的黑客总会想方设法去动态读入内存。

    最好的方法是保密的东西用WCF或者是WebService,让WinForm调用。加密解密的东西在服务端完成,直接传输一个结果到客户端验证即可(包括做软件序列号激活)。保密的算法这样黑客无法看到。


    ASP.NET Forum
    Other Discussion Forums
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download

    • 已标记为答案 bingliang 2015年8月31日 7:08
    2015年8月14日 6:59
    版主

全部回复

  • 你可以在操作后清空相应的数据,比如调用Array.Clear,但这并不能保证数据不被内存读取工具读取——它们可以在你的程序尚未开始清空数据的那个小小的时间窗内读出你的明文密码。请指明你所遇到的问题到底是什么:如果你是想防止有足够权限的用户有意使用内存读取工具读出明文密码的话,最好放弃,他们完全可以注入你的进程,直接让你的程序把明文密码显示出来,他们本来就有这个权力。

    Not so sure what to write here.

    2015年8月11日 13:04
  • 我想阻止或者说不让他们轻松的通过内存读取工具读出明文密码? 这个有好的方法或者建议吗 ?
    2015年8月12日 15:25
  • 那还是在操作完成后立刻清零你的明文密码吧,或者自己设计一个古怪的解密方法,但这样工作量太大,也不见得有多少效果。

    不过我还是要问一下,你是不想让正在使用你的程序的用户读出明文密码,还是不想让用户机器上的病毒之类的读出明文密码。前一种的话,真的没什么好办法,想想现在有多少大公司的软件都被盗版了;至于后一种,还是靠用户自己的保护意识吧。


    Not so sure what to write here.

    2015年8月13日 9:52
  • 如题,在我的winform程序中,有一段逻辑是通过des解密方法解密密码密文,从而得到明文,但是此时如果使用winhex工具读取内存就会搜索到解密后的明文密码,请问该如何解密或者保护解密之后的明文密码?谢谢。

    理论上无法保护。因为无论你怎么保护,都是要解密这个过程,都一定会通过内存作为交互媒介的。此时,费尽心机处心积虑的黑客总会想方设法去动态读入内存。

    最好的方法是保密的东西用WCF或者是WebService,让WinForm调用。加密解密的东西在服务端完成,直接传输一个结果到客户端验证即可(包括做软件序列号激活)。保密的算法这样黑客无法看到。


    ASP.NET Forum
    Other Discussion Forums
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download

    • 已标记为答案 bingliang 2015年8月31日 7:08
    2015年8月14日 6:59
    版主