[Q] Noob trying to become a dev. - General Questions and Answers

This thread may be pointless but I don't care. I can't find a straight general answer.
I am kind of new to Android modding but have ok skills with coding and decent skills with Linux (I know how to survive in a shell).
What are good code examples or what are the best methods(exploits) used to privilege escalate a shell?
Do I need to find a hole in the Linux kernel or try to hijack an active process running as root?
What is needed to crack the bootloader? I know I'm asking a lot and most of my terms used may be wrong but I find it hard to take that next step. Would I find answers by reading an Android developers book?
Please, where do I start???

There are many options in the development criteria, the two main consist of OS Development (Roms) and Application Development.
Judging by what you're stating, I think you're trying to work towards OS Development? Correct me if I'm wrong.
I know I'm being a bit cheap by not typing out everything needed, as I will have to put some time into that... But the official CyanogenMod wiki shows you how to set up a building environment on Mac, Windows and Linux.
From there they explain in detail on what shell commands you must use to run exploits and such. They also explain what specific components and files do and how you can modify and update them from what I have previously seen. The site also shows you how to build a ROM for your device itself, using the CyanogenMod source of course, the method applies to all source to be honest.
Here's a link to the website - http://wiki.cyanogenmod.org/w/Main_Page
If this wasn't what you were asking for let me know so I can explain furthermore.
Krish.
Sent from my Nexus 5 using Tapatalk

Related

The Path to Developer

Dumbest question yet:
I have no coding or developement background, but have recently become fascinated by the android os and what you, the developers, are able to do with it. I am toying with the idea of obtaining root and running jf's mod, but feel as if I am disrepecting all of the work that all have contributed by simply following a list of instructions, and not truly understanding what each step and its outcome means.
What steps can I take to fully understand your (the community) work and to someday contribute something of my own.
Classes, recomended reading, recomended os to switch to (currently mac 10.4), coding languages in what order?
Please help turn an advanced casual user into a baby, even fetus, even embryo, of a developer.
there's an android 'boot camp' in Georgia next month if you have 3500 to throw down. i too have jumped on the wannabeadeveloper wagon. i'm sure there will be books coming out in the near future on beginning android development. i kind of just jumped right into it all, downloaded the sdk, got root, and tried to become more familiar on how it works. get the engineers bootloader if you are going to be working on your phone. and I dont know if its the best os to switch to but i just killed xp and installed ubuntu 8.10 on my comp so i can become more familiar with codes and commands. i'm sure real devs could probably help you out more, but check out some guides, read some tutorials.
fattywarbucks said:
but feel as if I am disrepecting all of the work that all have contributed by simply following a list of instructions, and not truly understanding what each step and its outcome means.
Click to expand...
Click to collapse
Just having read the directions is probably respect enough. If you want to actually understand the computer science behind the hacks, you should check out some books on Linux fundamentals and shell scripting from your local library.
If you want to develop applications for Android, then you could either get some books on teaching yourself Java or sign up for an Intro to Java course at your local community college.
p.s.: it was a very good question and not at all dumb.

Getting down to Android

Hi all!
I'm sort of new here, although i've been reading forums for quite some time now.
I have a Galaxy S (the main reason i'm here in the first place), and given i have a programming experience on different platforms i figured - what the hell. I am planning to try myself in Android apps development and possibly get down to custom ROMs and all that jive.
It is obvious where i should start with development (e.g. download SDK, read some tutorials, books etc.). As for messing with ROMs, i couldn't find an easy introduction to that. I mean, come on, everyone can root the device and install Voodoo lagfix (as i did already), but actually *creating* these ROMs is another story. If someone could possibly point me in the right direction (i just don't know where to start) it will be very appreciated.
P.S. I'm not your usual noob. I am neither afraid of command line, nor technicalities that are involved with this, and i completely understand that this will require HELL OF A LOT of reading, understanding, learning, and i completely understand that all this is way above my current knowledge, that's why i'm interested in the first place.
I think a good start would be to search tutorials for "deodexing" as this is one of the methods to prepare a ROM. From there it should lead you deeper into the rabbits burrow.
Thanks for the tip. Now i have questions that are probably belonging to the Chef section (started to read threads in there and realized that i should have started reading that section in the first place), but anyway.
If i compile the AOSP from source - will it work straight away on any device? Probably not, as the hardware needs drivers and stuff. So, next thing is drivers. As my device is Galaxy S, you can assume that all i ask is related to that device.
I saw that the open-source package (including the drivers) for Galaxy S has been released by Samsung. Does that mean that i can take Eclair AOSP source, copy the drivers, compile and use the result on my device? Well, probably Samsung made some modifications to the kernel, so it would be good idea to copy the kernel source too (i have never done kernel development before but i hope i have a somewhat general idea of how things work down there).
Anything else i need to be aware of?
Following the advice given earlier, i have googled for deodexing and ended up having a folder full of apk's. Does that mean that if i wish to install some Samsung stock apps (like camera) - i can take these apk's and install them as a regular app (or even include them in a resulting vanilla android ROM)?

Looking for the source

