Hi

We are trying to reproduce the steps to access application specific informations from Android phones as Andrew Case demonstrated here: http://digitalforensicssolutions.com/papers/android-memory-analysis.pdf (Page 17 and following)

We already have a Android Profile for our Goldfish kernel and are able to run the existing plugins (e.g. linux_pslist) against the memory dump acquired from the emulator.
Now we are writing our own Volatility Plugin according to Andrews presentation. But so far we could not instantiate a DvmGlobals object as Volatility does not know this specific type.
A snippet from our plugin:
    gDvm = obj.Object("DvmGlobals", vm = self.addr_space, offset = gDvm_addr)

When run, Volatility prints the following warning:
    WARNING : volatility.obj      : Cant find object DvmGlobals in profile <volatility.plugins.overlays.linux.linux.LinuxAndroid_Goldfishx86 object at 0x3a57910>?

How can we get Volatility to know this object type?

We pulled libdvm.so from our emulator and disassembled it using arm-linux-androideabi-objdump and found the following:
    000aa1a8 <gDvm>:

This lines up with the DWARF informations from libdvm.so we compiled ourselves:
    <1><0x12484><DW_TAG_variable> DW_AT_name<"gDvm"> DW_AT_decl_file<0x00000001 dalvik/vm/Init.cpp> DW_AT_decl_line<0x00000032> DW_AT_type<<0x0000c3b8>> DW_AT_external<yes(1)> DW_AT_location<DW_OP_addr 0x000aa1a8>

We aren't sure if this address actually is what we are looking for, that is the offset of gDvm in the memory dump. Can you confirm this?

Thanks for any help
Alex & Dario