Unity3D Audio Grabber
design
Unity3D is tested on version 4.6
Jungsoo Nam
namjungsoo@gmail.com
2015/03/17
FMOD Ex
• Libunity.so uses FMOD Ex statically(with .c sources or .a
archive) linked.
• NOT uses libfmodex.so
• NOT will be applied by function hooking with Elf32_Ehdr like
eglSwapBuffers()’s method.
• C++ based library, but C wrapper classes.
• C functions can be hooked.
IDA analysis – libunity.so
• ONLY Imports tab’s functions can be hooked. FMOD’s are in
Exports tab. (Function pointers are NOT in imports entry
table.)
FMOD hooking
• FMOD C API hooking is essential.(libkamcordaudio.so does like
this)
• Getting/sharing FMOD system object is important for interoperating
AudioGrabber with Unity3D FMOD audio.
• So we have to hook FMOD_System_Create(FMOD_SYSTEM** system)
• How to hook FMOD?
• Find another entry table.(exports table)
• In VideoGrabber, we found imports table.(libunity.so imports libGLES*.so function)
• Next we have to find exports table.(libunity.so exports some functions to client)
• Or use “dlsym()” again.
• orig_FMOD_System_Create = dlsym(RTLD_DEFAULT,
"FMOD_System_Create");
• LOGD("FMOD_System_Create: 0x%x", orig_FMOD_System_Create);
Final AudioGrabber design
• AudioGrabber will be like below:
• Link libfmodex.so.
• Hook some FMOD functions and get FMOD system object.
• Use our FMOD functions in libfmodex.so, manipulate FMOD audio
and get audio buffer data.
• Put audio buffer data into MediaCodec.
• Mix and encode video and audio to .MP4
Thank you

More Related Content

PDF
OpenCV祭り (配布用)
PPT
NVIDIA CUDA
PPTX
AGDK tutorial step by step
PPTX
Android Grabber Module Proposal
PPTX
Android OpenGL ES Game ImageGrabber Final Report
PPTX
13th kandroid OpenGL and EGL
PPTX
Android RenderScript
PPTX
OpenGL ES EGL Spec&APIs
OpenCV祭り (配布用)
NVIDIA CUDA
AGDK tutorial step by step
Android Grabber Module Proposal
Android OpenGL ES Game ImageGrabber Final Report
13th kandroid OpenGL and EGL
Android RenderScript
OpenGL ES EGL Spec&APIs

Recently uploaded (20)

PDF
DP Operators-handbook-extract for the Mautical Institute
PDF
Getting started with AI Agents and Multi-Agent Systems
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
Zenith AI: Advanced Artificial Intelligence
PPT
What is a Computer? Input Devices /output devices
PPTX
Web Crawler for Trend Tracking Gen Z Insights.pptx
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
Hindi spoken digit analysis for native and non-native speakers
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
DOCX
search engine optimization ppt fir known well about this
PDF
A novel scalable deep ensemble learning framework for big data classification...
PPT
Geologic Time for studying geology for geologist
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PDF
Developing a website for English-speaking practice to English as a foreign la...
DP Operators-handbook-extract for the Mautical Institute
Getting started with AI Agents and Multi-Agent Systems
Final SEM Unit 1 for mit wpu at pune .pptx
Zenith AI: Advanced Artificial Intelligence
What is a Computer? Input Devices /output devices
Web Crawler for Trend Tracking Gen Z Insights.pptx
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
NewMind AI Weekly Chronicles – August ’25 Week III
Hindi spoken digit analysis for native and non-native speakers
Assigned Numbers - 2025 - Bluetooth® Document
Taming the Chaos: How to Turn Unstructured Data into Decisions
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
search engine optimization ppt fir known well about this
A novel scalable deep ensemble learning framework for big data classification...
Geologic Time for studying geology for geologist
Enhancing emotion recognition model for a student engagement use case through...
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Developing a website for English-speaking practice to English as a foreign la...
Ad
Ad

Unity3D Audio Grabber design

  • 1. Unity3D Audio Grabber design Unity3D is tested on version 4.6 Jungsoo Nam namjungsoo@gmail.com 2015/03/17
  • 2. FMOD Ex • Libunity.so uses FMOD Ex statically(with .c sources or .a archive) linked. • NOT uses libfmodex.so • NOT will be applied by function hooking with Elf32_Ehdr like eglSwapBuffers()’s method. • C++ based library, but C wrapper classes. • C functions can be hooked.
  • 3. IDA analysis – libunity.so • ONLY Imports tab’s functions can be hooked. FMOD’s are in Exports tab. (Function pointers are NOT in imports entry table.)
  • 4. FMOD hooking • FMOD C API hooking is essential.(libkamcordaudio.so does like this) • Getting/sharing FMOD system object is important for interoperating AudioGrabber with Unity3D FMOD audio. • So we have to hook FMOD_System_Create(FMOD_SYSTEM** system) • How to hook FMOD? • Find another entry table.(exports table) • In VideoGrabber, we found imports table.(libunity.so imports libGLES*.so function) • Next we have to find exports table.(libunity.so exports some functions to client) • Or use “dlsym()” again. • orig_FMOD_System_Create = dlsym(RTLD_DEFAULT, "FMOD_System_Create"); • LOGD("FMOD_System_Create: 0x%x", orig_FMOD_System_Create);
  • 5. Final AudioGrabber design • AudioGrabber will be like below: • Link libfmodex.so. • Hook some FMOD functions and get FMOD system object. • Use our FMOD functions in libfmodex.so, manipulate FMOD audio and get audio buffer data. • Put audio buffer data into MediaCodec. • Mix and encode video and audio to .MP4