...因此,浏览拆卸不会立即公开密码(称为静态变量)。例如,想象一个附加邮政编码的程序,该程序必须为资产开放,但撬动眼睛不容易访问。

我知道不可能完全隐藏或保护该拉链,但是我很好奇至少可以使用休闲窥探者的手段。

谢谢!

有帮助吗?

解决方案

不,但是您可以做一些事情来使它变得更加困难。

将密码存储为一系列数字,对它们进行一些计算以生成实际密码,将密码的一部分存储在图标等资源等中。

其他提示

如果您的程序是Windows程序,则只需使用“该程序不能以DOS模式运行”。作为密码。该字符串几乎在每个窗口中可执行。

我只有一半的开玩笑,因为它可能几乎与XOR-xor-the Password一样安全,该密钥在程序中的其他位置,并且将其保持零头痛。

简而言之,不,任何饼干都会在打开zip文件的函数上设置断点,然后从那里获取密码。

而不是实际密码存储密码的XOR加密版本为静态变量。当您需要使用它时,只需应用简单的XOR解密即可检索实际密码。

http://en.wikipedia.org/wiki/xor_cipher

一种解决方案是用另一个常数甚至另一个字符串XOR XOR静态密码。这将使您的密码之间分布在之间,但是需要组合许多零件才能将密码恢复。编译二进制的字符串未显示PW字符串。

#include <stdio.h>

char pw[8] = {124, 109, 127, 127, 123, 99, 126, 104};

int main(int argc, char** argv) {
  for (int i = 0; i < 8; i++) {
    pw[i] = pw[i] ^ 12;
  }
  printf("%s\n", pw);  // => 'password'
}

有多种方法可以保护数据免受随意检查的侵害,确定的对手是另一回事(只要问drm的人。)。

您可以使用从程序的某些数据中派生的另一个密码XOR密码,例如相对于结构/类的开始,字段(在包装结构/类中)的相对位置,或者也许使用一些“常数”数据(在接下来的89年中,当前世纪和千年是非常恒定的:-)),或者将某些字符从一个代码系转换为另一个角色,或者可能将某些数字转换为浮动或双倍(甚至是一些简单的部门) 2/3、3/5、5/7 in Double用作密码。请务必“强制”编译器不优化它们(可能是从其他“可测量”的事物中得出数字,例如某些字符串的长度)) 。尤其是第一个可能是最容易隐藏的:“测量”字段的相对位置很普遍。这些方法都无法在5分钟的黑客中幸存下来……他们只会防止“随意与六角编辑”进行防止。

好吧,为什么要存储它呢?为什么不具有第二个包装应用程序,即您的第一个基于XOR算法的加密?这样,根本不需要存储密码!

当然,这种方法要困难一些,但是我想说您不仅从使用此方法中受益匪浅,而且还从学习使它起作用所需的必要物品中受益。

显示带有另一个代码的图片 斜体 给用户并插入一个文本框,用户可以输入图片中写的代码。用图片中的代码XOR zip文件的密码。结果可以实现硬编码。该程序必须使用用户的输入来XOR进行硬编码代码,以获取zip文件的代码。可选地,您可以使用另一个单程代码验证输入的代码。

用perl脚本混淆密码。黑客仍然可以对机器代码进行反向工程...但至少您的密码在十六进制编辑器中并不明显。

obfuscate_password("my_password434");

sub obfuscate_password($) {

  my $string = shift;
  my @c = split(//, $string);
  push(@c, "skip"); # Skip Null Terminator
                    # using memset to clear this byte
  # Add Decoy Characters
  for($i=0; $i < 100; $i++) {
    $ch = rand(255);
    next if ($ch == 0);
    push(@c, chr($ch));
  }                     
  my $count1 = @c;
  print "  int x1, x2, x3, x4, x5;\n";
  print "  char password[$count1];\n";
  print "  memset(password, 0, $count1);\n";
  my $count2 = 0;
  my %dict  = ();
  while(1) {
    my $x = int(rand($count1));
    $y = obfuscate_expr($count1, $x);
    next if (defined($dict{$x}));
    $dict{$x} = 1;
    last if ($count2+1 == $count1);
    if ($c[$x] ne "skip") {
      #print "  $y\n";
      print "  $y password[x4] = (char)" . ord($c[$x]) . ";\n";
    }
    $count2++;
  }
}

sub obfuscate_expr($$) {
    my $count  = shift;
    my $target = shift;
    #return $target;

    while(1) {

       my $a = int(rand($count*2));
       my $b = int(rand($count*2));
       my $c = int(rand($count*2));
       next if (($a == 0) || ($b == 0) || ($c == 0));
       my $y = $a - $b;
       #print "$target: $y : $a - $b\n";
       if ($y == $target) {
          #return "$a - $b + $c";
          return "x1=$a; x2=$b; x3=$c; x4=x1-x2+x3; x5= +=x4;";
       }
    } 
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top