lucapiccolboni / crylogger

CRYLOGGER: Detecting Crypto Misuses for Android and Java Apps Dynamically
MIT License
149 stars 13 forks source link

Analysis gets stuck in pinning step #9

Open tausiq opened 3 years ago

tausiq commented 3 years ago

After few successful apps analysis the process either fails in pinning step or gets stuck in pinning step.

shahab-Precision-T1700 2021-07-12 13-37-44

When the process is stuck in pinning step the emulator displays a blank/white screen

shahab-Precision-T1700 2021-07-12 13-40-53

I think this is a limitation of the emulator itself and may not be solvable from project end. I am wondering if you faced similar issue and if yes, how did you deal with it?

Right now I am restarting the emulator and then re-execute run.py. For a large number of app analysis this is not a suitable solution.

To overcome this, I am planning to execute multiple emulators and parallel the analysis process. Multiple emulators cannot be run from same source I think, I got the following error,

emulator: ERROR: There's another emulator instance running with the current AVD '<build>'. Exiting...

How about I copy crylogger source into multiple location and execute emulators from each of them but pointing work_dir to the same location. Do you foresee any potential issues with this idea? Thanks!

lucapiccolboni commented 3 years ago

Hi,

I remember that when I was using the emulator I was able to successfully execute several applications without the need of rebooting the emulator too frequently. From time to time, a reboot of the emulator might be necessary as you mentioned.

Does this issue always occur with the same application? Maybe you can try to exclude the applications for which the pinning fails and see if the next run (of the remaining applications) works properly. Some applications might not work properly on the emulator for a variety of reasons.

Regarding the question about multiple emulators, I think you can clone the repository in multiple locations and run them in parallel, if needed. When you run them, it should associate a different ID, which should be passed to run.py. One problem I can see is that the emulator is heavy to run so this solution might not be feasible on some machines.

Thanks