보안 공부/모바일 보안

nox를 활용한 frida attach 시 발생하는 오류 해결 방안

H.J.World 2024. 1. 30. 20:30
728x90
반응형

 

안드로이드 모바일 앱 분석를 위해 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 #모바일앱 # 취약점

728x90
반응형