App Spiare cellulare
Monitora chiamate, SMS, GPS, fotocamera, foto, video, Whatsapp, Facebook, ecc.
Infatti oltre ad analizzare i principi di implementazione dei linguaggi java come le classi interne java e le enumerazioni, è utile anche in alcuni scenari specifici, ora generalmente si fa modificando smali, ma si può fare anche in base al bytecode., Questo articolo si basa sulla precedente analisi java bytecode, quindi viene discusso solo il metodo bytecode.
Molti giochi stand-alone, e anche alcuni giochi online, eseguono le operazioni logiche in locale.Il server riceve solo i risultati delle operazioni caricati dal client.Ci sono anche alcune applicazioni di ricarica, infatti le funzioni sono tutte nel codice locale, solo Ma è per giudicare se c'è un pagamento e, se c'è un pagamento, verrà visualizzata la voce della funzione.
Se possiamo modificare il suo codice e cambiare il risultato del caricamento o il giudizio se pagare a ciò che vogliamo, possiamo fare quello che vogliamo.
decompilare
Per modificare la logica del codice dell'applicazione, dobbiamo prima analizzare quale sia la logica del codice originale.Tuttavia, poiché il codice dell'applicazione è proprietà privata di ciascuna azienda, a meno che il codice non sia trapelato, generalmente non possiamo ottenerlo.Quindi in questa volta possiamo usare solo tecniche di decompilazione.
App Spiare cellulare
Monitora chiamate, SMS, GPS, fotocamera, foto, video, Whatsapp, Facebook, ecc.
Se vai su Internet per cercare la tecnologia di decompilazione di apk, probabilmente troverai i seguenti metodi:
- Usa lo strumento apktool per estrarre l'apk
- Usa lo strumento dex2jar per convertire i file dex ottimizzati per Android in classi java
- Usa lo strumento jd-gui per visualizzare il codice java nella classe
Un'operazione così ingombrante è in realtà obsoleta.Introdurrò uno strumento operativo stupido con un clic per tutti.
jadx è uno strumento di decompilazione Android open source, il suo codice è ospitato su github, puoi scaricarlo e usarlo. L'utilizzo è molto semplice, dopo averlo scaricato, decomprimilo, quindi entra nella directory bin per eseguire jadx-gui (linux/mac ) o jadx-gui.bat (windows), puoi avviare un'interfaccia visiva, quindi fare clic su "File - Apri" e selezionare l'applicazione che vogliamo decompilare, puoi vedere il codice nell'apk
Un'applicazione demo viene qui decompilata e MainActivity.onCreate giudica una variabile flag, quindi si apre Toast. Quando installiamo questo apk e lo eseguiamo, possiamo vedere il pop up del brindisi: "hello world!"
Altre applicazioni sono simili, puoi visualizzare il loro codice in questo modo. Tuttavia, le applicazioni rilasciate ufficialmente generalmente eseguono operazioni di offuscamento. A questo punto, il nome della classe, il nome del metodo e il nome della variabile del codice che decompiliamo ed elaboriamo diventeranno a, b, c è un carattere privo di significato.
Ma solo il nome è cambiato, la logica di esecuzione è esattamente la stessa, quindi finché sei abbastanza attento, puoi ancora capire la sua logica del codice.
Jadx ha una potente funzione in grado di esportare il progetto gradle, fare clic su "File/Salva come progetto Gradle" per esportare il progetto gradle, quindi modificare la struttura della directory, è possibile utilizzare Android Studio per aprire il progetto e modificare e modificare il codice.
Se la compilazione ha esito positivo dopo la modifica, il nostro scopo è stato raggiunto e possiamo fare quello che vogliamo, ma questo progetto ha un'alta probabilità di non riuscire a compilare correttamente e ci sono molti strani errori.
Successivamente, ti porterò a decifrare questo apk passo dopo passo, a modificarne la logica, non a giocare a "ciao mondo!" ma a giocare a "ciao java".
Modifica il bytecode dell'applicazione
Possiamo usare jadx per analizzare facilmente la logica del codice, ma se la ricompilazione fallisce, dobbiamo andare in un altro modo.
Ecco il modo per modificare direttamente il bytecode. Se si procede in questo modo, non ci saranno operazioni stupide da utilizzare. Procediamo passo dopo passo onestamente
1. Decomprimi l'apk
- apk è in realtà un pacchetto compresso zip, possiamo cambiarne il suffisso in.zip e quindi decomprimerlo direttamente
- Mettiamo le cose decompresse nella directory app-release-unsigned:
2. Converti dex in jar
- Sappiamo tutti che la macchina virtuale Android non è una normale macchina virtuale java, non può eseguire direttamente file di classe java e deve essere ottimizzata in file dex.
- Quando modifichiamo il bytecode, dobbiamo riconvertirlo.Qui utilizziamo la funzione dex2jar dello strumento dex-tools:
- Qui introduco l'uso dei comandi solo sotto Linux, non su Windows.In effetti, è una versione simile che usa.bat, puoi cercare da solo.
- Converti classi.dex in file jar:
- ~/dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh classes.dex
- Genererà il file classes-dex2jar.jar:
3. Modificare il bytecode della classe
- In effetti, il file jar è anche un pacchetto compresso zip, possiamo comunque modificare direttamente il suffisso in zip e quindi decomprimerlo per trovare MainActivity.class
- In questo momento, possiamo utilizzare il comando javap menzionato nell'articolo precedente per visualizzare il codice all'interno:
- javap -c MainActivity
- E possiamo vedere che se continuiamo a eseguire, emetterà ciao mondo! e se saltiamo a 32 righe, emetterà ciao java!
- Qui possiamo cambiare direttamente if_icmpne in if_icmpeq, saltare alla riga 32 quando è uguale, altrimenti continuare ad eseguire, quindi il prompt originale "hello world!" diventerà "hello java!"
- Se apri il file di classe direttamente con un editor, ci sono alcuni valori binari in esso.
- Allora come lo modifichiamo?
- Qui useremo un altro strumento jbe, il nome completo è java bytecode editor
- Dopo il download, decomprimilo, entra nella directory bin e usa il seguente comando per aprire l'interfaccia grafica:
- java ee.ioc.cs.jbe.browser.BrowserApplication
- Apri MainActivity.class nell'interfaccia grafica e trova il nostro codice MainActivity.onCreate
- Quindi fare clic sull'opzione Editor di codice per modificare il bytecode, qui cambiamo if_icmpne in if_icmpeq, quindi facciamo clic su Salva metodo:
- Questo completa la nostra modifica logica
4. Riconfezionare dex
- Successivamente riconfezionare l'apk, prima comprimere la classe in uno zip, prestare attenzione alla struttura della directory:
- Quindi cambia il suffisso in jar e usa jar2dex per generare dex:
- ~/dex-tools-2.1-SNAPSHOT/d2j-jar2dex.sh classi-dex2jar.jar
- Quindi sostituisci l'originale classes.dex con il dex generato, quindi elimina tutti i file temporanei appena generati, come le directory classes-dex2jar.zip e classes-dex2jar
5. Elimina le informazioni sulla firma
- Generalmente, le applicazioni che otteniamo sono applicazioni firmate. Dopo che l'applicazione è stata firmata, le informazioni di verifica delle risorse e dei codici verranno salvate nell'apk. Se modifichiamo il file dex, la verifica avrà esito negativo, quindi l'apk non può essere installato. di.
- Quindi dobbiamo eliminare la firma originale.Il metodo specifico è eliminare i tre file nella directory META-INF:
- CERT.RSA
- CERT.SF
- MANIFEST.MF
6. Riconfeziona l'apk
- Successivamente, lo stesso file compresso genera un pacchetto compresso zip, prestare attenzione alla struttura delle directory:
- Infine, cambia il suffisso zip in apk e il nostro apk è impacchettato
- Poiché il nostro apk riconfezionato ha eliminato le informazioni sulla firma, se è installato direttamente, non riuscirà e dobbiamo firmarlo nuovamente.
- Puoi utilizzare il comando seguente per creare alias come android.keystore e il nome del file è anche il file della firma di android.keystore
- keytool -genkeypair -alias android.keystore -keyalg RSA -validity 400 -keystore android.keystore
- Dopo aver premuto invio, ti consentirà di inserire alcune password, informazioni sullo sviluppatore, ecc. E dopo il completamento otterrai un file android.keystore
- Quindi utilizziamo Android.keystore ottenuto per firmare nuovamente l'app:
- jarsigner -keystore android.keystore -signedjar release.apk app-release-unsigned.apk android.keystore
- Ottieni il release.apk firmato, installiamolo ed eseguiamolo per vedere che il brindisi è diventato "ciao java!".