[colug-432] disassemble arm .so files
Larry Howell
lhowell at speakeasy.net
Mon Oct 5 09:57:35 EDT 2015
On Sun, 4 Oct 2015 19:59:31 -0500, Rick Hornsby wrote:
Bought a new car a couple of months ago, and it turns out to be
running Linux. And I can ssh into the car. uname -a:
Linux cmu 3.0.35 #9 SMP PREEMPT Sat Oct 25 16:40:22 EDT 2014 armv7l GNU/Linux
The CPU is an ARM Cortex-A variant, 32 bit, little endian, soft-float,
and a PREEMPT kernel provides soft real-time. Johnson Controls uses
Freescale i.MX SoCs, so it's very likely to be an i.MX53 Cortex A8.
Cool. From everything I can figure out, this “infotainment” system
is based on the OpenCar SDK[1] - Javascript. So it should be open, and
adding new apps[2] should be possible. To be fair - I’m not 100% sure
that it isn’t possible yet, I haven’t tried to actually change
anything in the car yet.
You are establishing a ssh connection to the infotainment
(radio/nav/etc) system in the car, which runs Linux. The car is
unlikely to have an OS, just a lot of bare-metal code running lots of
CAN messaging. It's probably possible to intercept a CAN bus from the
infotainment system to access the car's systems, but that is a problem
for another day.
I have access to the entire filesystem (r/w, if I want) and I have the
complete(?) next version of software (the updater file) than my car
came with - so I have a fairly comprehensive bucket of stuff to
examine. But there’s also large number of compiled .so library files
for what seems like pretty much everything, i.e.:
libjciuiaaharadio.so
libjciuiaamradio.so
libjciuiaaudiosettings.so
libjciuiaauxin.so
jci = johnson controls
uia = variable name that in the javascript refers to application identifiers
That definitely does not jive with the OpenCar model, if I need to
compile a library for every app I want to create.
And that’s where I’m completely out of my depth. I know the system
architecture is ARM, but I don’t know how to understand more than
that, or what to do with it since the only computers I have are x86. I
know of QEMU, but no idea what to do with it.
You need a cross toolchain (x86 host, ARM target), and your distro may
have a package that can provide such a toolchain. If you don't find a
pachage in the distro repo, there are several sites that have prebuilt
binaries available. A popular one is Linaro (www.linaro.org) which
has builds for Linux, Mac, and Win. In any case be sure to choose the
" *-arm-linux-gnueabi " versions. Avoid any with "none" which are for
bare-metal (no OS) development, and any with "hf" which are
hard-float. ARM is bi-endian and can be configured as big-endian at
boot, so also avoid any that are big-endian variants.
Specifically, I’d like to be able to decompile the .so files
to see what they’re doing? I’m trying objdump, but that’s not
going to work it seems since my underlying architecture is x86? If I
can somehow emulate an ARM hardware layer and actually run the software
that would be good (I think?)
Once you have a cross toolchain installed, you'll be able to use the
arm binutils objdump to read the .so files.
Why - well, besides the sheer curiosity of what’s possible, I
eventually want to for example
* replace the painfully stupid native pandora app, which isn’t
actually much of an app, but rather depends entirely on a tenuous
“accessory” link to the real Pandora app running on my phone
* add a screen that shows coolant temp, oil pressure, etc[3]
* add an app that goes directly to my favorite streaming audio, without
having to Bluetooth it from the phone
The last two I’ve more or less been able to do in the OpenCar
simulator - so they maybe should be doable if I can figure out what’s
up with the .so library thing.
thanks!
[1] https://insidetrack.opencar.com
[2] http://www.mazda3hacks.com/doku.php?id=apps:addingtocar
[3]
https://insidetrack.opencar.com/application/index/documentationdevelop?category=developers-guide§ion=tutorials&page=working-with-vehicle-network-data-part-1
_______________________________________________
colug-432 mailing list
colug-432 at colug.net
http://lists.colug.net/mailman/listinfo/colug-432
I've just completed a 3-year project that used an i.MX53, so may be
able to help with hardware/software questions as you dig deeper and run
into issues
Regards,
Larry
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.colug.net/pipermail/colug-432/attachments/20151005/1bb892d0/attachment-0001.html
More information about the colug-432
mailing list