首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >证明归零

问证明归零
EN

Security用户
提问于 2016-11-17 02:06:24
回答 2查看 215关注 0票数 2

有什么方法可以证明程序在存在后不会在内存中留下密钥呢?

有些程序的设计是为了使敏感字段在使用后归零。如果您知道这些字段的值,则可以在程序存在后在内存中扫描它们,如果可以避免造成分段错误的话。

我想象过的一种方法是对操作系统进行黑客攻击,这样您就可以控制程序使用的相同内存。然后在内存中搜索字段值。假设田地足够长,假阳性就像中彩票一样。

如果这是重新发明车轮,请告诉我这个轮子是什么名字,或者如果我使这变得复杂。

当然,你不能证明它永远不会离开钥匙,但你可以证明它没有在特定的运行期间。只是寻找一个合理的测试开发人员可以用来检查。

EN

回答 2

Security用户

发布于 2016-11-17 03:47:17

在开发环境中,您只需要附加一个调试器,在退出之前中断,然后搜索内存。

我无法想象有什么好的理由在生产中这样做,所以这可能就足够了。

票数 1
EN

Security用户

发布于 2016-11-17 15:01:55

任何您控制的进程,您都可以转储内存,然后搜索字符串。

In *nix

在ServerFault 将linux进程的内存转储到文件中上有一个很好的问题,它提到了您可以使用的许多工具,例如,下面是如何使用gdb:

代码语言:javascript
复制
$ gdb --pid [pid]
(gdb) dump memory /root/output 0x00621000 0x00622000

然后可以使用strings工具搜索转储文件。

Windows环境下的

您可以从任务管理器获取任何程序的内存转储。似乎有很多方法来分析转储文件;一个快速的谷歌搜索找到了Windows (WinDbg):[1](https://msdn.microsoft.com/en-us/library/windows/hardware/ff538058(v=vs.85%29.aspx),[2](https://msdn.microsoft.com/en-us/library/windows/hardware/ff540507(v=vs.85%29.aspx) ))。您还可以在Visual [3]中打开转储文件。

小心:在内存

中,键有时会被混淆。

还请注意,您可能无法使用简单的ctrl+f在转储文件中找到密钥,因为聪明的应用程序将使用存储在进程内存中其他地方的位掩码或类似的技巧,通过XORing混淆它们。要真正证明一个程序没有把键留在内存中,你需要很好地了解这个程序。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/142842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档