2012-04-02 159 views
0

我正在開發即將發佈的Android應用程序。我的一些課程包含非常敏感的信息。通過使用Proguard,我混淆了整個源代碼,但後來遇到了大量的錯誤。現在我打算一個接一個地模糊我的代碼。如何混淆某個類並跳過大部分類? 謝謝。如何在Android上混淆某個類?

+2

可能有用的:http://stackoverflow.com/questions/4458909/how-to-use-java-annotations-to-guide-androids-proguard – Thilo 2012-04-02 13:33:28

+0

你明白這沒有任何意義,因爲.class和.dex文件是不同的。 dex是一個文件中的所有類,不可能僅僅改變一個類,因爲你還必須在代碼的其他地方更改所有對它的引用。 – 2012-04-02 14:49:13

+1

我的解釋可能有點奇怪。我打算混淆一個類,並找出可能發生的一些錯誤。如果安全,我會在下一個混淆過程中包含另一個類,並再次發現一些錯誤。我會重複這一步,直到我覺得它可以安全地發佈到市場上。 – KnightCavalry 2012-04-03 07:24:53

回答

0

我在混淆Java類中遇到了很多麻煩。事實上,yGuard(yGuard!= proguard,我知道)生成* .class文件,其中無法轉換爲* .dex。

如果您的代碼包含敏感數據,它聽起來像某種「security by obscurity」。也許你應該將敏感數據存儲在你的* .class文件中,而不是加密的屬性文件中。

+0

但是,可以反編譯.class文件並獲取解​​密密鑰。不管你做什麼,如果你依靠默默無聞的安全感,總會有辦法打破它。當然,Jes, – Marcelo 2012-04-02 13:46:04

+0

。這就是爲什麼我提到不將密碼存儲在* .class-文件中。如果您在代碼中存儲預先分享的祕密,它可能會被盜用。 – 2012-04-02 14:21:23

+0

是的,我會考慮你的建議@ckuetbach。但我仍然需要混淆代碼。我知道這對超級天才黑客來說無能爲力。但它應該防止任何明顯的逆向工程嘗試。 – KnightCavalry 2012-04-02 14:43:08

0

嘗試,如果你想混淆過程中某一類你可以用下面的代碼行這樣

使用。

語法:

-keep public class yourPackageName.youClassname { *; } 

實施例:

-keep公共類com.facebook.katana.MainClass {*; }