Hi everyone,
I’m currently working on an ESP mod for Call of Duty: Mobile (iOS).
It’s injected as a .dylib using Theos and tested both on jailbroken devices (Dopamine, iOS 15.6) and non-jailbroken (ESign-compatible).
✅ What’s working:
I’m hooking -[UIViewController viewDidLayoutSubviews] using MSHookMessageEx
I successfully locate the MTKView dynamically inside the view hierarchy
The CAMetalLayer, nextDrawable, MTLCommandQueue, MTLCommandBuffer, and encoder are all valid
I call DrawESP() using ImGui::GetBackgroundDrawList()->AddRect(...) with visible screen coordinates
The code proceeds through ImGui::Render() and ImGui_ImplMetal_RenderDrawData(...)
commandBuffer presentDrawable + commit runs with no errors
✅ Logs confirm everything is called and completed without crash
❌ The issue:
Nothing shows on screen. No ESP boxes, no ImGui UI, no crashes either.
Even though everything executes cleanly and logs indicate correct flow, nothing appears visually.
🔍 Already checked:
The MTKView is properly attached to a visible UIViewController and active on screen
The memory reads (EntityList, LocalPlayer, etc.) return valid data – confirmed from game dumps and offset analysis
No UIView or UIKit overlay is interfering (this is pure Metal rendering using ImGui)
Device is stable, and logs confirm correct Metal context
❓ What I need help with:
Has anyone here successfully displayed ImGui or ESP overlays inside COD Mobile iOS using a CAMetalLayer or MTKView?
Do I need to hook into a deeper rendering function, like RenderScene() inside CODM’s game engine, for it to actually draw to screen?
🧠 Setup:
iPhone 11, iOS 15.6, Dopamine jailbreak
Injection via Theos (no Logos, full ObjC++)
Compatible with ESign for non-jailbreak testing
Using imgui_impl_metal.mm backend (latest from GitHub)
Any help or suggestions would be greatly appreciated 🙏
If you have experience with ImGui rendering on CODM iOS, or know which engine-level method to hook, please share!
Thanks in advance!