Mis*_*ith 5 literals hard-coding security-by-obscurity
在代码中隐藏文字值的主要现有方法是什么,因此只使用hexdumper或反编译器就不能轻易跟踪它们?
例如,而不是编码:
static final int MY_VALUE = 100;
Run Code Online (Sandbox Code Playgroud)
我们可以有:
static final int MY_VALUE = myFunction1();
private int myFunction1(){
int i = 23;
i += 8 << 4;
for(int j = 0; j < 3; j++){
i-= (j<<1);
}
return myFunction2(i);
}
private int myFunction2(int i){
return i + 19;
}
Run Code Online (Sandbox Code Playgroud)
这只是我们要做的事情的一个例子.(是的,我知道,编译器可以优化它并预先计算常量).
免责声明:我知道这根本不会提供任何安全性,但它使代码更加模糊(或有趣)进行逆向工程.这样做的目的只是为了强制攻击者调试程序,并在其上浪费时间.请记住,我们这样做只是为了好玩.
由于您试图隐藏在程序的简单转储中可见的文本,因此您可以使用某种简单的加密来混淆您的程序并隐藏该文本以防止窥探。
最后,您的代码将如下所示:
解密数据 = 解密Str(MY_ENCRYPTED_CONSTANT)
useDecrypted(解密数据)
无论您的密码有多强大,任何配备调试器的人都可以设置断点useDecrypted()并恢复明文。因此,密码的强度并不重要。然而,使用 Rot47 这样的东西有两个明显的优点:
| 归档时间: |
|
| 查看次数: |
355 次 |
| 最近记录: |