2012-06-05 44 views
7

因此,我發佈了我的android應用程序,我對它進行了編程,應用了LVL,甚至更改了一些LVL代碼,但是發生了性行爲,我發現它使用稱爲Lucky Patcher的工具在某處破解。我不會問我該如何防止1點擊工具,因爲我猜想沒有單一的答案(除非你有一個想法,可以指向我)。如何從破解APK轉到java代碼? 1-click tool破解我的應用程序

我需要你幫忙弄清我的代碼是如何被破解的。我知道這個工具需要APK文件並刪除許可。現在考慮到,我怎麼可以把這個APK文件和反向工程回Java文件,看看該工具如何破解我的代碼(所以我修復它)

請幫我 感謝

+0

的可能的複製[有沒有辦法從APK文件中獲取源代碼?](https://stackoverflow.com/questions/3593420/is-there-a-way-to-get-the-source-code-from-an- apk-文件) –

回答

1

在Proguard之後,沒有辦法將代碼反編譯爲人類可讀的Java。
雖然它使逆向工程過程變得更加困難,但聰明的反向器找出隱藏的算法並非不可能。

至於工具,
使用android-apktool來反編譯smali並提取所有編碼的xml資源。
使用dex2jar到的Dalvik翻譯成罐子 終於jd-gui看到所產生的反向java代碼

+0

謝謝。我有映射種子和from.proguard,我可以用它們去除它的權利? – Snake

+0

這與「scorpiodawg」所寫的評論相同,只是他給出了一篇關於它的帖子的鏈接。請閱讀帖子。 –

1

盜版是一個大問題,我不認爲任何平臺或操作系統都可以得到完全的保護。

然而,谷歌已經取得了一些教程就反對它的保護,例如: http://www.google.com/events/io/2011/sessions/evading-pirates-and-stopping-vampires-using-license-verification-library-in-app-billing-and-app-engine.html

也: http://android-developers.blogspot.co.il/2010/09/securing-android-lvl-applications.html

我認爲,你也可以把一些複雜的使用障礙,而不是Java℃。

也如谷歌建議的那樣,考慮使用不同的方法:使核心功能免費,並通過應用內結算使剩下的功能成爲可購買的。您還可以添加廣告和功能,以便通過應用內結算功能將其刪除。

+0

謝謝我知道,但正如我在我的帖子中說的,我想保護我的程序免受1點擊工具。我所實施的是從帖子,我希望有一些例子,使其更容易理解 – Snake

+0

以及你可以嘗試它,做試驗和錯誤,直到你找到一種方式,它不會成功地破解你的應用程序。然而,直到應用程序的開發人員能夠找到如何克服它,只是時間問題。 –

1

有一個關於如何從DEX文件恢復到Java源去了很多信息here的。另外,你看看this blog post哪些解決了許多保護源代碼的方法?

+0

好的快速回答,但我更願意看到。這裏的一些信息 – Snake

+0

夠公平的,我不想重複在其他兩個帖子中很好地捕獲的所有內容。 – scorpiodawg

+0

我希望我能接受兩個答案.. +1 :) – Snake

1

我在想這件事,看起來好像如果你真的想要保護你的應用程序免受黑客攻擊,那麼真的只有一種方法可以做到這一點。您可以實施各種各樣的方法來確保您的應用程序按照Google文章中的描述進行了授權和付費,但只需要反編譯應用程序並找到代碼位置,然後將其註釋掉或更改功能永遠回報真實。

取而代之的是,實現jni/ndk中所需的應用程序的某些部分,並檢查該代碼中的驗證。它不一定是非常複雜的代碼,但你不能只是把一些東西像函數(例如checkValidity),因爲用戶可以輕鬆評論調用ndk的java調用。相反,您應該對您的ndk進行一些調用,以實際執行一些對您的應用程序運行而言不重要的內容 - 用戶不能僅僅使用定義的函數進行註釋或切換,而是執行相同的操作。從ndk代碼中,對應用程序的完整性/許可證進行驗證,以及是否無法終止應用程序或您需要執行的任何操作。

爲了繞過這個黑客需要重新實現ndk代碼或逆向工程它..這應該是更復雜和不值得。

這顯然不是一個簡單的解決方案,但仍不能保證你的應用程序從未被黑客攻擊,但它應該是更難比其他方法打破..

+0

Awsome。謝謝你的答案。我真的很喜歡閱讀它,我認爲這是很棒的方式。通常,單擊程序會更改來自google的標準LVL庫,所以我想我需要將其更改爲包含JNi/NDK。你有沒有一個教程的例子/鏈接如何在android中實現jni/ndk?謝謝 – Snake

+0

如果你遵循這些指導方針,通過1點擊程序失敗去除LVL可能不是太難。但是,要防止一個好的黑客能夠很好地理解代碼,並且能夠用幾個小時的時間手動刪除許可證驗證碼,這會很困難。 ..您可以隨時嘗試查看是否可以在向市場發佈產品之前將其自己的代碼與他們進行逆轉。 –

0

我個人認爲混淆{Proguard的, Dexguard}和本機{.so}是正確使用的非常有效的方法。

這無疑阻礙了缺乏經驗的球員的,絕對的生活變得複雜,甚至有經驗的球員的

不要簡單地複製/粘貼谷歌Android例子代碼....