※ 引述《Clangpp (Clang++)》之銘言:
: 另外還看到很多新手居然把重要參數寫在 #define (preprocessor)中...
: (同事的說法 因為編成binary後還是明碼
: 甚至可以直接開檔改 所以建議重要參數不要放在 preprocessor)
突然想到一個方便的小實驗可以驗證上面這個說法,
寫這樣一段小程式:
#include <stdio.h>
const char *password = "CrystalBall";
int main(void) {
printf("Password = %s\n", password);
return 0;
}
和
#include <stdio.h>
#define PASSWORD "CrystalBall"
int main(void) {
printf("Password = %s\n", PASSWORD);
return 0;
}
把他們 compile 成執行檔(假設叫 a.out),然後用這指令:
strings a.out | grep 'CrystalBall'
試試看不同的方法,哪一種可以讓簡單的文字搜尋指令搜尋不到...
這樣不用反組譯也可以快快樂樂看見密碼~~~
如果你有 binary editor (vim -b 就辦得到) 也可以用 editor 開啟檔案搜尋。