簡體   English   中英

需要有關逆向工程和反編譯的一些信息(Android App-JDK)

[英]Need some information about reverse engineering and decompile (android app - jdk)

我是android新手,對軟件工程知識也不多。 我想知道應該做些事情以使其更難於反編譯應用程序。 我對此進行了一些研究,然后遇到了這個調試器JEB,看來它可以在應用程序運行時監視某些內容。 但是我不知道使用它的好處,因為我沒有得到JEB監視的android應用程序的關鍵點。 例如:

在此處輸入圖片說明

右側似乎顯示了局部變量。 x / xh對一個整數意味着什么? 還是對於字符串值“ secretKey”來說字符串的值是認真的? 如果是這樣,那么我代碼中的所有變量都處於危險之中! 我認為也許一種嘗試是在代碼中創建大量假變量,以使真正的變量不容易被看到。 是否有意義? 還有其他泄漏,我應該嘗試防止,例如關於這個JEB的泄漏嗎? Proguard是否與此有關? 正如我所說的,我對soft-eng並不太了解,我也不了解proguard的實際作用。

我看到的另一件事是https://ibotpeaches.github.io/Apktool 如何使這種工具處理起來更加混亂?

最后一個問題,我用Java編寫代碼,但我認為我沒有機會開始本機編碼,但為了將來。 我見過有人說在本地進行編碼更安全。 它本身嗎? 還是有更多的圖書館來保持更高的安全性? 還是因為最終的apk結構?

抱歉,如果有些話顯得愚蠢。 提前致謝

您不應該嘗試阻止逆向工程,因為這樣做基本上是徒勞的。 相反,您應該設計您的應用程序,以最大程度地減少逆向工程的影響(即,不應在應用程序中包含密鑰或密碼之類的秘密數據)。

人們願意對應用程序進行逆向工程的工作量取決於它的重要性和受歡迎程度,而混淆會增加對應用程序進行逆向工程所需的工作量。 但是,如果您的應用程序變得流行,那么就不會有讓人感到困惑的事情,而如果它變得晦澀難懂,那么即使您將源代碼發布在Github上,也沒有人會費心去看它。 同樣,在極少數情況下,添加混淆會使人們為了挑戰而破解它。

除此之外,還存在混淆會給您帶來錯誤的安全感的風險。 任何人都可以設計自己無法破壞的系統,但是,如果您不是逆向工程專家,那么您想出的措施就不可能阻止那些失敗的人。 最好改為假設您應用中的所有內容都是公共信息,並進行相應的設計。

您可以使用一些強大的混淆器工具來保護代碼,例如: Bg + Anti Decompile / Reverse Java它具有許多保護選項:

  • 隱藏字符串值(在Java源代碼中保留一些敏感信息時有用,例如:“ Hello world”->ߤª)
  • 用Unicode字符混淆
  • 隱藏包裝名稱
  • 添加假代碼以捕獲反編譯器工具
  • 檢查資源字符串(在有人嘗試編輯APK資源時很有用)
  • ....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM