Skip to content

DEF CON 34 talks are here: 354 talks, summarized and searchable.

Browse DEF CON 34

iDecompile: Writing a Decompiler for iOS Applications

Laurie Kirk

MobileTalks27 minIntermediateOpen on YouTube ↗

Where

Talks
Objective by the Sea v7.0

Duration

27 min

Presents an open-source iOS decompiler that unpacks IPA resources and reconstructs Swift and Objective-C code on any platform.

Summary

The talk starts from a gap in tooling: few dedicated resources exist for analyzing iOS apps, and the usual workflow forces analysts to chain separate utilities that run on different operating systems. The speaker splits an IPA bundle into four areas to examine: permissions, resources, the executable, and libraries with frameworks.

Each area gets a cross-platform approach. Binary and XML property lists are decoded with a Java library, and the embedded provisioning profile is stripped of its signature so its entitlements can be read. Localized strings and other resource files are scanned with regular expressions, universal Mach-O binaries are split into architecture slices, and Swift and Objective-C method names are demangled to rebuild class structure. Lifecycle methods serve as entry points, library code is separated from app code by checking documentation, and runtime dispatch calls are resolved from their string arguments. An LLM step then translates decompiled pseudocode into an approximate Swift or Objective-C form.

A demonstration shows the open-source tool, Malimite, loading an IPA with decoded resources and a method view, with translation requested for one function. The takeaway is that a single tool can automate most of the iOS triage workflow across Mac, Linux and Windows, and that the code is released so researchers can extend it.

Materials

Related talks

Talks·21 min

  • Objective by the Sea
  • Mobile
  • Date: Oct 2025
  • Location: Spain

Yarden Hamami

Shows how an old sandbox decompiler was revived to read modern iOS sandbox profiles and present their rules readably.

reverse-engineeringmobilekernel+2