2011-08-11 45 views
0

我試圖尋找一種解決方案來使Ruby代碼更難讀。任何簡單的方法來隱藏一點Ruby代碼?

事實上,我對完全模糊代碼感興趣,但得到「一行* .rb文件」或"Pretty Numbers" on this link之類的東西應該被讚賞。

在發佈之前,我通過了幾個小時來找到一個解決方案,但無法獲得任何腳本,寶石或程序來轉換易於讀取的代碼,使其更難以理解爲「傻瓜」。

試過例如these ones但任何可以輕鬆完成整個工作。

+1

爲什麼要這麼做? – Arafangion

+0

@Arafangion因爲我通過「Ocra」gem庫發佈Ruby腳本,並且在運行時,我的腳本可以在Windows的臨時文件夾中完全訪問。 – cz3ch

+0

那麼,如果它完全可以訪問呢?爲什麼這是一個問題?無論如何,他們都可以複製它。 – Arafangion

回答

1
  • 更換所有變量,方法或類名1個字母的名字,就像abc
  • 你知道嗎DRY?算了吧。重複代碼的部分,使其更大,更難理解。嘗試以許多方式編寫相同的代碼。
  • 在大型表達式或計算中轉換簡單整數和字符串。
  • 定義額外的功能並在真實定義之前使用undef或定義現有功能。
  • 添加代碼之間什麼都不做的代碼,或者是執行某些操作的代碼,然後再解除它。
  • 將部分代碼移動到之前的某處並使用heredoc將此代碼轉換爲字符串。然後執行它應該在的位置。
  • 將所有內容合併到一行中,並忘記縮進。在指令中間插入新行後,嘗試用代碼或類似的東西繪製一個矩形。
  • 測試代碼。如果它停止工作,我很抱歉,你將永遠無法再讀它。

無論如何,只要在代碼中弄得一團糟。但它必須手動完成。

+0

好吧,那就是我所知道的......正在爲Sketchup尋求類似「Ruby Scambler」的事實或任何類似的東西;-) 我想我會簡單地將「CR」替換爲「;」獲得一個唯一的行文件。 – cz3ch

0

拼寫錯誤變量和方法名稱。不要wast個字符。在一個字符串

2

包封物代碼以陣列

array = [string] 

string = "1+2; sneaky('something'); 'will be hidden'" 

包封物字符串數組的內容轉換成二進制序列

array.pack('u') #=> "?<'50``\n..." 

複印&膏二進制序列在你的代碼中進行評估。

eval("?<'50``\n...".unpack('u').first) #=> 'will be hidden' 
相關問題