Volver al ranking

Schlaubischlump/LocationSimulator

Swiftschlaubischlump.github.io/LocationSimulator/

MacOS application to spoof / fake / mock your iOS / iPadOS or iPhoneSimulator device location. WatchOS and TvOS are partially supported.

locationlocation-spoofinglocation-spooffake-locationsdevelopment-toolsmacoslibimobiledevicemock-locationmock-locationsspoofispoofersimulation
Crecimiento de estrellas
Estrellas
3.1k
Forks
232
Crecimiento semanal
Issues
26
1k2k3k
sept 2019dic 2021abr 2024jul 2026
README

[!WARNING] iOS 17 and later are not currently supported. For more details, click here.

[!NOTE] Beta versions of iOS/iPadOS/tvOS are not supported.

LocationSimulator

Donate License

LocationSimulator is a macOS app that allows spoofing the location of an Apple device (iOS, iPadOS, tvOS). The target audience for this project is developers who want to test their location-service-based application(s). I do not encourage using this application to cheat in iOS games, and I do not provide support for these games. If you use this application outside of the intended purposes, you are on your own.

LocationSimulator screenshot

Table of Contents

Background

While I originally planned to build on the fantastic work of Watanabe Toshinori's LocationSimulator, I decided to recreate the whole project because the original lacked a license at the time (August 2019). I created all necessary images and source code files and removed all third-party binary dependencies except for libimobiledevice. The project uses several Swift packages (listed under Build) but no longer requires Xcode to be installed at runtime. You need the DeveloperDiskImage.dmg and DeveloperDiskImage.dmg.signature files for your iOS version.

Features

  • Spoof the iOS device location without a jailbreak or installing an app on the device.
  • Spoof the iPhoneSimulator device location.
  • Automatically try to download the DeveloperDiskImage files for your iOS version.
  • Set the device location with a long-click on the map.
  • Support custom and predefined (Walk/Cycle/Drive) movement speeds.
  • Control the movement using the arrow keys.
  • Navigate from the current location to a new location.
  • Support network devices.
  • Search for locations.
  • Support dark mode.

[!NOTE] LocationSimulator will try to download the corresponding DeveloperDiskImage.dmg and DeveloperDiskImage.dmg.signature for your iOS version from GitHub, since I cannot legally distribute these files. If the download does not work, get the files by installing Xcode and copying or linking them to:

~/Library/Application Support/LocationSimulator/{YOUR_PLATFORM}/{MAJOR_YOUR_IOS_VERSION}.{MINOR_YOUR_IOS_VERSION}/

YOUR_PLATFORM might be iOS (iPhone and iPad), watchOS (Apple Watch), or tvOS (Apple TV). MAJOR_YOUR_IOS_VERSION might be 14 and MINOR_YOUR_IOS_VERSION might be 3 for a device running iOS 14.3.

As of v0.1.8, this folder has moved to:

~/Library/Containers/com.schlaubi.LocationSimulator/Data/Library/Application Support/LocationSimulator/

As of v0.1.9, you can manage these files using the DeveloperDisk preferences tab.

Install

Download the latest release build from GitHub to get the latest changes, or install via Homebrew:

  1. Install Homebrew by entering the following command in your terminal:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  2. Install LocationSimulator with Homebrew using:

    brew install --cask locationsimulator
    

Build

Since this project has grown quite large over time, I have exported some of the code to other packages. The list below contains all additional projects I created to make this project possible. They should all be downloaded automatically by Swift:

  • LocationSimulator-Localization: The LocationSimulator localization files.
  • LocationSimulator-Help: The LocationSimulator helpbook you see when you click on Help -> LocationSimulator Help.
  • LocationSpoofer: The backend code used to spoof the location of iOS or iPhoneSimulator devices.
  • XCF: The low-level frameworks used by LocationSpoofer.
  • CLogger: A C / Objective-C / Swift logging library used by LocationSpoofer and LocationSimulator.
  • SuggestionPopup: A simple Apple Maps-like popup list UI written for AppKit to search for locations.
  • Downloader: A simple Swift library to download files from the internet more easily.
  • GPXParser: A simple Swift library to parse GPX files.

Requirements

  • macOS 10.15+
  • macOS 11.x+ SDK
  • Swift 5.0+
  • Swift Tools 5.2+
  • jekyll (required to build the helpbook; a symlink of jekyll to /usr/local/bin/jekyll is expected)

Build the app

  1. Install the latest Xcode from Apple. (Using the App Store is the easiest way)

  2. Clone this repository:

    git clone --recurse-submodules https://github.com/Schlaubischlump/LocationSimulator
    
  3. Open LocationSimulator.xcodeproj in Xcode.

  4. Let Xcode resolve all dependencies.

  5. Tap Run to build and execute the app.

Usage

[!TIP] If you use iOS 16 or later, you need to enable Developer Mode first. The Developer Mode option should appear in Settings the first time you try to use your device with LocationSimulator, after you receive a warning that you must enable Developer Mode. You can read the following issue for more information.

Start Spoofing
  • Connect the iOS device to your computer via USB or Wi-Fi.

  • Select the device in the sidebar.

  • Long-click the point you want to set as the current location on the map.

