L

Landon Fuller

landonf.bikemonkey.org · Personal blog · on HN since 2008

Landon Fuller writes technical posts on Mac OS X and iOS internals, security issues, crash reporting and Java on macOS.

What HN saysHN commenters cite it for explanations of macOS behavior such as PT_DENY_ATTACH, the Java vulnerabilities and Objective-C runtime details.
22HN people shared it
16linked it in comments
8stories submitted
115story points
7 years agolast shared
2008people per year2026

Most-shared posts

  1. 1
    Soylatte
    5 people · first shared 2010
  2. 2
    Reliable iOS crash reporting
    3 people · 3 points · first shared 2011 · discussion on HN
  3. 3
    iOS Static Libraries Are, Like, Really Bad
    2 people · 95 points · first shared 2014 · 74 comments on HN
  4. 4
    Reliable Crash Reporting (2013)
    2 people · 8 points · first shared 2013 · discussion on HN
  5. 5
    Index
    2 people · first shared 2013
  6. 6
    Leopard PT DENY ATTACH.20080122
    2 people · first shared 2011
  7. 7
    Critical Mac OS X Java Vulnerabilities
    1 people · 4 points · first shared 2009 · discussion on HN
  8. 8
    Mac OS X 10.4 under VMware Fusion on Modern CPUs
    1 people · 2 points · first shared 2014 · discussion on HN
  9. 9
    The DNS Dead Drop
    1 people · 2 points · first shared 2008 · discussion on HN
  10. 10
    Function patching on iOS via libevil
    1 people · 1 points · first shared 2013 · discussion on HN
  11. 11
    05 19
    1 people · first shared 2009
  12. 12
    Imp implementationWithBlock.20110413
    1 people · first shared 2019
  13. 13
    Homepage
    1 people · first shared 2012

What HN people wrote when they linked it

jrockway · 2011-09-10
No, it's an OS X "feature". PT_DENY_ATTACH: http://landonf.bikemonkey.org/code/macosx/Leopard_PT_DENY_ATTACH.20080… "UNIX with a GUI" at its best.
ankhmoop · 2009-05-22
It looks great, but unfortunately, the plugin is Windows only (and I'd never install a random plugin anyway), and the Java-based demo won't work either since I just turned Java off (http://landonf.bikemonkey.org/code/macosx/CVE-2008-5353.20090519.html)
flatline3 · 2012-06-30
> For Git, I just followed some examples I found online. I don't remember the exact procedure, but it didn't work. After around an hour of trying I just gave up. In fact, I found it just as difficult as trying to install Git on the OpenSolaris servers, which is saying quite a bit. I installed git on a coworker's computer in a couple minutes today, so I don't know what to say. > As for Java, I couldn't update despite using the Software Update menu. It worked on Windows, but OS X just hadn't gotten around to adding it. And, as is usually the case with Apple, there was no good way around it: since Apple hadn't update Java, I couldn't just install it myself. (Or, at least, there was no obvious way of doing this.) It wasn't that Apple hadn't "added" it, there simply wasn't a port of that version of Java to Mac OS X, because they needed to port it. If someone external to Apple had produced a port (like, say, Sun), you could have installed it, exactly in the same way that we install Oracle Java today. Someone did eventually produce a partial non-GUI port, and it later became the base of Oracle's officially supported Mac OS X Java: http://landonf.bikemonkey.org/static/soylatte/ This has little to do with Mac OS X being somehow broken, and a lot to do with the fact that Sun only provided Java binaries for Solaris, Linux and Windows. For Java 7 on, Oracle will be supporting Java for Mac OS X directly. > I don't know exactly what my friend tried to install AucTeX and the rest…
saagarjha · 2019-11-17
This sounds a lot like how imp_implementationWithBlock from the Objective-C runtime works, because it needs to run on iOS where executable stack is a big no-no: http://landonf.bikemonkey.org/code/objc/imp_implementationWithBlock.20…
mikerhodes · 2014-02-19
As long as you also pull in the dependencies specified in the podfile, you'll be absolutely fine just adding the class files to the project. I've tried to be careful to maintain that as a viable option. That you retain the option is one of the strengths of Cocoapods to my mind. While far from perfect, I chose to use Cocoapods as it's becoming the defacto standard in the iOS community. I've used it in my apps, and have found it easier to manage my deps than a bunch of git submodules or copying source code into my projects. The problems with static libraries on iOS have been well documented at [1]. Essentially, that you can't build static libraries as a third-party for iOS without resorting to low-level trickery. This seemed like it would become a maintenance burden vs. the Cocoapods approach. [1]: http://landonf.bikemonkey.org/code/ios/Radar_15800975_iOS_Frameworks.2…
saurik · 2013-10-02
iOS actually doesn't have a restriction as strict as this: you can take a page of memory and map it again without issue. This is the technique used by imp_implementationWithBlock, and current versions of libffi can generate closures based on the technique. http://landonf.bikemonkey.org/2011/04/index.html
pbsdp · 2013-07-15
You're assuming writable trampolines. objc_msgSend()'s trampoline works by caching the target lookup and having an extremely short fast-path in the case that the target method implementation is cached. objc_msgSend is a trampoline in the sense that it leaves the frame/registers untouched and jumps straight to the target implementation. That said, you can implement the kinds of trampolines you're referring to without writable code pages, it just requires more work: http://landonf.bikemonkey.org/2011/04/index.html
lordgilman · 2013-05-30
I think this is the story that the parent was referencing. Here's the story from 2005 and a kernel module loadable at runtime that gets around the problem. https://blogs.oracle.com/ahl/entry/mac_os_x_and_the http://landonf.bikemonkey.org/code/macosx/Leopard_PT_DENY_ATTACH.20080…
nupark2 · 2011-10-13
Actually, getting the backtrace sounds like a pretty difficult part: http://landonf.bikemonkey.org/code/objc/Reliable_Crash_Reporting.20110…
therealkerni · 2011-09-23
Hey, I am Andreas, one of the developers of HockeyApp.net. The service provides some pretty unique features especially advanced crash report management. Crash Reporting is based on PLCrashReporter (see http://landonf.bikemonkey.org/code/objc/Reliable_Crash_Reporting.20110… works also in the App Store with full server side symbolication grouping all crashes by class, method and line number. Let me know if you have any questions.
clinton · 2010-12-01
Sounds like a riff on the SoyLatte project http://landonf.bikemonkey.org/static/soylatte/ Although, it does appear to come with a nice OSX installer... The real leap forward will need all Apple's soon-to-be-opened-sourced bindings.
sfraser · 2010-10-22
You would still be able to run the Open JDK. There is a port for the Mac, but if I am not mistaken it uses the X Server and is not as well integrated with the graphics layer of OS X desktop. Example: http://landonf.bikemonkey.org/static/soylatte/
masklinn · 2010-10-21
On the other hand, is there really any other? For years, Apple has been pretty much the sole provider, and had their very own JVM with specific look & feel customization to the UI packages. The only real alternative is Soylatte[0], which is fairly purpose-specific. [0] http://landonf.bikemonkey.org/static/soylatte/
lapusta · 2010-10-21
There is already a port of OpenJDK: http://landonf.bikemonkey.org/static/soylatte/ Though it's not developed by Oracle employees afaik.
chaosmachine · 2009-05-27
Proof of concept: http://landonf.bikemonkey.org/2009/05/19#CVE-2008-5353.20090519 It definitely works. I just disabled the Java plugin in Firefox.

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close