# restore-symbol

> macOS command-line tool that writes a stripped iOS app's Mach-O executable back out with a rebuilt symbol table, so a debugger such as lldb can break on and display Objective-C method names. It recovers method names and addresses from the binary's Objective-C metadata through class-dump, and can merge extra name and address pairs from a JSON file, such as the block symbols found by the bundled IDA script.

- Type: Tool
- Targets: App · Binary
- Category: Native analysis tools
- Relationship: Foundation tool
- Sources reviewed: 2026-10-19
- Added to the catalog: 2026-11-02
- Original resource: <https://github.com/tobefuturer/restore-symbol>
- Primary source: <https://github.com/tobefuturer/restore-symbol/blob/83ccb9085339750fd777b0707641b68c7661a388/README.md>
- Catalog page: <https://awesomerea.org/resources/restore-symbol/>
- Record JSON: <https://awesomerea.org/resources/restore-symbol/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/restore-symbol/index.md)

## Requirements & limits

- There are no releases or tags; the reviewed master commit of 2019-04-27 is the latest, and the repository has no tests or CI. The README covers Objective-C methods and blocks only and does not mention Swift symbols.
- Builds on macOS with Xcode: make initializes the pinned class-dump submodule (0xced's fork) and runs xcodebuild on a project targeting macOS 10.11. The block-symbol script search_oc_block/ida_search_block.py runs inside IDA, uses Python 2 print statements and the legacy idaapi.get_inf_structure call, and writes block_symbol.json.
- Input is a thin armv7 or arm64 Mach-O executable from an app the user is authorized to analyze; the tool rejects fat files with a request to thin them using lipo, and writes a new output file instead of changing the input. The README then re-signs the bundle with the user's own developer certificate and debugs it on a device with lldb. The repository contains source and a README screenshot, no app binaries.
- There is no license file and GitHub detects none, so reuse terms for restore-symbol's own code are not stated; the build links the MachObjC library from the class-dump submodule, which is GPL-2.0-or-later.

## Primary sources

1. <https://github.com/tobefuturer/restore-symbol/blob/83ccb9085339750fd777b0707641b68c7661a388/README.md>
2. <https://github.com/tobefuturer/restore-symbol/blob/83ccb9085339750fd777b0707641b68c7661a388/source/restore-symbol.m>
3. <https://github.com/tobefuturer/restore-symbol/blob/83ccb9085339750fd777b0707641b68c7661a388/makefile>
4. <https://github.com/tobefuturer/restore-symbol/blob/83ccb9085339750fd777b0707641b68c7661a388/.gitmodules>
5. <https://github.com/tobefuturer/restore-symbol/blob/83ccb9085339750fd777b0707641b68c7661a388/restore-symbol.xcodeproj/project.pbxproj>
6. <https://github.com/tobefuturer/restore-symbol/blob/83ccb9085339750fd777b0707641b68c7661a388/search_oc_block/ida_search_block.py>
7. <https://github.com/0xced/class-dump/blob/a8877b6695f317816322134944a410de09da4911/README.md>

## More in Native binaries

- [FakeNet-NG](https://awesomerea.org/resources/fakenet-ng/index.md) · Tool
- [Joern](https://awesomerea.org/resources/joern/index.md) · Tool
- [Speakeasy](https://awesomerea.org/resources/speakeasy/index.md) · Tool
- [LazyIDA](https://awesomerea.org/resources/lazyida/index.md) · Tool
- [Tiny Tracer](https://awesomerea.org/resources/tiny-tracer/index.md) · Tool
- [Ponce](https://awesomerea.org/resources/ponce/index.md) · Tool

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
