Releases: FLEXTool/FLEX
Releases · FLEXTool/FLEX
4.1.1
Patch: namespace fishhook functions to avoid collisions
4.1.0
- Heap viewer will take you straight to the instance if it is the only instance
- Add ability to view any bundle as a database and query it
- You can export this database from the file browser
- Fix crash on iPad when pressing any button that presents an action sheet
- Add a search bar to the view controllers list
- Add < iOS 13 support to example project
- Add option to disable dynamic property/ivar previews
- Other minor bug fixes
4.0.0
This release has been the product of months of daily work. Most of FLEX was rewritten from the ground up. If you want to show your appreciation, I have a GitHub Sponsors profile with a range of tiers where you can donate to me on a monthly basis. I also have Cash App ($tannerbennett). Reach out to me on Twitter if you have any questions or concerns about anything!
(This is by no means a complete list of changes)
Misc
- Drops support for iOS 8 — if you need to support iOS 8, use FLEX 3
- Tabs! Every screen now has a toolbar you can use to view the list of open tabs and switch between them.
- Background a tab by swiping down to dismiss the view controller (yes, even if you're not on iOS 13, try it)
- Close a tab by pressing the "Done" button or by deleting it from the tabs list
- Bookmarks! Bookmark objects to save them for later
- Hit the + button in the tabs list to open a tab from a bookmark
- New icons for the FLEX toolbar, taken from SFSymbols (yay @3x)
- System log is back from the dead: iOS 10 largely broke the system log feature with the addition of
os_log
. FLEX now forcesNSLog()
to use ASL so you don't get a log full of useless internal junk - Added various singletons to the main menu screen
- Dark mode improvements
- Run queries on SQLite databases (thanks @LesykMelnychuk)
- Most screens are now searchable, including lists of object references and the keychain
- File browser now shows a list of classes when you select a mach-o file
- More public APIs have been exposed
- Added a Swift example project which makes use of some new public APIs
FLEX Toolbar
- Long press on the Menu button to show the list of open tabs
- Long press on the Views button after selecting a view to show a list of view controllers at that point
- Long press on the Select button to show a list of all windows and scenes; tap a window to adjust it's level
- Added a Recent button which opens the most recently backgrounded tab
FLEXObjectExplorer
- New APIs for customizing "shortcuts" that are displayed for any given object or class
- Uses a monospace font for displaying metadata
- Adds context menus for metadata rows on iOS 13, useful for copying various metadata properties
- Protocol conformances are listed at the bottom, as well as instance size and image of origin
- Added various helpful shortcuts to a number of classes
- Fine-tuned the shortcuts for various UIKit classes
- Swipe left or right to change your position in the class hierarchy
- Tapping on a property or ivar now takes you to the value; press the detail button to edit instead
- Added a section index control to aid in quickly jumping to a specific metadata section
- Added a toolbar with quick access to helpful toggles or options
- Toggles for visibility of method overrides, property-backing ivars, and property-backing methods
- Quickly copy the object's description or address or bookmark it
- Quickly access the list of bookmarks or open tabs
- Support NSDecimalNumber setters
- Added option to view a list of subclasses when exploring a class object
View Explorer
- Swipe left or right on the toolbar's selected view box quickly to move your selection higher or deeper into the view hierarchy
- Added a 3D reveal-like view explorer: explore an exploded representation of the view hierarchy right on your device!
- Background colors of views are more accurately indicated
- Translucency is now correct
- nil background colors don't show a color indicator at all
Runtime Browser
- Replaces the System Libraries and App Classes screens
- Browse the runtime using a key-path-like syntax:
bundle.class.method
- Accepts wildcards, like
*.*View*
which will list all classes that containView
- Currently only supports searching for methods, properties and ivars soon to come
- Search for an instance method with
-methodName
, a class method with+methodName
, or either by prefixing your query with a wildcard- For example,
UIKit*.*Controller.*foo
searches for any method containingfoo
in any class ending withController
in any loaded bundle starting withUIKit
- For example,
- Accepts wildcards, like
Method Calling
- Added a "paste" button to argument input accessory views, useful for pasting an address
- Added support for
char *
andSEL
parameters
Network History
- Now prompts you to turn it on before taking you to the screen
- Easy access to the "clear" button in the toolbar
- iOS 13 users can blacklist domains by 3D touching on requests
- JSON payloads are now displayed as NSDictionary/NSArray when you try to view them
3.1.2
- Fix
+[FLEXRuntimeUtility potentiallyUnwrapBoxedPointer:type:
so that it doesn't try to unboxNSNumber
instances - Add
-subviews
and-superview
@properties toUIView
- Keep search bar active between screens
- Fix #359 a little better—enumerate
UIApplication.windows
until we find the firstUITextEffectsWindow
and adjust that window instead of looking right atUIApplication.windows[1]
3.1.1
- Fix various iOS 13 bugs
- Add search bar to the database view
- Swipe to delete keychain items
- Fix "Copy/Copy Address" callouts not appearing on iOS 13
- Fix a bug with the "class carousel" not working properly
- Fix root view controller global not working
- Fix crash in keychain viewer when viewing NSData
3.1.0
Marking this as 3.1
instead of 3.0.1
because we don't really have much of an "API" to use for semantic versioning, but a lot changed under the hood so I think a minor version change is warranted.
Major changes
- Drops support for iOS 8
- Initial support for iOS 13 and dark mode
- Allow passing addresses for
id
arguments - Added a custom class hierarchy scope bar to the object/class explorer
- This replaces the old scope bar which only had 2-4 options for viewing inherited metadata
- You can now search the globals screen
- Additions to the globals screen:
NSProcessInfo.processInfo
UIPasteboard.generalPasteboard
- Explore bundle and container
- Explore the keychain
Other notable changes
- Various bug fixes
- Adopt
WKWebView
- Migrate to
UIAlertController
- Various file browser upgrades
- Improved image detection
- Show editor for readonly properties with setters
- Show share sheet for folders and files
- Share the actual file instead of the file path in the file browser
- Adopt context menu on iOS 13
- By default, exploring user defaults from the globals screen will only show user defaults in the defaults file
- This hides some useless defaults that appear in NSUserDefaults for all apps
v3.0.0
Notable changes
- Support for notch-screens (iPhone X, etc)
- Explore objects by address (#258)
- Allow copying object addresses (33263bf)
- Long press on description to activate
- Support for viewing serialized objects (#254)
- Rudimentary support for viewing system log messages on iOS 10+ (d7d40e6, #140)
- Detect and unbox pointers to objects from
void *
(867ae61) - Add "Get" to readwrite editor screens (b64cd37)
- Allow registration of custom content-type viewers (#241)
- Exploring color objects shows their color as their description (24d5f3e)
- Show a view-color indicator in the view hierarchy (#239)
- Add
+[NSBundle mainBundle]
to global list (400a3cc) - Group similar "objects with ivars referencing this object" (#227)
- Additional object explorer scopes (#228)
- Failed network requests are highlighted in red (352bae0)
- Add a network filter mechanism, aka a blacklist (#185)
- At the moment this can only be enabled programmatically
All other changes are various bug fixes. You can see the full changelist here.
v2.4.0
- Various bug fixes (@dazi.dp, @TimOliver, @revolter, @shepting, @ryanolsonk)
- Search for specific classes under "system libraries" menu (@ThePantsThief)
- Copy
curl
commands from network request debugger (@iampgzp) - Fix swizzling/network debugging when some NSURLSession methods are not implemented by the delegate (@Blankdlh)
- Mute Xcode 8 warnings in example project (@c0diq)
v2.3.0
- Realm database inspection (@TimOliver)
- More stable heap search (@dazi.dp)
- Access to ancestor view controller from any view (@nin9tyfour)
- Support viewing AFNetworking request bodies (@ryanolsonk)
- Keyboard shortcut handling crash fixes (@ryanolsonk)
v2.2.0
- SQLite database browser! Access it through the file system browser. (@tttpeng)
- Support for force touch in the iOS simulator. Use the shift, control, and command keys to apply force. One key == 1/3 maximum possible force. Three keys == full maximum possible force. (@ryanolsonk)
- Search view hierarchy using pointer address (@untouchable741)
- Modern array & dictionary syntax (@dlo)
- Move to UISearchController & bump deployment target to 8.0 (@ryanolsonk)
- Bug fixes (@revolter, @wanghengheng, @ryanolsonk)