Droidbot
Official Github Repo其實也說明得非常清楚,但在初次執行的時候可能會出現以下問題,按照 APP自動化全站爬取探索 ,只要修改./droidbot/app.py
的line 28就可以了
:::spoiler Execution Problem
$ droidbot -a ./base.apk/Mattermost.apk -grant_perm -script ./my_pass_login_script.json -keep_app
INFO:Device:disable minicap on sdk >= 32
Traceback (most recent call last):
File "d:\ntu\thesis\mitm framework\code\appcrawler\droidbot\droidbot\droidbot.py", line 96, in __init__
self.app = App(app_path, output_dir=self.output_dir)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "d:\ntu\thesis\mitm framework\code\appcrawler\droidbot\droidbot\app.py", line 28, in __init__
from androguard.core.bytecodes.apk import APK
ModuleNotFoundError: No module named 'androguard.core.bytecodes'
[CONNECTION] ADB is disconnected
WARNING:DroidBotIme:Failed to disconnect DroidBotIME!
Traceback (most recent call last):
File "d:\ntu\thesis\mitm framework\code\appcrawler\droidbot\droidbot\droidbot.py", line 96, in __init__
self.app = App(app_path, output_dir=self.output_dir)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "d:\ntu\thesis\mitm framework\code\appcrawler\droidbot\droidbot\app.py", line 28, in __init__
from androguard.core.bytecodes.apk import APK
ModuleNotFoundError: No module named 'androguard.core.bytecodes'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "\\?\C:\Users\berni\anaconda3\envs\mitmproxy\Scripts\droidbot-script.py", line 33, in <module>
sys.exit(load_entry_point('droidbot', 'console_scripts', 'droidbot')())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "d:\ntu\thesis\mitm framework\code\appcrawler\droidbot\start.py", line 145, in main
droidbot = DroidBot(
^^^^^^^^^
File "d:\ntu\thesis\mitm framework\code\appcrawler\droidbot\droidbot\droidbot.py", line 116, in __init__
self.stop()
File "d:\ntu\thesis\mitm framework\code\appcrawler\droidbot\droidbot\droidbot.py", line 191, in stop
if hasattr(self.input_manager.policy, "master") and \
^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'policy'
:::
# from androguard.core.bytecodes.apk import APK
from androguard.core.apk import APK
How to use
一般使用
$ droidbot -a <path to apk> -o <path to output>
:::warning
如果遇到任何出現寫入資訊錯誤或是decode出現錯誤的狀況,要直接看stack回推,並且把encoding改成utf-8,以autodroid為例是在./droidbot/device_state.py
的#63,加入encoding='utf-8'
, droidbot的忘記在哪裡改了,總之也是同樣的問題
def _save_important_view_ids(self):
_, _, _, important_view_ids = self.get_described_actions(remove_time_and_ip=False)
ids_path = self.device.output_dir +'/states_view_ids'
if not os.path.exists(ids_path):
os.mkdir(ids_path)
# if not isinstance(current_state, str):
# current_state_str = current_state.state_str
# else:
# current_state_str = current_state
important_view_id_path = self.device.output_dir +'/states_view_ids/'+ self.state_str + '.txt'
f = open(important_view_id_path, 'w', encoding='utf-8')
f.write(str(important_view_ids))
f.close()
:::