GithubHelp home page GithubHelp logo

kam800 / machobfuscator Goto Github PK

View Code? Open in Web Editor NEW
515.0 15.0 76.0 3.04 MB

MachObfuscator is a programming-language-agnostic Mach-O apps obfuscator for Apple platforms.

License: MIT License

Swift 96.71% Shell 0.64% Objective-C 2.38% Ruby 0.10% C 0.17%

machobfuscator's Introduction

MachObfuscator ๐Ÿ”

โ—๏ธโ—๏ธโ—๏ธ

MachObfuscator does not currently support binaries with minimum Deployment Target >= 12.X,

MachObfuscator does not currently run on macOS Deployment Target >= 12.X.

MachObfuscator is a programming-language-agnostic Mach-O apps obfuscator (for Apple platforms).

Current status ๐Ÿƒโ€โ™‚๏ธ

โœ… โ€“ means feature is completed, โŒ โ€“ means feature is todo/in-progress.

  • โœ… Mach-O iOS
  • โœ… Mach-O macOS
  • โœ… iOS NIBs (including storyboards)
  • โš ๏ธ macOS NIBs (including storyboards) โ€“ does not support bindings yet
  • โŒ MOMs (CoreData)
  • โŒ Mach-O watchOS
  • โŒ Mach-O tvOS
  • โŒ Bitcode
  • โŒ automatic code re-signing (need to re-sign all images manually, see resign.sh)

Overview ๐ŸŒ

MachObfuscator is a binary symbolic obfuscator. What does it mean? There are a few important terms:

  • Obfuscator โ€“ a tool which makes software hard to be reverse engineered.
  • Binary obfuscator โ€“ a type of obfuscator that operates on machine code, not on a source code.
  • Symbolic obfuscator โ€“ a type of obfuscator that obfuscates only symbol names, does not change program control-flow.

MachObfuscator transforms symbols in Mach-O files directly. Mach-O format is used mainly on Apple platforms as a machine code container for executables and libraries. MachObfuscator doesn't need access to the app source code in order to obfuscate it.

Demo ๐Ÿš€

Let's see MachObfuscator obfuscating SampleApp.app application:

readme_resource/machobfuscator_demo.gif

Results can be seen by opening app's main executable in MachOView. MachOView shows obfuscated ObjC selectors:

and obfuscated ObjC class names:

Only sample changes are shown above. MachObfuscator changes more Mach-O sections.

Usage details ๐ŸŽฎ

$ ./MachObfuscator
usage: ./MachObfuscator [-qvdhtD] [-m mangler_key] APP_BUNDLE|FILE

  Obfuscates application bundle in given directory (APP_BUNDLE) or Mach-O file (FILE) in-place.

Options:
  -h, --help              help screen (this screen)
  -q, --quiet             quiet mode, no output to stdout
  -v, --verbose           verbose mode, output verbose info to stdout
  -d, --debug             debug mode, output more verbose info to stdout
  --dry-run               analyze only, do not save obfuscated files

  --erase-methtype        erase methType section (objc/runtime.h methods may work incorrectly)
  -D, --machoview-doom    MachOViewDoom, MachOView crashes after trying to open your binary (doesn't work with caesarMangler)
  --swift-reflection      obfuscate Swift reflection sections (typeref and reflstr). May cause problems for Swift >= 4.2

  --objc-blacklist-class NAME[,NAME...]     do not obfuscate given classes. Option may occur mutliple times.
  --objc-blacklist-class-regex REGEXP       do not obfuscate classes matching given regular expression. Option may occur mutliple times.
  --objc-blacklist-selector NAME[,NAME...]  do not obfuscate given selectors. Option may occur mutliple times.
  --objc-blacklist-selector-regex REGEXP    do not obfuscate selectors matching given regular expression. Option may occur mutliple times.
 
  --preserve-symtab       do not erase SYMTAB strings
  --erase-section SEGMENT,SECTION    erase given section, for example: __TEXT,__swift5_reflstr
  
  --erase-source-file-names PREFIX   erase source file paths from binary. Erases paths starting with given prefix
                                     by replacing them by constant string
  --replace-cstring STRING           replace arbitrary __cstring with given replacement (use with caution). Matches entire string,
  --replace-cstring-with STRING      adds padding 0's if needed. These options must be used as a pair.

  --skip-all-frameworks              do not obfuscate frameworks
  --skip-framework framework         do not obfuscate given framework
  --obfuscate-framework framework    obfuscate given framework (whitelist for --skip-all-frameworks)

  -m mangler_key,
  --mangler mangler_key   select mangler to generate obfuscated symbols

  --skip-symbols-from-sources PATH
                          Don't obfuscate all the symbols found in PATH (searches for all nested *.[hm] files).
                          This option can be used multiple times to add multiple paths.
  --skip-symbols-from-list PATH
                          Don't obfuscate all the symbols from the list in PATH (symbols need to be new-line
                          separated). This option can be used multiple times to add multiple lists. `strings`
                          output can be used as a symbols list.

  --report-to-console     report obfuscated symbols mapping to console

