Hook Helper (후킹 도우미)
린엔진 플러그인 - Hook Helper
- 단순한 클릭 몇번으로 네이티브 함수를 후킹할 수 있는 기능입니다.
- Frida 스크립트를 짜는 방법을 모르는 초보자들도 손 쉽게 후킹할 수 있습니다.
- 스크립트 짜기가 귀찮거나 메모리를 보면서 동적으로 후킹할 때 유용한 기능입니다.
- 어드레스와 심볼을 입력하여 후킹 함수를 지정할 수 있습니다.
- 심볼을 후킹할 경우에는 라이브러리 이름과 심볼 이름을 적으면 됩니다.
- 라이브러리 주소 + 오프셋에 후킹하고 싶을 경우 "Set Offset" 체크 박스를 클릭한 뒤 심볼 이름에 오프셋 주소를 적으면 됩니다.
- "Loop Until Found"는 해당 라이브러리가 로드되지 않았을 경우 로드될 때 까지 기다린뒤에 후킹하는 옵션입니다.
- 후킹 Type은 총 5가지가 존재합니다.
[BackTracer]
- SO 내부 존재하는 함수에 린엔진의 네이티브 함수 Tracer 기능을 사용하면 이후 함수가 호출되었을때 누가 호출하였는지 해당 스레드의 스택을 추적 할 수 있습니다.
- 분석시에 해당 함수가 실제로 어느 시점에 호출되는지 확인할때 유용합니다.
- libc.so 내부 함수(심볼)에 어떤 라이브러리가 호출하였으며 오프셋까지 확인할 수 있어 분석에 용이합니다.
- ex) exit()함수에 Tracer 걸어서 어떤 라이브러리가 종료시키는지 확인이 가능합니다.
[Interceptor]
- 인자와 리턴값을 가로채서 어떠한 값으로 호출되었는지 확인할 수 기능입니다.
- 인자값의 개수를 지정하고 콤보박스에서 변수의 타입을 선택한 뒤 등록하면 호출되는 함수의 인자, 리턴값을 로그로 확인할 수 있습니다.
- 변수의 타입은 "%d, %x, %f, %s" 총 4가지로 구성되어 있습니다."
[Replace]
- 원하는 인자 또는 리턴값을 변경하여 호출하는 기능입니다.
- 인자 개수를 선택한 뒤에 변경하고 싶은 값을 입력하면 됩니다.
- 변수 타입에 맞춰서 값을 입력할 수 있으며, 입력하지 않은 경우 값을 변경(교체)하지 않습니다.
- 변수의 타입은 "%d, %x, %f, %s" 총 4가지로 구성되어 있습니다."
[NOP]
- 후킹한 함수를 호출하지 않고 바로 리턴합니다.
[Suspend]
- 후킹한 함수를 호출하지 않고 해당 스레드를 멈추게 합니다.
조건문이 필요한 복잡한 후킹 포인트 : Frida 스크립트 사용
빠르게 단순한 인자 확인 및 변경이 필요한 포인트 또는 동적확인 용도 : Hook Helper