是否有可能將dll庫轉換回源代碼?是否有可能將dll轉換爲源代碼?
不是我想要做到這一點,但我需要外包我正在編寫的軟件的一些非關鍵部分,但我不希望其他人複製到目前爲止所有的一切。
相應的dll中的代碼不是整個代碼。我已經設法在庫中只包含必要的代碼,但我仍然不希望其他人複製我的代碼。
我應該擔心嗎?
是否有可能將dll庫轉換回源代碼?是否有可能將dll轉換爲源代碼?
不是我想要做到這一點,但我需要外包我正在編寫的軟件的一些非關鍵部分,但我不希望其他人複製到目前爲止所有的一切。
相應的dll中的代碼不是整個代碼。我已經設法在庫中只包含必要的代碼,但我仍然不希望其他人複製我的代碼。
我應該擔心嗎?
可能嗎?是。
簡單嗎?這取決於。
如果你已經在.NET中編寫你的DLL,decompilation是一個快照,使用像Reflector這樣的工具,除非你有你的代碼obfuscated。
即使這不是.NET代碼,它仍然是可能的,雖然更困難。如果您使用現有工具之一對代碼進行混淆,則可以使事情變得更加困難。通常,如果您將代碼(編譯或不編譯)給某人,他們將能夠從程序集/字節碼反編譯它,即使它被混淆了。
這並非總是那麼容易,而且通常會花費太多精力。這真的取決於你是多麼偏執狂,代碼對第三方有多寶貴。
沒有真正確定的攻擊者的保護。這可能需要幾年時間,但如果他們真的有決心,他們會想出來。
從編譯的代碼中恢復源代碼的過程稱爲decompilation,它可以與取決於編寫程序的語言更好或更壞的結果來實現。
爲了保護自己免受反編譯,你可以使用obfuscator它通過修改二進制文件使其更難反編譯。混淆器使用的技術的一個例子是用無意義的名稱(例如a001,a002,...)替換在二進制文件中可見的成員的名稱,以便反編譯代碼的意義不大。有些甚至使用這些名稱的關鍵字(例如for,while,...),這樣一個天真的反編譯器將產生甚至不能編譯的代碼。他們也可能使用其他技術,如加密字符串,以便在查看二進制文件時不可讀。
混淆不是完美的防禦。即使使用模糊處理,足夠有才華並且堅定的對手也許能夠恢復與原始源代碼類似的東西。
試着認爲你的代碼可以被任何人重寫,因爲一旦你開始在你的項目上承包商,這個想法就會被公開。
你有什麼,他沒有:想法如何使它的業務。如果你擔心他這麼做,向他提出NDA,你就不會有任何疑問。
所以我的建議是不要擔心技術在這裏。
通常更好的重寫從頭開始,如果它需要幾年..哎呀,我只是把一個開源庫從一種語言移植到另一種語言而感到非常沮喪。 – mpen 2010-10-14 22:59:12