Development options:
  --xx-no-analyze-dependencies       do not analyze dependencies
  --xx-dump-metadata                 dump ObjC metadata of images being obfuscated
  --xx-find-symbol NAME[,NAME...]    find given ObjC symbol in all analysed images

Available manglers by mangler_key:
  caesar - ROT13 all objc symbols and dyld info
  realWords - replace objc symbols with random words and fill dyld info symbols with numbers

Integration with fastlane ๐Ÿš€

MachObfuscator can be easily integrated with fastlane builds:

  1. Make sure that you have compiled MachObfuscator and obfuscate.sh script available for fastlane.
  2. Build the application IPA as usual. You may sign it, but it can be skipped at this point because after obfuscation the application will have to be resigned.
  3. Use obfuscate.sh to obfuscate your IPA:
    1. The script requires that path to compiled MachObfuscator is in MACH_OBFUSCATOR environment variable.
    2. Pass in absolute path to the IPA you want to obfuscate.
    3. obfuscate.sh can also resign the application if you pass certificate name or pass NO_RESIGN to resign later using fastlane.
    4. Pass additional MachObfuscator options that you need.
    5. Obfuscated IPA is named like original one with added _obf.ipa suffix.
  4. Resign obfuscated IPA from fastlane if you have not used script to do it.
  5. You may retain unobfuscated IPA and MachObfuscator logs.

Here is an example fastlane configuration assuming that compiled MachObfuscator and the script are in main project directory, IPA was built to ./exported_ipa/#{TARGET_NAME}.ipa and you want final products in ./app directory:

  # Copy unobfusated app 
  rsync(
    destination: "./app/#{IPA_NAME}_unobfuscated.ipa",
    source: "./exported_ipa/#{TARGET_NAME}.ipa"
  )

  # Obfuscate
  # sh runs in fastlane directory not main project directory
  sh("MACH_OBFUSCATOR=../MachObfuscator ../obfuscate.sh ../exported_ipa/#{TARGET_NAME}.ipa NO_RESIGN -v | tee ../app/obfuscation.log")

  # Copy obfuscated app
  rsync(
    destination: "./app/#{IPA_NAME}.ipa",
    source: "./exported_ipa/#{TARGET_NAME}.ipa_obf.ipa"
  )

  # Sign obfuscated app
  resign(
    ipa: "./app/#{IPA_NAME}.ipa",
    signing_identity: "[IDENTITY]",
    provisioning_profile: {
      "#{APP_IDENTIFIER}" => "#{PROVISION_PATH}"
    }
  )

Under the hood ๐Ÿ”ง

In a great simplification, MachObfuscator:

  1. looks for all executables in the app bundle,
  2. searches recursively for all dependent libraries, dependencies of those libraries and so on,
  3. searches for all NIB files in the app bundle,
  4. discriminates obfuscable files (files in the app bundle) and unobfuscable files (files outside the app bundle),
  5. collects Obj-C symbols, export tries and import lists from the whole dependency graph,
  6. creates symbols whitelist and symbol blacklist (symbols used in unobfuscable files),
  7. mangles whitelist symbols, export tries and import lists using selected mangler,
  8. replaces symbols in obfuscable files,
  9. clears sections which are optional,
  10. saves all the files at once.

