[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7127":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":16,"starSnapshotCount":16,"syncStatus":34,"lastSyncTime":35,"discoverSource":36},7127,"swiftshield","rockbruno\u002Fswiftshield","rockbruno","🔒 Swift Obfuscator that protects iOS apps against reverse engineering attacks.","https:\u002F\u002Fswiftrocks.com",null,"Swift",2538,283,37,58,0,1,7,29.36,"GNU General Public License v3.0",false,"master",true,[25,26,27,28,29,30],"ios","obfuscation","objc","objective-c","sourcekit","swift","2026-06-12 02:01:35","\u003Cimg src=\"http:\u002F\u002Fi.imgur.com\u002F0ksj7Gh.png\" alt=\"SwiftShield logo\" height=\"140\" >\n\n```swift\nstruct fjiovh4894bvic: XbuinvcxoDHFh3fjid {\n  let VNfhnfn3219d: Vnahfi5n34djga\n  func cxncjnx8fh83FDJSDd() -> Lghbna2gf0gmh3d {\n    return vPAOSNdcbif372hFKF(VNfhnfn3219d.Gjanbfpgi3jfg())\n  }\n}\n```\n\n# SwiftShield: Swift Obfuscator\n\n**Don't use this tool for production apps. I gave up on keeping this tool updated because every Swift release breaks SourceKit in a different way. It's probably really broken and is only useful as a way for you to learn more about obfuscation and SourceKit.**\n\n[![GitHub release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Ftag\u002Frockbruno\u002Fswiftshield.svg)](https:\u002F\u002Fgithub.com\u002Frockbruno\u002Fswiftshield\u002Freleases)\n\nSwiftShield is a tool that generates random and irreversible encrypted names for your iOS project's types and methods (including third-party libraries). It uses Apple's SourceKit to mimick Xcode's indexing behavior, revealing a complete map of your project that is used to safely rename parts of your project. \n\nReverse engineering iOS apps is relatively simple due to the fact that almost every single type and method name is exposed in the app's binary. This allows jailbreak tools like `class-dump` and `Cycript` to extract this information and use it to change the behavior of your app in runtime. \n\nObfuscating code in iOS makes the usage of these tools difficult, while also making it tougher for jailbreak developers to create tweaks for your app as SwiftShield's obfuscation changes every time you run it.\n\n## Limitations\n\nThe capabilities of SwiftShield are directly related to the capabilities of SourceKit, which unfortunately has its share of bugs. However, although SwiftShield can't obfuscate *everything*, it can obfuscate just enough to make reverse engineering very hard. [Check this document to see its capabilities in detail](SOURCEKITISSUES.md).\n\n## Requirements\n\n- You should not have logic based on hardcoded names (like loading `MyClass.json` because `String(describing: type(of:self))` is `'MyClass'`). SwiftShield does not obfuscate things like file names and hardcoded strings -- only the types themselves.\n- No Objective-C classes that call Swift methods (but Swift classes calling Objective-C code are fine).\n- Your project should be 100% written in View Code. Older versions of SwiftShield did support obfuscating Storyboards\u002FXIBs, but it was extremely hard to maintain. This parts from the principle that if you have a project big or important enough to be obfuscated, you probably shouldn't be using Storyboards in the first place.\n- Your project should **not** be using Xcode's Legacy Build System setting.\n- Make sure your project doesn't suffer from [one of SourceKit's bugs](SOURCEKITISSUES.md). Although the bugs won't prevent the project from being obfuscated, some of them might require you to manually fix the resulting code as it will not be able to compile.\n\n## Usage\n\nCheck this repo's example project to see it in action! You can run it by executing `make swiftshield` in your terminal.\n\n### Downloading SwiftShield\n\nYou can get a SwiftShield binary from [the releases page](https:\u002F\u002Fgithub.com\u002Frockbruno\u002Fswiftshield\u002Freleases).\n\n### Modify scripts that can affect SwiftShield\n\nIf your project uses a framework that also modifies your files like `SwiftGen`, you need to prevent them from running alongside SwiftShield. This can be done by checking for the `$SWIFTSHIELDED` Xcode variable that is added by SwiftShield after your project is obfuscated.\n\nFor example, my SwiftGen Xcode Run Script:\n\n```bash\n$PODS_ROOT\u002FSwiftGen\u002Fbin\u002Fswiftgen images --output $SRCROOT\u002FAsset.swift $SRCROOT\u002FAssets.xcassets\n```\n...should be changed to:\n\n```bash\nif [ \"$SWIFTSHIELDED\" != \"true\" ]; then\n    $PODS_ROOT\u002FSwiftGen\u002Fbin\u002Fswiftgen images --output $SRCROOT\u002FAsset.swift $SRCROOT\u002FAssets.xcassets\nfi\n```\n\n### Unlock Sources\n\nIf you're using a dependency manager like CocoaPods, you need to make sure that the sources are unlocked. If they aren't, SwiftShield will fail saying that it failed to overwrite the files. To unlock your project, execute:\n\n`chmod -R 774 PATHTOPROJECTFOLDER`\n\n### Running SwiftInfo\n\n```bash\nUSAGE: swiftshield obfuscate --project-file \u003Cproject-file> --scheme \u003Cscheme> [--ignore-public] [--ignore-targets] [--verbose] [--dry-run] [--print-sourcekit]\n\nOPTIONS:\n  -p, --project-file \u003Cproject-file>\n                          The path to your app's main .xcodeproj\u002F.xcworkspace\n                          file. \n  -s, --scheme \u003Cscheme>   The main scheme from the project to build. \n  --ignore-public         Don't obfuscate content that is 'public' or 'open'\n                          (a.k.a 'SDK Mode'). \n  -i, --ignore-targets    A list of targets, separated by a comma, that should\n                          NOT be obfuscated. \n  -v, --verbose           Prints additional information. \n  -d, --dry-run           Does not actually overwrite the files. \n  --print-sourcekit       Prints SourceKit queries. Note that they are huge, so\n                          use this only for bug reports and development! \n  -h, --help              Show help information.\n```\n\n## Deobfuscating crash logs\n\nA successful run of SwiftShield generates a `swiftshield-output\u002FconversionMap.txt` file that contains all changes made to your project:\n\n```\n\u002F\u002F\n\u002F\u002F  SwiftShield\n\u002F\u002F  Conversion Map\n\u002F\u002F  Automatic mode for MyApp 2.0 153, 2018-09-24 10.23.48\n\u002F\u002F\n\nData:\n\nViewController ===> YytSIcFnBAqTAyR\nAppDelegate ===> uJXJkhVbwdQGNhh\nSuperImportantClassThatShouldBeHidden ===> GDqKGsHjJsWQzdq\n```\n\nMake sure to store this file when you publish a release, as it can be used to deobfuscate crash logs from the app that generated it through SwiftShield's `deobfuscate` subcommand.\n\n```\nUSAGE: swiftshield deobfuscate --crash-file \u003Ccrash-file> --conversion-map \u003Cconversion-map>\n\nOPTIONS:\n  -c, --crash-file \u003Ccrash-file>\n                          The path to the crash file. \n  -m, --conversion-map \u003Cconversion-map>\n                          The path to the previously generated conversion map. \n  -h, --help              Show help information.\n```\n\n\u003Cimg src=\"https:\u002F\u002Fi.imgur.com\u002FqMKy84P.png\" alt=\"SwiftShield logo\" height=\"172\">\n","SwiftShield 是一个用于保护 iOS 应用免受逆向工程攻击的代码混淆工具。它通过生成随机且不可逆的加密名称来重命名项目中的类型和方法（包括第三方库），利用 Apple 的 SourceKit 模拟 Xcode 的索引行为，确保安全地重命名项目部分。尽管由于 SourceKit 的限制，SwiftShield 不能混淆所有内容，但它足以显著增加逆向工程的难度。该工具适用于希望提高应用安全性、防止未经授权的修改或破解的开发者。需要注意的是，由于 Swift 版本更新频繁导致 SourceKit 不稳定，作者已不再维护此工具，因此不建议在生产环境中使用。",2,"2026-06-11 03:10:38","top_language"]