Moving
  • Click the walk button at the bottom left corner of the map. Drag the blue triangle to change the direction of movement.

    Walk button

  • Long-press the walk button to enable auto move. Click again to turn off auto move.

    Auto move button

  • Long-click on a new point on the map while you are spoofing the location to show the navigation prompt, or select the menu item to set the coordinates manually.

    Navigation prompt

  • Use the left and right arrow keys to change the direction of movement. Use up and down to move. Press space to stop the navigation.

Stop Spoofing
  • Click the reset button.

    Reset button

[!TIP] Follow the provided steps to enable spoofing over Wi-Fi.

Network Access

After you set up syncing with the Finder over USB, you can configure the Finder to sync to your device over Wi-Fi instead of USB.

  • Connect your device to your computer with a USB cable, then open a Finder window and select your device.
  • Select "Show this [device] when on Wi-Fi."
  • Click Apply.

When the computer and the device are on the same Wi-Fi network, the device appears in the Finder. The device syncs automatically whenever it's plugged in to power.

Make sure that LocationSimulator → Preferences... → Network → Allow network devices is enabled.

License

The whole project is licensed under the GNU General Public License version 3 unless specified otherwise in the specific subdirectories.

Contribute

Since I maintain this project in my free time, I always appreciate any help I get. Even if you are not a programmer and do not know anything about coding, you can still help out. It would be great if more languages were available - if you know another language and are willing to invest some time, please open a translation request! You can find the existing localization files here. I want this software to be as stable as possible; if you find any bugs, please report them by opening a new issue. If you are a programmer, feel free to contribute bug fixes or new features. Please run SwiftLint on your code before submitting pull requests.

While you are here, consider leaving a GitHub star - it keeps me motivated.

Donations are always welcome! I will use the money to develop the software in my free time further and to fund the Apple Developer Membership to notarize the app. You can donate via PayPal or Ethereum, either from inside the app (Help → Donate... or LocationSimulator → Preferences → Info → Donate) or via the GitHub sponsor button on this page.

Apple Developer Program - Each year, every Apple Developer must pay a fee to Apple to sign their applications and access certain developer resources. If your application is not signed, the user will see numerous warnings that the program is malicious, and might need to grant special permissions to start the app.

Parallels Desktop for Mac - To verify that LocationSimulator works on older macOS versions, I need to be able to run it on all of them. Since I only have a single Mac, I use Parallels Desktop for Mac to run multiple older versions of macOS simultaneously.

Hopper Disassembler - Hopper is a disassembler for macOS and Linux. You need to disassemble a program if the source code is closed-source, but you still want to figure out how it works. I often need a disassembler to reverse-engineer Apple's source code, e.g., when they change the API to interact with the iOS Simulator. Currently, I'm using the free version of Hopper, which requires a restart every 30 minutes. The commercial version does not have this limitation.

Enhancements

Look at the Projects tab to see a list of planned features for the next releases.

Acknowledgements

Repositorios relacionados
tidwall/tile38

Real-time Geospatial and Geofencing

GoGo ModulesMIT Licensegeospatialdatabase
tile38.com
9.7k619
schollz/howmanypeoplearearound

Count the number of people around you :family_man_man_boy: by monitoring wifi signals :satellite:

PythonPyPIMIT Licensetsharkwifi
7.1k379
sparrowcode/PermissionsKit

Universal API for request permission and get its statuses.

SwiftMIT Licensepermissionpermissions
x.com/sparrowcode_ios
5.8k478
dillidon/alerts-and-pickers

Advanced usage of UIAlertController and pickers based on it: Telegram, Contacts, Location, PhotoLibrary, Country, Phone Code, Currency, Date...

SwiftMIT Licenseuialertcontrollerpicker
5.8k702
zaaach/CityPicker

:fire::fire::fire:城市选择、定位、搜索及右侧字母导航,类似美团 百度糯米 饿了么等APP选择城市功能

JavaMavencityindexbar
3.1k589
kpcyrd/sn0int

Semi-automatic OSINT framework and package manager

Rustcrates.ioGNU General Public License v3.0osintintelligence
sn0int.readthedocs.io
2.5k225
LiZhengXiao99/Navigation-Learning

我的导航算法学习笔记,内容涵盖导航定位开源程序的源码解读、开源项目梳理、书籍讲义、博客翻译、教程讲座推荐;所有内容都可以随意转载,原始文件都放在这里了,大家可以在我的基础上整理出自己的一些文档。(Tips:①主要是写给初学者,已经有基础的同学应该多看论文和代码,看我的笔记学不到啥;②仓库持续更新中,不建议 fork)

gnssgps
2.4k473
nisrulz/easydeviceinfo

:iphone: [Android Library] Get device information in a super easy way.

JavaMavenApache License 2.0androideasydeviceinfo
1.8k227
Agontuk/react-native-geolocation-service

React native geolocation service for iOS and android

JavaMavenMIT Licensereactnative
npmjs.com/package/react-native-geolocation-service
1.7k297
mrmans0n/smart-location-lib

Android library project that lets you manage the location updates to be as painless as possible

JavaMavenandroidandroid-library
1.6k347
mjaschen/phpgeo

Simple Yet Powerful Geo Library for PHP

PHPPackagistMIT Licensephpvincenty
phpgeo.marcusjaschen.de
1.6k199
sobri909/LocoKit

Location, motion, and activity recording framework for iOS

SwiftGNU Lesser General Public License v3.0iosframework
bigpaua.com/locokit/
1.5k105