MachObfuscator changes following Mach-O sections:

  • __TEXT, __objc_classname โ€“ mangles symbol names
  • __TEXT, __objc_methname โ€“ mangles symbol names
  • __TEXT, __objc_methtype โ€“ mangles symbol names or optionally (enabled with --erase-methtype parameter) fills whole section with 0s
  • __TEXT, __swift3_typeref, __TEXT, __swift4_typeref, __TEXT, __swift5_typeref โ€“ fills whole section with 0s
  • __TEXT, __swift3_reflstr , __TEXT, __swift4_reflstr, __TEXT, __swift5_reflstr โ€“ fills whole section with 0s
  • LC_DYLD_INFO_ONLY โ€“ mangles export tries and binding lists
  • LC_SYMTAB โ€“ fills whole section with 0s

__TEXT, __swift* are sections used by Swift's reflection mechanism (Mirror). Mirror works even after clearing those sections, just returns less detailed data. LC_SYMTAB is used by lldb.

MachObfuscator does not affect crash symbolication because dSYMs are generated during compilation โ€“ that is before obfuscation.

Contributing ๐ŸŽ

If you have any idea for improving MachObfuscator, let's chat on Twitter (@kam800).

If you want to write some code, but don't feel confortable with Mach-O, I suggest doing some preparations first:

  1. Play with MachOView, open some binaries and try to feel Mach-O layout.
  2. Read /usr/include/mach-o/loader.h from any macOS.
  3. Read Mach+Loading.swift from MachObfuscator repo.

License ๐Ÿ‘

This project is licensed under the MIT License - see the LICENSE file for details.

machobfuscator's People

Contributors

kam800 avatar kjamroz-bt avatar kkosowski-bt avatar lkuczborski avatar pbogdan-bt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

machobfuscator's Issues

Speedup compilation

Compilation in Xcode11 is terribly slow. It looks like Apple fixed the Set.union performance.
Screenshot 2019-10-07 at 21 53 45

Obfuscator destroys ivar_layout

Obfuscator probably should not destroy ivar_layout for ObjC classes. ivar_layout is stored in __objc_classname section alongside regular class names. Its format is 0-terminated byte array. __objc_classname section may contain also other class-related strings/byte arrays.

WARN: Unable to resolve dylib path /System/Library/Frameworks/XXX

Looking for dependencies...
WARN: Unable to resolve dylib path /System/Library/Frameworks/CoreMotion.framework/CoreMotion
WARN: Unable to resolve dylib path /usr/lib/libSystem.B.dylib
WARN: Unable to resolve dylib path /System/Library/Frameworks/MediaToolbox.framework/MediaToolbox
WARN: Unable to resolve dylib path /System/Library/Frameworks/CoreText.framework/CoreText
WARN: Unable to resolve dylib path /System/Library/Frameworks/AudioToolbox.framework/AudioToolbox
WARN: Unable to resolve dylib path /System/Library/Frameworks/AVFoundation.framework/AVFoundation
WARN: Unable to resolve dylib path /System/Library/Frameworks/CFNetwork.framework/CFNetwork
WARN: Unable to resolve dylib path /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics
WARN: Unable to resolve dylib path /System/Library/Frameworks/CoreLocation.framework/CoreLocation
WARN: Unable to resolve dylib path /System/Library/Frameworks/CoreMedia.framework/CoreMedia
WARN: Unable to resolve dylib path /System/Library/Frameworks/CoreVideo.framework/CoreVideo
WARN: Unable to resolve dylib path /System/Library/Frameworks/Foundation.framework/Foundation
WARN: Unable to resolve dylib path /System/Library/Frameworks/MediaPlayer.framework/MediaPlayer
WARN: Unable to resolve dylib path /System/Library/Frameworks/OpenAL.framework/OpenAL
WARN: Unable to resolve dylib path /System/Library/Frameworks/OpenGLES.framework/OpenGLES
WARN: Unable to resolve dylib path /System/Library/Frameworks/QuartzCore.framework/QuartzCore
WARN: Unable to resolve dylib path /System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration
WARN: Unable to resolve dylib path /System/Library/Frameworks/UIKit.framework/UIKit
WARN: Unable to resolve dylib path /usr/lib/libiconv.2.dylib
WARN: Unable to resolve dylib path /System/Library/Frameworks/Metal.framework/Metal
WARN: Unable to resolve dylib path /System/Library/Frameworks/GameController.framework/GameController
WARN: Unable to resolve dylib path /System/Library/Frameworks/Security.framework/Security
WARN: Unable to resolve dylib path /System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices
WARN: Unable to resolve dylib path /usr/lib/libicucore.A.dylib
WARN: Unable to resolve dylib path /System/Library/Frameworks/AdSupport.framework/AdSupport
WARN: Unable to resolve dylib path /System/Library/Frameworks/CoreImage.framework/CoreImage
WARN: Unable to resolve dylib path /System/Library/Frameworks/WebKit.framework/WebKit
WARN: Unable to resolve dylib path /System/Library/Frameworks/AssetsLibrary.framework/AssetsLibrary
WARN: Unable to resolve dylib path /System/Library/Frameworks/StoreKit.framework/StoreKit
WARN: Unable to resolve dylib path /usr/lib/libz.1.dylib
WARN: Unable to resolve dylib path /System/Library/Frameworks/Photos.framework/Photos
WARN: Unable to resolve dylib path /System/Library/Frameworks/CoreTelephony.framework/CoreTelephony
WARN: Unable to resolve dylib path /usr/lib/libsqlite3.dylib
WARN: Unable to resolve dylib path /usr/lib/libobjc.A.dylib
WARN: Unable to resolve dylib path /usr/lib/libc++.1.dylib
WARN: Unable to resolve dylib path /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation

