2009-04-27 45 views
0

你在混淆人羣中使用過的一些常見做法是什麼?我覺得有意思的是,對於不允許重寫的項目,這將是解決問題的更快,最有效的解決方案。通過混淆實踐的通用設計?

+0

我不明白你的問題。混淆和想要重寫某些代碼之間的聯繫是什麼? – 2009-04-27 19:32:50

+0

我的觀點是關於代碼是完全破壞的代碼,它使它變得模糊,我只想聽聽其他人的樂趣。 – 2009-04-27 19:34:37

+0

可怕的事情是這些模式中的大部分都出現在產生這個問題的項目中。 – 2009-04-27 22:20:56

回答

3

我的收藏夾總是圍繞着變量......在代碼中留下不再使用的變量,然後給它們所有沒有意義的名稱。當然,如果你真的想混淆,你必須小心避免幾乎所有的約定。所以,最好的方法是使用兩個相似的變量,一個名爲myVar1,另一個名爲myVarOne。像這樣的東西...

另一個是包括只在代碼中可見的未使用的控件。我盯着一個ASP.NET網站,試圖弄清爲什麼FormView被放入它(好像沒有答案)。

1

我們有一個人,我們在一個文件夾call/kensington中使用商店文件來「隱藏」它們。它只包含了一些他不想看到的XML文件,並認爲人們不會在那裏看。

0

我和一位程序員一起工作,他曾經寫過非常複雜的條件,遇到時會調用一個簡單的系統。他在整個應用程序中都做過這麼幾次。仍然不知道爲什麼....

+1

副作用,也許? – strager 2009-04-27 20:06:49

1

沒有或無用的註釋在代碼中沒有有用的文檔。

3

我曾經研究過perl代碼,其中作者決定讓大多數subs接收一個散列作爲變量,並返回與添加或刪除數據相同的散列。基本上,一個全局哈希用於通過不同的代碼路徑傳遞數據。

它看起來是這樣的:

my $hash =(); 

$hash->{'CUSTID'} = 1001; 
$hash = GetAccounts($hash); 

if ($hash->{'AccountTotal'} > 100) { 
    $hash = getTotals($hash); 
    $hash->{'Acct_Sbkt_Marker'} = 'R1'; 
    $hash->{'Acct_Invr_Marker'} = 'BT'; 
    $hash = removeInvalidAccount($hash); 
} 

爲了這一天,我想不出什麼設計模式,他是想用這個來實現。

我記得$hash會排得很好。

0

在那裏,我在想,設計良好的代碼應該自行站起來閱讀,而不是破譯。

我明白,鼓勵關注混淆的人在其他環境中使用類似dotfuscator及其等價物的工具。儘管讓代碼更難以反編譯,但不僅僅是讓它變得很難處理,而是讓人感到困惑。

爲什麼有人會故意設計可怕的代碼(除了演示陷阱)超出了我。