explaingit

ezzuldinst/lspoof

14Objective-CAudience · developerComplexity · 4/5Setup · hard

TLDR

An iOS library that makes any app report a fake GPS location without jailbreaking, by intercepting CoreLocation calls and returning coordinates you choose through an in-app map interface.

Mindmap

mindmap
  root((lspoof))
    What it does
      Fake GPS location
      Intercept CoreLocation
      Route simulation
    Control modes
      Static pin
      Route with speed
      Coordinate input
    Limitations
      No Swift async API
      No WiFi geolocation
      No server-side checks
    Tech
      Objective-C
      CoreLocation
      Theos toolchain
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Inject LSpoof into a fitness app to simulate a running route at a chosen pace without leaving your house.

USE CASE 2

Test a location-based app you are building by spoofing specific coordinates without changing device settings globally.

USE CASE 3

Simulate driving along a route in a navigation or delivery app for demo or testing purposes.

USE CASE 4

Bookmark frequently used fake locations to quickly switch between them during app testing.

Tech stack

Objective-CiOSCoreLocationTheos

Getting it running

Difficulty · hard Time to first run · 1day+

Requires the Theos toolchain and manual embedding into an app bundle before sideloading, no standard package manager install.

No license information found in the repository.

In plain English

LSpoof is an iOS library written in Objective-C that makes any app on your iPhone report a fake GPS location instead of your real one. It does not require jailbreaking the device. Instead, you inject it into a third-party app by embedding the library file into the app bundle before sideloading it onto your phone. Once in place, any location reading that app makes returns the coordinates you choose. The library works by intercepting calls to Apple's CoreLocation system, specifically the CLLocationManager class that iOS apps use to request location data. When an app asks for the current position, LSpoof intercepts that request and returns the coordinates you set, whether the app is using callbacks, synchronous reads, or delegate-based location updates. To control spoofing at runtime, you hold three fingers on the screen for 0.8 seconds. This opens a full-screen map interface with two modes. Static mode lets you search for a place, drag a pin to a specific spot, or type in exact latitude and longitude coordinates, then apply that as your fixed fake location. Route mode lets you set a start point and destination, fetch directions, and then simulate movement along that route at a chosen speed (walking, cycling, or driving pace), with your heading updating in real time as you progress along the path. A bookmarks tab saves frequently used locations for quick access. The library does not intercept all location methods. Swift's newer async location API (iOS 17+), WiFi and IP-based geolocation, and server-side location checks are not affected. It targets the most common CoreLocation patterns used by apps. Building requires the Theos toolchain and targets arm64 devices running iOS 16 and above.

Copy-paste prompts

Prompt 1
I want to test my iOS app's location features without physically moving. Show me how to build and inject LSpoof into my app bundle so I can feed it fake coordinates during development.
Prompt 2
Using LSpoof's route simulation mode, how do I set up a fake driving route between two addresses at 30 mph and have my app receive realistic heading updates along the path?
Prompt 3
LSpoof intercepts CLLocationManager delegate callbacks. Show me the Objective-C method swizzling pattern it likely uses, and explain how I would extend it to also intercept the newer iOS 17 async location API.
Prompt 4
I want to add a new speed preset to LSpoof's route mode. Walk me through where in the codebase the speed values are defined and how to add a custom speed option.
Open on GitHub → Explain another repo

← ezzuldinst on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.