안드로이드 모바일 앱 분석를 위해 nox를 사용하여 frida 후킹 시 발생하는 오류 해결 방안
사용하는 frida attach 코드는 아래와 같음
import frida, sys
import argparse
def on_message(message, data):
if message['type'] == 'send':
print(message['payload'])
elif message['type'] == 'error':
print(message['stack'])
def get_message_from_js(message, data):
print(message['payload'])
def get_script(script_name):
with open("./"+script_name, 'r') as f:
script = f.read()
return script
help_script = """
HELP
"""
parser = argparse.ArgumentParser(description=help_script)
parser.add_argument('--script', required=True, help='JS File to Inject')
parser.add_argument('--pid', required=True, help='PID')
args=parser.parse_args()
device=frida.get_usb_device()
process_session=device.attach(int(args.pid))
script = process_session.create_script(get_script(args.script))
script.on('message', on_message)
script.load()
sys.stdin.read()
위에 frida attach 코드는
on message 핸들러를 사용하여 script를 삽입, 실행되어있는 앱에 대한 PID값을 확인하여
attach 하는 코드이다.
하지만 명령어 실행 시 아래와 같은 에러가 발생하는 것을 확인할 수 있다.
C:\Users\***\Desktop\hooking>python And_injector_attach.py --script attach.js --pid 12767
Traceback (most recent call last):
File "C:\Users\***\Desktop\hooking\And_injector_attach.py", line 28, in <module>
device=frida.get_usb_device()
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\***\AppData\Local\Programs\Python\Python311\Lib\site-packages\frida\__init__.py", line 137, in get_usb_device
return get_device_manager().get_usb_device(timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\***\AppData\Local\Programs\Python\Python311\Lib\site-packages\frida\core.py", line 1170, in get_usb_device
return self.get_device_matching(lambda d: d.type == "usb", timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\***\AppData\Local\Programs\Python\Python311\Lib\site-packages\frida\core.py", line 86, in wrapper
return f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^
File "C:\Users\***\AppData\Local\Programs\Python\Python311\Lib\site-packages\frida\core.py", line 1193, in get_device_matching
return Device(self._impl.get_device_matching(lambda d: predicate(Device(d)), raw_timeout))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
frida.InvalidArgumentError: device not found
위와 같은 에러 확인..
frida server도 실행되어있는 걸 확인했지만
device를 찾지 못하는 이유로 확인 해보니
frida hooking 코드 내 존재하는
device=frida.get_usb_device() 해당 코드를
-> device=frida.get_usb_device(1) 으로 변경하여 사용
예전에 다른 작업 했을 때 실기기가 아닌 애뮬레이터 사용 시 usb device 붙일때 숫자를 넣어서 했던게 생각나서 확인해보니.. 오류 해결
#후킹 #프리다 #frida #attach #모바일앱 # 취약점
'보안 공부 > 모바일 보안' 카테고리의 다른 글
드로저(drozer) 사용법 - 앱 패키지 정보 확인 (0) | 2024.02.02 |
---|---|
모바일 앱 취약점 진단 드로저(drozer) 설치 및 세팅 방법 (1) | 2024.01.31 |
안드로이드 필수 구성 요소 (0) | 2024.01.29 |
iOS 정적분석을 위한 바이너리 추출 (0) | 2023.11.28 |
Smail code 타입 및 코드 예시 (1) | 2023.09.11 |