A couple of weeks ago I bought myself my first android device (a cheap LG GT540), and since then I've been playing a lot with it.
Noticed that android hackers community is quite big and there are lots of tools which can do kind of anything, but sadly I'm kind of disappointed because I'm having some issues in understanding HOW things work: in order to root my device, install custom ROMs, resize partitions and so on, I had to use a few tools that I have no idea of what they're doing.
To me it looks like that in this forums it's much easier to find a GUI that does everything you need, rather than understanding what needs to be done and how to do it. IMHO this is bad for a community of hackers.
In particular I'd like to understand how the following tools work (both for personal knowledge, and because some of these only work on windows, and I'd like to port it on Linux), and if available, I'd love to put my hands on their source code:
SwiftBootloaderBuilder: it's a tool used to resize flash partitions. I'm prone to think that it might just be a frontend for fastboot, but hum, the fastboot binary I own seems to be missing the capability of handling partitions...
KDZ: it's a tool to upgrade the firmware which I had to use in order to install on my device a custom ROM with fastboot enabled. How the heck does it work? This tool forced me to find and use a windows system to hack my GT540...
Android Developers is a great place to get started understanding how Android works. There you will find much of what you need to know to get a BASIC understanding of Android. If you follow the guides and advice you can create a basic apk that does little except teach you. CyanogenMod wiki is also a great place to learn. One thing about Android is that is is very much like Linux built for specific hardware. Many, and I do mean many, of the same principles apply to both systems. Digital signatures, ownership privileges, file permissions, compiling from source, git, gerrit, google code etc, are all things that a developer runs into everyday working with open source software of any kind. Go to every place I mentioned, sign up, and start asking more questions. Learn C++ and JAVA. Join freenode irc and find some friends who will answer questions while you learn. XDA is the least resource for the development community. XDA is the expression of ALL the other resources. I am new to this also, and have done what I suggest, except the programming languages, which I am working on. Use root explorer to look at your device file system. Ask the developers of the tools you mentioned to help you understand them. A LOT goes on behind the scenes, but it takes a little direction and determination. Cheers!

How should I start? Android dev.

First, I know there are some other topics out there asking the same exact thing, but I think my situation is kinda different.
So, want to learn how to develop for Android. Building custom ROMs, Android apps, tweaks, etc. But my actual knowledge is only user lever. I only know what a android user should know (flash ROMs, root, etc). Zero dev knowledge. Nothing.
I want to know with what should I start to learn to do Android dev. Nothing like: 1 hour and you're the best dev out there. I know it takes time. But I want to focus on Android.
So, what do you have to say?
In very general terms it would be to pick one of your favorite roms for your phone, pull it apart and then put it back together until you understand what is going on.
In more "specific" (though this is frankly scratching the surface) terms, you would first spend hours finding out how to back up your phone including the AAA key, the meid and so forth as well as other software compatible with your phone to restore it. As frankly since you're likely using your phone to test, you'll have more than one occasion it will be soft bricked.
Thereafter you would learn more in regards to development tools, in specific over at developer.android.com. Read the dev guide and so on.
Third, decide how you want to implement a unix/linux test environment, unless you're already on linux.
And forth you'd look at your favorite rom developer's build from their development site (the name of the domain escapes me) pull it apart and try to analyze the details.
Last but not least you'd FOLLOW new developments with android and the phone as well as learn to adjust to any new firmware that comes out from the manufacturer.
I'm in the process of learning how to develop myself but I've already discovered a lot more with the phone's underlying structure. That said, a lot of the answers are found in bits and pieces on this forum. But when you start to learn and ask specific questions like "what partition is the system mounted on for a Samsung Galaxy Ace" you'll begin to understand the file structure and then underlying software involved.
This was very helpful. I'm glad to see there are helpful people here that aren't going to talk down to a "new user" and I was also wondering how I could view files on windows 7. For example the structure of apk files or any of the others that say no program found to open this file
For example I want to begin by changing the boot screen from the solar flare looking Android boot screen to scrolling tiles or something of the sort then back can some explain that and I'm sure I can gain quite an understanding on the process that way
Sent from my SGH-I777 using xda premium
If you want to do programming you should start with the Android SDK: http://developer.android.com/sdk/index.html
An apk file is actually a zip file.
If you want to get an idea of all the stuff that is in there, just rename it to .zip and open with your favorite utility.
The contents of this archive file are also in binary form and compressed.
To get down to the lowest level you need to use something like apktool: http://code.google.com/p/android-apktool/
Much obliged I'll do that. Any Intel on boot.img
Sent from my SGH-I777 using xda premium

Android Development Direction

Hey, I'm beginning to (or, planning to) get started with Android Development (Not really Android App Dev, but Android itself. Things like, porting to devices, modifying and customising ROM's.), and I need some direction. I'll present what my skills are or, what I already know, and what I think I'll need to do to get started.
When it comes to code, my main expertise resides in web-development. HTML/CSS/Javascript/jQuery/PHP/MySQL/etc however, I've gotten pretty comfortable with Python and using that for computer programming, and a few years ago, I picked up C++ for a short while and learned some basic stuff there.
I am able to read code.. As in, if someone presents to me a problem with a snippet of code they have, I can read, understand, and usually provide a solution to their problem. However, I have noticed when looking through GitHub projects, I don't have a great time understanding the file structure or, where to start. Web programming usually starts with an index.html/php/etc or even C/C++ start with a main.c/main.cpp. Without documentation, which is usually not provided, I find it incredibly difficult to read through, understand, and thus, I can't really fork it.
I've also done some networking in Linux, modifying routing tables and iptables too.
My planning for getting started with Android Development is as follows:
Learn Java to a comfortable level,
Learn how Google's Repo/Gerrit tool(s) work,
(For porting) Find documentation on a device's components, learn how drivers are coded, and documentation on Android's layout/structure, figuring out how to modify it to work for a specific device,
(For modifying) Should be easy once I understand how the structure of Android's source works.
Other than the learning Java part, I need a lot of direction here. What have I left out, where are the best places for me to find things I need, etc.
If anyone can help me out here, I'll be in your debt. Thank you!

Categories

Resources