[Q] Down and Dirty with Smartphones - how to read the entire memory - General Questions and Answers

Hi all,
I hope I'm doing this in the right forum. I have an ambitious project I want to do.
I want to be able to read the entire contents of a smart phone.
Currently I plug, say a generic Windows Mobile phone into my PC, and using Active Sync, it shows the files on my device. I want to go beyond that and essentially see everything, the unused storage etc. Similar to how programs can see each sector on a computer hard drive, not just the files visible to the operating system.
There may be an easy way to do this, but I've done some searching and can't seem to find it.
I guess the first place for me to start is getting to know the architecture of the generic smartphone. I'm making an assumption that most smartphones which can run Windows Mobile, Android, Linux, etc have the same architecture (I won't be looking into Blackberry/RIM, Palm, or iPhone).
I understand that the processor for these smartphones are mostly by ARM, and use the ARM instruction set. From what I can make out also these phones store the OS/ROM in the memory (which I'm assuming is flash), and the applications and files are also stored in the same place.
Does anyone know where I can find info on how the architecture of these phones? Or know of a good place to start looking? Or have any advice for me?
Thanks ahead

Related

Bought a Nexus One; totally, completely baffled by tethering

I'm a professional programmer, and I'm baffled. It seems that there is a whole "smartphone scene" and it's intimidating. I'm a Java expert and am comfortable with the Android SDK in Eclipse. However I'm completely baffled by the prospect of getting tethering to work on my Nexus One.
One thing that baffles me, for example, is the concept of a "ROM". Is there a ROM on the N1? I thought that ROMs haven't been used for 10 years. I was under the impression that the N1 is basically a little PC running Linux, which means that it should only have a bare minimum of a BIOS and everything else would be on "disk", or flash.
Another thing that baffles me is the concept of "rooting" the N1. It's running Android, which is an open-source mobile operating system. And, as far as I know, I have the permission to change all bits of the phone. Heck, that's part of the appeal! To say that you have to "root" your N1 is like saying that you have to "root" your Ubuntu box - it just doesn't make sense.
Complicating matters is the release of Froyo. I simply don't know enough to judge whether the actions required to upgrade the N1 to Froyo are compatible with the actions required to install a tethering app.
And that's the thing: I'm not just interested in installing tethering. I want to understand what I'm doing and why. I'd like to understand the options choose intelligently between them. There are so many resources online which are trying so hard to be helpful, but which don't really answer these simple questions.
I really appreciate your help.
-Ablation
search the correct forum for your phones model here on xda. some roms provide tethering preinstalled
check this thread for more info
http://forum.xda-developers.com/showthread.php?t=668090
while that targeted at g1, its the same concept. again search xda for the n1 section
Thanks for the link. However, I think I need a more conceptual introduction to the scene. The essential question is: what are the bits? On a PC you have:
1. BIOS
2. Disk
3. Peripheral firmware.
The disk is further broken down:
1. Bootloader
2. Operating system
3. Drivers
4. Applications
When you say ROM I assume you mean some combination of BIOS and Peripheral Firmware?

Question related android ?

i just want to know that why android operating system does not work directly in mobile devices
why there is need of development in it to use in all diffrent phones?
why it cant work directly like windows in pc does
and other question all others like bada os, symbien and apple os they all need they also need development or we can use them directly
if sumone didnt understand my question i will explain more
for further explanation>
windows we can install directly in any pc of any company or assembled
but android need development and designed for a seprate product of a specific brand
why?
no1 is intrestd in answring these questions ?
You are just kidding here right?
/Pun intended.
For example
[1] ....
[n] Windows has the complete set of drivers
[n+1] The manufacturer delivers the driver
Fundamentally, you're misunderstanding the situation. Windows does not run on any computer you can throw together. It runs on any computer that you can throw together that matches the evolving, de facto standard that started as the IBM PC.
It won't run on a SPARC Station or a 68k Mac or an IBM 360 or a Wii or a PS3 or, well, a HTC Vision.
Similarly, Android will run on any PC, er phone, er tablet, er, well computer that is basically the same as an existing Android device. The vast majority of the custom development that is, strictly-speaking, necessary for a new device amounts to device drivers. Now, most manufacturers do a lot on top of that to distinguish their product. That's where Sense and MotoBlur and such-like come into play.
A further complication is that storage space and memory are at a heavy premium on these devices. So, it is infeasible to include the incredible variety of drivers and other hardware support that makes a typical Windows or Linux install need several GBs.
Back in the day, when dinosaurs roamed the earth and there were only a handful of PC makers in the world, similar customization was needed. My first PC came with a manufacturer-custom version of DOS 2.1 and Windows 1.1. Is wasn't until at least DOS 3.x (maybe 4.x, that was a long time ago) that a vanilla MS copy had a chance of working. Even then, most peripherals *needed* a custom driver to be used at all. My first mouse is an example. Only way to use it was the Genius Mouse drivers that came with it.
thanks for ur answers guys

cloning windows mobile OS or program

I'll make this as quick as possible, any help would be greatly appreciated. I have been searching for weeks for a solution. I have even looked on the forums here and haven't found anything addressing this. I need to either clone the operating system with included programs from my work phone, or I need to clone a particular program that we use in the field (which is ultimately the object), and i need to either run it as a Virtual Machine on a netbook, or I need to run it on a tablet. I'm not a noob when it comes to computers, but I am when it comes to working with cell phones since computers have mostly been my focus. I'm happy to make the transition though. Any of the programs I would need or tutorials anyone knows of would be fan frickin tastic. I searched youtube also and nothing on there. I'm serious about this, you reply, I'll reply back. Thanks ahead of time.

[info]how apps are installed+used

HAVE you ever thought how an app is used and how it is installed ???
Well now you can cause I am here..:victory:
Many of you have probably heard, that Android uses Java. But have you ever heard anyone saying that Minecraft (The Linux .Jar) works on Android? No, you haven’t. And you most likely never will. This is because Android uses the so-called ‘Dalvik-VM’, VM meaning Virtual Machine. Yes, you got that: Virtual machine. Java doesn’t work natively on a computer. It runs in its own little cosy-cub. That’s why many people see such a potential in Java – That’s also one of the reasons the Android team chose to use Java. But because Android (usually) runs on ARM-based devices, one cannot simply install Java to the system and expect everything to work. So instead, they decided to use Dalvik.
Dalvik is the process virtual machine (VM) in Google’s Android operating system. It is the software that runs the apps on Android devices. Dalvik is thus an integral part of Android, which is typically used on mobile devices such as mobile phones and tablet computers as well as more recently on embedded devices such as smart TVs and media streamers. Programs are commonly written in Java and compiled to bytecode. They are then converted from Java Virtual Machine-compatible .class files to Dalvik-compatible .dex (Dalvik Executable) files before installation on a device. The compact Dalvik Executable format is designed to be suitable for systems that are constrained in terms of memory and processor speed. – Wikipedia.
Click to expand...
Click to collapse
Just from reading that, most of you will get a brief idea, of what Dalvik really is. But let’s ask a different question. Why are the apps installed using a Java virtual machine?
This question is actually quite simple to answer. We have all had this problem: We use a program on our beloved computer and all of a sudden, the whole system crashes and requires a reboot. This can have multiple causes, but the main one, however, is that the process had an internal error, while trying to attach to a specific piece of memory. But this can only happen in natively-running apps. Apps that run in a virtual machine can also crash, that’s not what I’m trying to say at all, but when the apps crash in a virtual machine, it’s virtual. It does not affect the system – Only the virtual computer. But as good as a virtual machine can be at some times, it also has many pros. One of the… how can I put this? Superior arguments for not using a virtual machine is speed. Sure, if you’ve got a computer with a bucket-load of power, it should get easy tasks done, right? Not necessarily. A virtual machine still runs as a program which has to request access to different memory locations which then allow the virtually-running program to request access to memory from the virtual machine which then asks the host OS for the needed space. Even though this usually only takes a second or two, per operation that is, it can be really annoying when different requests are pending for an answer. That’s where native code is much better. Native code only has to request for a memory location once, and then never again. That means less queuing and more speed – Ultimately resulting in more responsiveness.
Here comes a question to you, the readers: If you were a program, with the choice to choose whether it gets run in a virtual machine or natively on the OS, which would you choose. To make the decision a bit harder, you are approx. 50MB in size, your main task is IO (In-out) and you process large files (Pictures, renders, archives, videos, etc. …) and you’ve just gone into beta.

[Q] Mobile Device Forensics

Looking for developers who can help bring this project to life.. and general discussion of how it could be done.
In the computer forensics field, when you want to see what the system was running, you make a forensic image of the hard drive (which is a bit by bit copy of the entire hard drive) and use that image file in a virtual setting to boot the machine..
I can obtain complete physical dumps of cell phones (most anyways) but how can I now virtualize that BIn file to see how the device looked to the user? What was on their home scree? icon placement etc?
The main reason to run with this in a virtual environment is that it is hard to set up a test phone to the exact specs of the users device..
So how can this be done using SDK development tools or would you need to build an program from the ground up?
Ideas?
Thoughts?
has this already been done and I am just not aware of it?

Categories

Resources