Solve an android app crawler problem
Budget: $10 – $30 USD
I have an android app on .apk format that i don't have the source code. The only thing i have is the smali code, decompiled from the apk file using apktool. I then explored the API endpoints the app accessed and used to make a crawler application using Python.
The problem: i need a firebase instance ID to make requests to the API the app uses, and this ID can only be used for maximum of 4 requests.
The app uses this deprecated class: https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceId and the app gets the method "getInstanceId" to return the instance ID and make the requests. I'm not a android developer, so i made some changes on smali code to send me this instance ID in an API i made for this purpose. My API then receives this instance ID and uses for 4 requests using the crawler to get the information i want. After these 4 requests, the app have to send another request to my API with a new instance ID.
I solved this problem using anbox with android running and the custom apk i built using the decompiled and modified smali. Then i used adb commands to control android and the app: when it needs a new instance ID, the adb commands opens the app, click on some buttons, then open a form, input 2 values, send the form and this tiggers the form data with the instance ID to be sent into my API endpoint. Then, the adb command clear the app data to generate another instance ID. I know this process is very ineficient, but i don't know how to improve it. I know it's possible.
What i need: optimize this process. I need to get a valid firebase instance ID from the app somehow and refresh it after i make 4 requests on their service using my crawler. I don't know if it would be possible, but my goal is to not have to use anbox or an android system to make this work. I don't know if it's possible to generate firebase instance ID from server side, using python or node.js code, even though i don't know the apk google credentials. If it isn't possible to make this using only back-end code and need the android system and apk running, i wish this instance ID to be sent to my API as soon as i open the apk, to cut short some steps.
The problem: i need a firebase instance ID to make requests to the API the app uses, and this ID can only be used for maximum of 4 requests.
The app uses this deprecated class: https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceId and the app gets the method "getInstanceId" to return the instance ID and make the requests. I'm not a android developer, so i made some changes on smali code to send me this instance ID in an API i made for this purpose. My API then receives this instance ID and uses for 4 requests using the crawler to get the information i want. After these 4 requests, the app have to send another request to my API with a new instance ID.
I solved this problem using anbox with android running and the custom apk i built using the decompiled and modified smali. Then i used adb commands to control android and the app: when it needs a new instance ID, the adb commands opens the app, click on some buttons, then open a form, input 2 values, send the form and this tiggers the form data with the instance ID to be sent into my API endpoint. Then, the adb command clear the app data to generate another instance ID. I know this process is very ineficient, but i don't know how to improve it. I know it's possible.
What i need: optimize this process. I need to get a valid firebase instance ID from the app somehow and refresh it after i make 4 requests on their service using my crawler. I don't know if it would be possible, but my goal is to not have to use anbox or an android system to make this work. I don't know if it's possible to generate firebase instance ID from server side, using python or node.js code, even though i don't know the apk google credentials. If it isn't possible to make this using only back-end code and need the android system and apk running, i wish this instance ID to be sent to my API as soon as i open the apk, to cut short some steps.
Related categories:
Business, Accounting, Human Resources & Legal
Mobile App Development
Android
Google App Engine