iOS

Pulling apart an iOS App

The App Store Since its initial release on July 10, 2008, the iOS App Store has amassed over 2.2 million apps. Combine that with a study by Nielsen in 2015 which shows that the average smartphone user interacts with 10 apps a day, and 30 apps a month for a total of over 35 hours spent using apps every month, it’s safe to say that we love our apps. The way we interact with all Read more…

By Raz, ago
iOS

Taylor Swift’s new app “The Swift Life™” was not written in Swift

Late December 2017, Taylor Swift’s new iOS app called “The Swift Life™” hit the app store. The app is geared towards social media, allowing you to post content and interact with other people’s content in much the same way as Facebook, Instagram, and all the typical social media platforms we’re all familiar with. However, the one thing that seems to set her app apart is the fact that when a post by a fan gets popular Read more…

By Raz, ago
iOS

kSecAttrAccessGroupToken – A workaround for the keychain autodelete behaviour found in iOS 10.3 beta2

December 27, 2017 update: According to this post on the Apple Developer forums regarding the issue discussed in this topic, This is a bug in the beta that should already be fixed by the time you read this. kSecAttrAccessGroupToken is writable only by CryptoTokenKit smart card drivers. Apps can query the keychain using that attribute in order to find items stored on a particular smart card. This attribute is not for any other use. It Read more…

By Raz, ago
Networking

Debugging HTTP requests using Charles

Every once in a while it becomes useful to be able to actually look at the network request that is leaving your device to understand why things aren’t working, or to gain insight into how other people’s things work. While tools for network debugging such as Wireshark are great and have existed since forever, Charles web debugging proxy was built specifically to make http requests very easy to debug. How it works: You —> Charles —> Internet Read more…

By Raz, ago
LLDB

[LLDB/Xcode] Manipulating the currently executing line

Have you ever wanted to quickly see the result of a particular code path, but realized you had to stop the app, comment out or modify some code, and run the app again so that the new code follows a different path? There may be a quicker way to achieve this. Consider the following example: The result is YES under normal circumstances, but we want to test what happens if the result was ever NO. Read more…

By Raz, ago
Networking

Around the world in 15 seconds

The first aerial circumnavigation of the world was performed in 1924 by the United States Army Air Service. The trip took 175 days and covered over 27,000 miles. Today, we are going to circumnavigate the world in under 15 seconds. In order to achieve this, what we are going to do is link together a chain of computers starting with yours, going all the way around the world, and ending right back where it started; with yours. Read more…

By Raz, ago
Networking

Minecraft behind a firewall

Several months ago I was given access to a free, moderately powerful virtual private server (VPS) with the catch that the server sat behind a firewall which denied all incoming connections. The company hosting the VPS provided a web interface for accessing the server via a VNC connection which they routed internally. This was the only way to interact with the server. Upon getting access to the VPS I immediately tried the first thing anyone Read more…

By Raz, ago
Objective-C

Ghost Classes

By exploiting a property of the Objective-C runtime, it’s possible to have a class living and breathing in memory without it ever have been imported, allocated, nor initialized anywhere else in the code base. The property in question is the +load message that is sent to every NSObject shortly after a class is loaded into memory. Consider the following implementation of a hypothetical class called MyClass: [crayon-5af678b175842674134175/] Upon MyClass getting loaded into memory, +load is Read more…

By Raz, ago