2012-04-06 33 views
0

好吧,我現在有點兒處於困境。在一個混淆Java庫的泡菜

我有一個java程序,我已經分裂成一個核心/外部分。

我整理了我的核心到一個java庫,外部代碼(將公開發布)可以參考。

但是,我不希望這個java庫的內容是可反編譯的。

所以我去找到一個很好的java混淆器。

我的情況有什麼複雜的是,我的Java庫是不完全模塊化 - 它引用的外部的代碼/改變狀態(是的,它是可怕的,但不管)

我已經嘗試了所有保費混淆器的演示( ZKM,allatori等),免費的,但他們要麼

  1. 有非常微弱的控制流混淆這正是我需要的,因爲到Java庫的/依賴不在罐子本身,而是引用的
  2. 停止仍然被引用。

有什麼建議嗎?

回答

0
  1. 如果沒有混淆器具有控制流混淆符合你的標準,那麼你將不得不寫自己的混淆或提交一個請求到現有的供應商,以提高他們的產品。

  2. 通過混淆器同時運行程序的外部和內部部分。但是要寫exclude rules來代表所有的外部代碼。您還應該爲內部代碼的公共API編寫排除規則。如果你的內部代碼沒有公共的API層,那麼你將會很難,因爲你的外部代碼將不得不通過混淆的名稱來引用你的內部代碼,這將使得非常難以維護並且很難閱讀外部源代碼。

+0

感謝您的有用評論! – user1318256 2012-04-06 22:05:59

2

混淆不會阻止反編譯。它始終可以反編譯。它只是幫助你的代碼在以後變得不可讀。混淆你的邏輯,保持接口不變。

+0

誠然,沒有混淆代碼是從反編譯的無風險。但是在分發之前我需要一定程度的反編譯。 – user1318256 2012-04-06 21:19:04

0

我第二ahanin的評論。

但是,如果你正在尋找一個混淆器,有一個非常強大的規則集的好混淆器是Proguard。它在Android空間中大量使用,代碼需要儘可能小(小)。

鏈接:Proguard

+0

是的,這是混淆器,有一個相當弱的邏輯流混淆 – user1318256 2012-04-06 22:06:58

+0

啊,太糟糕了。那麼,祝你的項目好運。 – 2012-04-06 22:10:31