H2SO4T / ARES

Black-box tool that uses Deep Reinforcement Learning to test and explore Android applications
GNU Affero General Public License v3.0
70 stars 21 forks source link

Adb error - failed to access #21

Closed francescolupo closed 1 year ago

francescolupo commented 1 year ago

Hello, I am a Macbook pro owner with an Apple Silicon processor. I have tried to test ARES with various apks using Android Studio and an emulator with Android 9 API 28, but the tool fails to create files with Coverage information as the folder is empty. When running the tool, I get the following error: Broadcasting: Intent { act=intent.END_COVERAGE flg=0x400000 pkg=com.shazam.android } Broadcast completed: result=0 adb: error: failed to access 'path/to/ARES/rl_interaction/coverage/shazam-13-27-0-230420/SAC/0/18.ec': No such file or directory The command I use to launch the tool is as follows: python3 parallel_exec.py --instr_jacoco --list_devices "emulator-5554" --appium_ports "4270" --android_ports "5554" --path "apps" --timer 60 --internet --emu headless --platform_version 9.0 --iterations 1 --algo SAC --timesteps 1000 --trials_per_app 1 --save_policy

I would appreciate it if you could help me.

Thank you vary much.

H2SO4T commented 1 year ago

Dear @francescolupo, Thank you for your question. Unfortunately, the information you have provided is insufficient for me to provide a correct answer. Based on the information you have given, my initial assumption is that you may not have instrumented the application using a tool such as COSMO. Could you kindly confirm whether this is the case?

ps. I'm Italian, if you want we can also switch language

francescolupo commented 1 year ago

Grazie mille per la risposta. Si, in realtà non ho usato COSMO perché credevo che ARES pensasse a tutto e che bastasse inserire il parametro --instr_jacoco in fase di lancio del tool per instrumentare l'applicazione. Potresti fornirmi gentilmente gli step necessari per usare correttamente COSMO e per far si che ARES generi correttamente i file relativi alla Coverage?

Ti ringrazio anticipatamente per la disponibilità. Se preferisci, possiamo continuare la discussione per email.

H2SO4T commented 1 year ago

Figurati! Anzitutto per utilizzare COSMO devi avere il codice sorgente dell'applicazione da testare (questo è il requisito fondamentale). Poi scarichi la repo di COSMO da qui: https://github.com/H2SO4T/COSMO e segui i punti di installazione e utilizzo. A questo punto puoi buildare la tua app instrumentata con COSMO, installarlo sul dispositivo e testarlo con ARES.

Resto a disposizione nel caso ci fosse la necessità!

francescolupo commented 1 year ago

Vorrei farti un'ultima domanda per avere la certezza di aver capito. Quindi per poter testare ARES e la sua Coverage su un'app, devo avere a disposizione il codice sorgente dell'app altrimenti non posso farlo, dico bene? E se partissi da un'applicazione e la decompilassi, a quel punto potrei farlo? Ti faccio queste domande perché il mio obiettivo era quello di scaricare alcuni apk sui quali testare ARES e la sua Coverage, quindi voglio capire se sia fattibile.

H2SO4T commented 1 year ago

La coverage può essere monitorata utilizzando lo strumento di tua preferenza. Non dipende da ARES. Ad esempio, ARES è compatibile con strumenti come COSMO e EMMA. Puoi inserire una singola riga di codice in ARES per avviare l'intent e raccogliere la coverage dell'applicazione.

Lo strumento che ho sviluppato personalmente, COSMO, funziona solo con applicazioni di cui si dispone del codice sorgente e non può essere utilizzato su un'app decompilata.

Se hai solo un file APK a disposizione, puoi utilizzare un tool di strumentazione black-box come ACVTool (https://github.com/pilgun/acvtool). L'unica cosa che dovrai fare in seguito è modificare ARES per raccogliere la coverage secondo le specifiche richieste da ACVTool.