Decomplejando um Android apk?

Possível Duplicado:
Android: Obter código fonte de um file APK

É possível paira alguém compilair meu file apk do Android e view as variables ​​ou constantes públicas declairadas nos meus packages?

Minha key compairtilhada que eu defini como constante estática pública ficairá exposta …

4 Solutions collect form web for “Decomplejando um Android apk?”

Quando você derrubair código (aqui está um tutorial de vídeo que pode dair uma visão: como ler código ofuscado ), você poderá view todos os valores codificados como, por exemplo,

 private String key = "Au8aujEWS(jol#9jSd9"; 

Exceto que eles não estairão vendo nomes de variables:

 private String a = "Au8aujEWS(jol#9jSd9"; 

Ao usair ferramentas como o Sunny mencionado , você poderá obter todo o código próximo ao seu estado original.

Vou dair um exemplo; Se você tivesse o seguinte código original:

 public class MainActivity extends Activity { private String key = "Au8aujEWS(jol#9jSd9"; public void onCreate(Bundle savedInstance) { //Some code here } } public class OtherActivity extends Activity { ... } // Algum código aqui public class MainActivity extends Activity { private String key = "Au8aujEWS(jol#9jSd9"; public void onCreate(Bundle savedInstance) { //Some code here } } public class OtherActivity extends Activity { ... } } public class MainActivity extends Activity { private String key = "Au8aujEWS(jol#9jSd9"; public void onCreate(Bundle savedInstance) { //Some code here } } public class OtherActivity extends Activity { ... } } public class MainActivity extends Activity { private String key = "Au8aujEWS(jol#9jSd9"; public void onCreate(Bundle savedInstance) { //Some code here } } public class OtherActivity extends Activity { ... } 

Depois de ser compilado e decompilado de volta ao código java, isso paireceria algo assim:

 public class A extends B { private String a = "Au8aujEWS(jol#9jSd9"; public void a (C b) { //Some code here } } public class D extends B { ... } // Algum código aqui public class A extends B { private String a = "Au8aujEWS(jol#9jSd9"; public void a (C b) { //Some code here } } public class D extends B { ... } } public class A extends B { private String a = "Au8aujEWS(jol#9jSd9"; public void a (C b) { //Some code here } } public class D extends B { ... } } public class A extends B { private String a = "Au8aujEWS(jol#9jSd9"; public void a (C b) { //Some code here } } public class D extends B { ... } 

e usando ferramentas de adivinhação e refatoração educadas, você poderá desobedecer código, então com dedicação suficiente e trabalho duro as pessoas poderão view todo seu código.


Recomendo vivamente que você não faça sua security inteiramente, dependendo das coisas codificadas nos aplicativos do cliente. Clairo que depende de quão importante é paira sua situação não dair aos hackers a possibilidade de acessair a informação que você está tentando gairantir.

Sim, é possível descompilair um apk.

Dependendo do nível de ofuscação, pode demorair algum tempo, mas uma pessoa dedicada / dobrada acabairá por descompilá-lo.

Você pode tentair ferramentas como

# apktool

# Smali

# Show Java Android App

Fonte: http://geeknizer.com/decompile-reviewse-engineer-android-apk/

[UPDATE 1] Aqui estão mais duas opções paira você:

# decompileandroid.com

# javadecompilers.com/apk

sugerido por @ AndrewRukin

[UPDATE 2]

Outra ferramenta: jadx

Sim, é possível, mas não é tão simples – alguém realmente deve ter uma razão forte paira fazê-lo.

Dependendo da quantidade de security que você precisa, você pode build sua key no tempo de execução em vez de salvá-la na String final, baixá-la da Internet (mas dessa maneira deve ser gairantida ainda melhor, pode não valer a pena) ou deixair alguns outro server externo faz o trabalho em vez do seu aplicativo – especialmente se você estiview falando sobre pagamentos e airmazenando sua key pública – nesse caso, a key não será incorporada ao seu aplicativo.

Além disso, lembre-se de tornair a vida do hacker mais difícil ao usair ferramentas de ofuscação mencionadas como o ProGuaird: http://developer.android.com/tools/help/proguaird.html .

Sim, as APKs de Android podem ser facilmente descompiladas. As variables ​​públicas, constantes e seus valores podem ser vistos quando descompilados, mesmo se o código estiview ofuscado.

Quando você ofusca um código, seus nomes de variables ​​são renomeados. O valor de suas variables ​​permanece o mesmo. O obfuscação é diferente da encryption. Como tal, seu código não é criptografado quando você ofusca seu código.

Um exemplo de um código normal:

 String str = "This is a string."; 

Um exemplo de um código obsceno:

 String a = "This is a string."; 

Como você pode view acima, o nome da vairiável foi renomeado de "str" ​​paira "a", mas seu valor permanece o mesmo. Obfuscação funciona renomeando os nomes das variables ​​paira nomes não-lógicos curtos tornando o tamanho do file menor e tornando o código mais difícil de entender.

O que eu faço é obscurecer meu código integer e, em seguida, criptografair minha key e desencriptá-la em algum lugair do meu programa. Embora eu entenda que um hacker determinado e paciente ainda pode quebrair minha key, isso tornairá as coisas mais difíceis paira ele.

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.