Some notes, tools, and techniques for reverse engineering macOS binaries.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CGFloat ScaleToAspectFitRectInRect(CGRect rfit, CGRect rtarget) | |
{ | |
// first try to match width | |
CGFloat s = CGRectGetWidth(rtarget) / CGRectGetWidth(rfit); | |
// if we scale the height to make the widths equal, does it still fit? | |
if (CGRectGetHeight(rfit) * s <= CGRectGetHeight(rtarget)) { | |
return s; | |
} | |
// no, match height instead | |
return CGRectGetHeight(rtarget) / CGRectGetHeight(rfit); |
To run this, you can try:
curl -ks https://gist.github.com/nicerobot/2697848/raw/uninstall-node.sh | bash
I haven't tested this script doing it this way but i run a lot of my Gists like this so maybe this one'll work too.
Alternatively,
curl -ksO https://gist.github.com/nicerobot/2697848/raw/uninstall-node.sh
chmod +x ./uninstall-node.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// FDRCollectionViewCell.h | |
// | |
// | |
// Created by Brent Royal-Gordon on 7/10/13. | |
// | |
// | |
#import <UIKit/UIKit.h> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "FileChangeObserver.h" | |
#undef Assert | |
#define Assert(COND) { if (!(COND)) { raise( SIGINT ) ; } } | |
@interface FileChangeObserver () | |
@property ( nonatomic, readonly ) int kqueue ; | |
@property ( nonatomic ) enum FileChangeNotificationType typeMask ; | |
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// This method requires ImageIO.framework | |
#import <ImageIO/ImageIO.h> | |
- (CGSize)sizeOfImageAtURL:(NSURL *)imageURL | |
{ | |
// With CGImageSource we avoid loading the whole image into memory | |
CGSize imageSize = CGSizeZero; | |
CGImageSourceRef source = CGImageSourceCreateWithURL((CFURLRef)imageURL, NULL); | |
if (source) { | |
NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:(NSString *)kCGImageSourceShouldCache]; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** String: Identifier **/ | |
#define DEVICE_IDENTIFIER ( ( IS_IPAD ) ? DEVICE_IPAD : ( IS_IPHONE ) ? DEVICE_IPHONE , DEVICE_SIMULATOR ) | |
/** String: iPhone **/ | |
#define DEVICE_IPHONE @"iPhone" | |
/** String: iPad **/ | |
#define DEVICE_IPAD @"iPad" | |
/** String: Device Model **/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// LOOProfiling.h | |
// | |
// Created by Marcin Swiderski on 4/12/12. | |
// Copyright (c) 2012 Marcin Swiderski. All rights reserved. | |
// | |
// This software is provided 'as-is', without any express or implied | |
// warranty. In no event will the authors be held liable for any damages | |
// arising from the use of this software. | |
// |