Want to Watch Hulu on Android?

NOTE: update Fri 2/17/2012

The latest version of Flash for Android is 11.1.111.6. Adobe is dropping Flash support for Android so this may be the last version they release. Attached are the hacked versions of these files and a script to swap them. Your tablet must be rooted in order for this to work. It's up to the reader to make this work, but here are suggestions:

Copy these files to the following directories on the A100:
flash.sh -> /system/xbin
libflashplayer.so.11.1.111.6.win -> /sdcard/Download
libflashplayer.so.11.1.111.6.orig -> /sdcard/Download [this is not essential, it is a backup copy of the original .so file]

When you want to watch Flash on sites that disable Flash content on Android devices:
Make sure the Android browser is closed - go to the browser and close all tabs until it exits.
From an Android terminal, enter this command: /system/xbin/flash.sh

This will replace the Flash lib with the hacked one that identifies itself as Windows. Every time you do a hard shutdown/restart of your tablet it will replace the lib with the original. So you will have to run this command again.

What follows is my original blog post from Oct 2011...

Hulu's web site does not work with most mobile devices. For Apple devices, the reason is obvious: Hulu is Flash based and Apple devices don't support Flash. But why doesn't Hulu work on Android devices, most of which support Flash?

Hulu intentionally disables the long form video on their site when it detects that the device being used to view it is "mobile". Hulu's content is ad supported, so there's no reason Hulu would voluntarily restrict distribution. Hulu wants the broadest possible distribution. The only reason I can think why Hulu would restrict distribution is if they were forced to by their content providers.

As recently as a few months ago, this was easy to fix. In your Android browser, go into Advanced/Debug settings and change the user-agent header. But Hulu got wise to that and it no longer works.

There is another header that Flash clients send to the server. It's independent of but similar in concept to the HTTP user-agent header. This header value is not adjustable. It's hard-coded in the Flash binaries installed on the client.

The solution I'm about to describe deployes a simple technique I first used over 30 years ago to hack my name into the splash screens of games on my TRS-80. It involves hacking one of the Flash binaries and changing this hard-coded value. It's easier than it sounds. These instructions are for my Acer A100, a 7" tablet running Android 3.2. File locations and names may vary on different devices.

What is required:

  • Android Device with Flash installed & running
  • Hex editor (either on the Android device or on a separate computer

  • You can get hex editors for free just about anywhere. Here are some that I've used: okteta (Ubuntu), ghex (Ubuntu), hexedit (Windows).

  • Make sure the browser and any other apps using Flash are not running on the device.
  • Find the file libflashplayer.so. On my A100 it was in /data/data/com.adobe.flashplayer/lib.
  • Open this file in the hex editor of your choice. If that editor runs on a separate computer, transfer the file there (using Dropbox, USB, whatever).
  • In the hex editor, search for "AND 11" and replace it with "WIN 11". The 11 is the flash version (the current Flash version as of Oct 2011). When Flash 12 comes out, this 11 becomes a 12. This will appear only once. On flash versions 10 & 11 it has been near the end of file.
  • In the hex editor, save the modified file under a new filename. Keep the original just in case you need to restore it.
  • Copy the modified libflashplayer.so file on top of the original on the device.
  • You're done. Your device is now running a hacked version of Flash that will identify itself as a Windows machine. Grab some popcorn and enjoy!