gpt4 book ai didi

android - 从内存调试中隐藏 C 中的 char 数组值

转载 作者:太空宇宙 更新时间:2023-11-04 06:46:46 26 4
gpt4 key购买 nike

背景:

我有一个混淆的 C 代码。混淆只能保护算法逻辑,不能隐藏变量值不被动态分析。我想在内存调试中进一步隐藏一些值(例如,一个字符数组)。

平台:移动客户端(与远程服务器无关)

假设我有一个 secret 的字符数组:

char secret[15] = {"hide this value"};

是否可以通过这种方式隐藏这个值:

  • 对于每个元素 i,secret[i] = x1[i] XOR x2[i]
  • 只在内存中定义和存储char x1[ ]和char x2[ ]
  • 每次都需要用到secret[ ]时,调用x1[ ] XOR x2[ ]。所以通过内存调试(动态分析)无法找到secret[ ]

或者其他方式?

最佳答案

如果对手有能力自由地检查您程序的工作内存,例如通过调试器,那么在程序中就没有他们的 secret 。特别是,在内存中加密数据并不是可靠的保障,因为您必须解密才能使用它,此时它很容易被拦截。而且,解密 key 必须在内存中的某个位置,您的对手可以找到它,从而获得随意解密内存中加密数据的能力。

混淆代码也不是可靠的保护措施。它可能会减慢你的对手的速度,但凭借技能和/或好的工具,他们会及时找出什么是什么。事实上,假设您从可执行文件中删除调试符号并且不提供源代码,唯一可见的混淆是外部函数和变量名称(所以不要费心混淆任何其他内容)。

首先不要将敏感数据交给没有特权的人,以保护敏感数据。如果您将数据传送到不可信的设备或程序,那么您应该认为它已受到威胁。

关于android - 从内存调试中隐藏 C 中的 char 数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56981255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com