Re-signing run crash

Dear,
Thank you for the tools provided. When I crash after using it, like this:

Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000020
VM Region Info: 0x20 is not in any region. Bytes before following region: 4328620000
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
UNUSED SPACE AT START
--->
__TEXT 0000000102018000-0000000102198000 [ 1536K] r-x/r-x SM=COW ...pp/appName

How can I solve this problem?

Obfuscation of given image

Add possibility to pass path to the image instead of directory.
If executable file of iOS app instead of directory is passed, nibs will not be loaded, so this option should not be used for iOS apps. It is aimed at MacOS apps.

Erase assert/fatalError file paths

__cstring section contain filenames that are generated by #file (in Swift) or __FILE__ (C/C++/ObjC)
In particular they appear when using fatalError in Swift.
They are stored in binary near class names, so they should be deleted to not give original class name this way.

It is hard to detect them, so patten (prefix) to recognize them must be given as parameter.

Add dry-run option

Add dry-run option: analyse and try to perform obfuscation but do update the images.

Failed when build with Xcode

Dear
When build with xcode, i show "Build Failed"

/Users/LinhMui/Library/Developer/Xcode/DerivedData/MachObfuscator-hiuiglqeupyhqzfaqyqbkxxmzanu/Build/Intermediates.noindex/MachObfuscator.build/Debug/MachObfuscator.build/Script-D481608B211CF068008671D8.sh: line 2: swiftformat: command not found
Command /bin/sh failed with exit code 127

Screenshot_1

Please help me or sent me binary file when built complete
Thanks

Can't show Unity Ads after using MachOfuscator

Dear
My game can't show Unity Ads after using MachOfuscator. Please give quick fix. Because i don't check it before submit to Apple Store, now when submit and run campaign to boost install, i got no revenue so check game again and see that. Hope you can fix only today
Screenshot_1

Thanks

app crashes after using MachObfuscator processing

When I use MachObfuscator by type MachObfuscator -v XXX.app, the process is done well, but the XXX.app will crash each time when I tap the iPhone. It seems the app could not locate some method and crashes.

Obfuscate methtype section using mangled class names

Obfuscate methtype section using mangled class names

