-
make ipa
Building an iOS Application without Xcode
Ever wanted to build an iOS app, but you’re not a big fan of Xcode? Would you like to know what on earth is the black magic that makes your code into an iOS application? Well, you’ve come to the right place.
-
PSA: Stop Creating .a Files
“Archive Files Considered Harmful”
Archive (
.a
) files are commonly used as the file format of choice when creating statically linked libraries. However, archive files have many pitfalls by design and are usually not worth the trouble when compared to plain object (.o
) files. -
Lock-Free List
Getting Familiar & Setting Up
Every once in a while, you run into a seemingly simple problem, that turns about to be much more interesting, and you open up to a whole new world.
-
The Appdome Way of Using Make
Multi-platform Building with Make
Appdome’s build system is quite complex – it must build dozens of modules (each with its own quirks and compilation flags) on three platforms (Android and two iOS “flavors”), while avoiding code duplication and keeping development as easy as possible. In this article, we’ll recreate a similar (yet simpler)
make
-based build system that can create both 64-bit dynamic libraries that runs on both macOS and iOS using a single codebase, without having to run./configure
-like scripts ormake clean
to switch targets. -
Towelroot
An analysis of Towelroot and the futex vulnerability
A few years back I did an article series about Towelroot and the futex-vulnerability. Since then the website migrated several times and the articles got butchered.
-
A nil that is not a NULL
Creating a nil-like Object for Fun and Profit
A cool feature of the Objective-C runtime is that
nil
“responds” to every selector, and always returns a value that is equivalent to0
ornil
itself. This feature, together with the dynamic nature of Objective-C, can be exploited to aid in research of Objective-C code, and bypassing API limitations. -
No-Bugs No-Glory: Issue no. 1
Logging Quirks on Android
Suppose you wanted to implement encrypted disk-I/O in your application. The way to go about it would be intercept all the I/O system calls and reimplement them so that data written/read will be encrypted/decrypted. One method to intercept those functions would be to hook them. Meaning, set up the process in such a way that when
write
is called, instead some customHOOK_write
implementation is called. In addition, you might want to know what’s happening inside your functions, so you will naturally use some sort of logging mechanism. In Android’s case you will use the__android_log*
API supplied byliblog.so
. However, logs are something to be seen by the developers only, and they do add a bit of an overhead to the product, both in size (MiBs) and in performance, so you want to be able to easily switch them off. Surprisingly, a combination of these (rather innocuous) elements can cause some very odd behavior on Android under certain conditions. -
Automating iOS Tasks from a Mac's Terminal
Creating Command Line Versions of Xcode Functionalities
One of the common tasks an iOS developer would want to perform is launching an application on a device from a connected Mac. Usually, this is done from Xcode, which can build, install and launch an application. However, this only covers the very basic scenario – launching an app you just built on a device. But what if you want to launch an application via command line, or a script? What if you’re not even using Xcode for your project? This functionality is very critical, for example, for automatic testing. It enables automatically testing hundreds of applications in nightly cycles that guarantee top quality reliability, and you can’t test an app before launching it first.
subscribe via RSS