Entirely erasing methtype section causes problems for example with code utilizing NSMethodSignature. Format of methtype strings is not well documented (https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html#//apple_ref/doc/uid/TP40008048-CH100 - but this does not explain strings that I saw in binaries), according to the docs it is implementation-specific (https://developer.apple.com/documentation/foundation/nsmethodsignature)

Add debug log level

Add debug log level so more information useful for diagnosing with obfuscation problems may be provided to the user if requested.

Hello

can You add some code comment ? On the principle of Obfuscator, I do not understand ,thank you

Obfuscate IPA

I followed following steps:

XCode > Product > Archive > Distribute App > Enterprise > Next > Again Next > Once Again Next > and generated IPA file. . . now am trying to use instructions https://github.com/kam800/MachObfuscator#integration-with-fastlane- . . . but getting an error


PrivateNetwork:untitled folder excel$ cd /Users/excel/Downloads/MachObfuscator 

PrivateNetwork:MachObfuscator excel$ ./obfuscate.sh /Users/excel/Music/santhosh_m_kunthe/wastes/testes/Dummyy.ipa NO_RESIGN MACH_OBFUSCATOR
rm: /Users/excel/Music/santhosh_m_kunthe/wastes/testes/Dummyy.ipa_obf.ipa: No such file or directory
Unzipping...
Obfuscating...
ls: ./MachObfuscator.exe: No such file or directory

PrivateNetwork:MachObfuscator excel$ 

App file crash because obfuscated Set function

Hi Kam
I do appreciate this repo help me to solve the obfuscator problem. But I found a problem when I obfuscated .app file. This is the log:

2019-12-23 22:03:56.963655+0800 Simulation[3932:439170] -[XXXxxx setApiVersion:]: unrecognized selector sent to instance 0x280bb2780
2019-12-23 22:03:56.966199+0800 Simulation[3932:439170] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[XXXxxx setApiVersion:]: unrecognized selector sent to instance 0x280bb2780'
*** First throw call stack:
(0x1af5b180c 0x1af2d9fa4 0x1af4b536c 0x1af5b5c88 0x1af5b7a6c 0x1051f8578 0x1051f13e4 0x1051dae10 0x104f035e8 0x10573ffb8 0x1b3610ecc 0x1b3612cf8 0x1b361852c 0x1b2de6c3c 0x1b327bf9c 0x1b2de7724 0x1b2de717c 0x1b2de7550 0x1b2de6e0c 0x1b2deb328 0x1b31ae67c 0x1b3295588 0x1b2deb060 0x1b3295484 0x1b2deaecc 0x1b2c5cb04 0x1b2c5b66c 0x1b2c5c83c 0x1b36168ac 0x1b31cf074 0x1b46b6850 0x1b46db8e8 0x1b46c0fb4 0x1b46db5a4 0x1058aabd8 0x1058adffc 0x1b47004c8 0x1b4700194 0x1b47006bc 0x1af52f7c4 0x1af52f71c 0x1af52eeb4 0x1af52a000 0x1af5298a0 0x1b9481328 0x1b361a740 0x104f2e9b0 0x1af3b4360)
libc++abi.dylib: terminating with uncaught exception of type NSException

So I add this method to --objc-blacklist-selector, but app crash again.

After I dump header, I can't found this method, but there is a property with this name.

I want to know how to add an obfuscation strategy that does not obfuscate the specified attributes.

Invalid input options

Hello,

I tried to use your project and discovered that there is no "--swift-obfuscation" option.

I've been using this line of code:
sh("MACH_OBFUSCATOR=../MachObfuscator ../obfuscate.sh ../exported_ipa/#{TARGET_NAME}.ipa NO_RESIGN -v --swift-obfuscation | tee ../app/obfuscation.log")

Any kind of help would be highly appreciated.

Thanks.

Unsupported mach binary magic CEFAEDFE

I try to obfuscate the binary for an application I have built -

Will obfuscate file:///Users/mukoan/Programs/Yoyodyne.app/Contents/MacOS/Yoyodyne
Looking for dependencies...
WARN: Unable to resolve dylib path /AppleInternal/Library/Frameworks/InputMethodKitInternal.framework/Versions/A/InputMethodKitInternal
Fatal error: Unsupported mach binary magic CEFAEDFE: file /Users/mukoan/Software/MachObfuscator/MachObfuscator/Mach/Mach+Loading.swift, line 61
Illegal instruction: 4

My application is a mix of C++ and ObjectiveC++.
Xcode 11.3.1
macOS 10.15.3

Simplify Options parsing code

Simplify Options parsing code by passing Options struct between main and Obfuscator instead of separate variables/fields for each setting

IPA file does not contain SwiftSupport directory

AppStore rejects our build due to missing SwiftSupport folder inside IPA file.
After analyzing source and target ipa files, the source one contains SwiftSupport folder, while obfuscated one does not.

Error message from AppStoreConnect:
ITMS-90426: Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using the current public (GM) version of Xcode and resubmit it.

image

Of course, unobfuscated app goes through AppStoreConnect without any issues.

External Frameworks - NSUnknownKeyException

Hi there!

I'm trying to integrate MachObfuscator in our current project, which uses external Pods / Frameworks. Obfuscation works great - using realWords - but application crashes on runtime with NSUnknownKeyException. Seems like obfuscator replaced some of the keys in FireBase.

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<ConsiderNightSize 0x2829c82a0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key dataCollectionEnabled.'
*** First throw call stack:
(0x2222b1eb8 0x2214abf18 0x2221c7c08 0x222cd0f9c 0x222d2aa88 0x222c414b4 0x100d52c68 0x100d5d868 0x1034578a0 0x103458e38 0x10345be10 0x10346a110 0x10346ab04 0x221eb6bc0 0x221ebcdd4)
libc++abi.dylib: terminating with uncaught exception of type NSException

Would be great if MachObfuscator provided more options and args, like Frameworks / types to exclude from obfuscation.

Cheers!

Lukas

Erase Swift5 reflection sections

Add Swift5 (apparently used from Swift version 4.2) reflection sections to list of erased sections. Note, that this may cause problems with running the application.

Handle UTF8 classnames and selectors in RealWordsMangler

In RealWords mangler we need to generate identifier of the same length in bytes as original identifier. Original identifier could contain multibyte UTF8 characters but mangled names contain only ascii characters.

Currently MachObfuscator crashes on precondition in Data.replaceStrings due to different lengths in bytes before and after mangling.

Add option to obfuscate given framework

Add option to obfuscate given framework. When using --skip-all-frameworks it would be convenient to select (maybe only a few) frameworks that should be obfuscated.

Some methods will be deleted

Dear
When I use MachObfuscator -v MyApp.app, I found that some method names are missing in __objc_methname, like this:

before:
image
image

after:
image
image

initData:: and login:: is miss, I can't find what caused it.
I hope you can help me solve, Thanks

Obfuscate type name for ObjC properties

Obfuscate type name for ObjC properties. Type name is referenced in property attributes and it is stored in __cstring section.
Types should be obfuscated in classes, protocol, categories.

Fatal Error: Reverse Mangler Clash

When using caesar mode, MachObfuscator crashes:

Fatal error: ReverseMangler clashed on symbol '๏ฟฝA': file /Users/lukas/Downloads/MachObfuscator-master/MachObfuscator/SymbolMangling/CaesarMangler/CaesarMangler.swift, line 30

./BuildPhases/obfuscation: line 30: 9155 Illegal instruction: 4 MachObfuscator -v -m caesar //Users/lukas/Library/Developer/Xcode/DerivedData/Wakanda-fuikddtnfvllirgvhznhqqfaeofh/Build/Products/Debug-iphoneos/{REMOVED}.app

Using XCode 10.2.1 and the newest sources of MachObfuscator from master branch. realWords mode works fine.

Crashes when the binary is Chinese

It looks like a problem with URL coding.
Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSCocoaErrorDomain Code=260 "ๆœช่ƒฝๆ‰“ๅผ€ๆ–‡ไปถโ€œ%E6%95%B0%E5%AD%97%E7%88%86%E7%82%B8โ€๏ผŒๅ› ไธบๅฎƒไธๅญ˜ๅœจใ€‚"

Automatic detection of problematic libraries

MachObfuscator should detect problematic libraries (like UnityAds, Firebase Performane, Ironsource, etc...) and warn the user about the danger. MachObfuscator could also provide a brief proposal for possible actions.

Add option to replace arbitrary cstrings

Add option to replace arbitrary cstrings. This is a bit dangerous, but sometimes useful, for example if there is a text that should be obfuscated but is not a symbol.

MachObfuscator crashes

Hi!

I builded MachObufscator and SimpleMacApp, then copy them in folder
Running terminal and wrote ./MachObfuscator -v SimpleMacApp.app/
But nothing happened (obfuscation I mean)

Will obfuscate file:///Users/pavel/Documents/MachObfuscator/SimpleMacApp.app
Looking for dependencies...
0 obfuscable images
0 obfuscable NIBs
Collecting symbols...
0 obfuscable selectors
0 obfuscable classes
0 unobfuscable selectors
0 unobfuscable classes
Mangling symbols...
0 mangled selectors
0 mangled classes
Saving all the files in place...
BYE
MacBook-Pro-Pavel:MachObfuscator pavel$

What I made wrong?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.