• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Help Learning Programming

I am getting into programming( i know it is not an over night learn, but i am willing to spend a lot of time on it). And i really want to get into Android programming and very interested in the software of Android. I want to learn completely how rooting and how to find exploits anyone know of a good tutorial to get me started in this LONG( yes i know long and hard) journey?:D
 
Welcome to the forum! i take it you have a commando? a good place to get familiar with some commando related technical-stuff is in the root forum for the commando
for learning programming, i'd suggest online tutorials, possibly even a book, on linux. I personally use a linux computer and that's how i've learned what i know so far, but i've taken 4 years of Java programming.

For more android related programming, head over to the XDA forums this is where most of the groundbreaking 3rd party android developments take place
 
Upvote 0
I am getting into programming( i know it is not an over night learn, but i am willing to spend a lot of time on it). And i really want to get into Android programming and very interested in the software of Android. I want to learn completely how rooting and how to find exploits anyone know of a good tutorial to get me started in this LONG( yes i know long and hard) journey?:D

Ok, so this really isn't my territory (I focus mainly on kernels and am branching into custom roms, while, on the other hand, exploits deal with a secure kernel/rom and finding holes) so i'll try and give you a few pointers

First off
1) run linux (must be 64bit if you're gonna try to build anything android from source).
I suggest ubuntu 10.04 (it's stable, a lot of tools for android are based (originally) in linux, and at it's base, android is just a highly customized version of linux (that means you need to get used to linux, (IMO))

2) download/build the android sdk
link for downloading sdk: http://developer.android.com/sdk/index.html
link for how-to build sdk from source: http://jindroid.com/2009/06/08/howto-build-sdk-from-android-source-code/

3) get used to the command adb logcat and lots of reading
my best guess (if you're working off the M100 build) is that the easiest exploit will be finding somethign that gets elevated in uuid to 1 (i.e. a system app that needs root priviledge for something)

4)If that doesn't work (purely speculation here) start reading lots and lots and lots of source code. linux (Android) is built in c/c++ then cross compiled to the ARM architecture
helpful links for linux exploits
http://en.wikibooks.org/wiki/Metasploit/WritingLinuxExploit (goes through a sample exploit)
http://cyberarms.wordpress.com/2010/10/14/how-to-find-program-vulnerabilities-and-create-an-exploit/ (talks about another exploit)
http://www.internetnews.com/dev-new...ng+Linux+Bugs+Before+they+Become+Exploits.htm (interesting writeup about exploits
http://www.yolinux.com/TUTORIALS/LinuxSecurityTools.html (As the page says, security/audit/hacker tools for linux (i'm pretty sure the won't work on android tho, because they aren't cross compiled for it, but hopefully it'll give you some ideas)

5) What might be help is figuring out how to build the commando as an emulator on your computer so you can mess with it without screwing it up
(intro: http://developer.android.com/guide/developing/tools/emulator.html
actual use: http://developer.android.com/guide/developing/devices/emulator.html )

Pax
 
Upvote 0
so tell me what you do and how you find the exploits.

Me, I'm (currently) a computer science major at my local university, and finding exploits is like finding a needle in a haystack. You need to pay attention to logs and code. The logs well tell you when a process gets elevated permissions, whereas the code will let you see if there are any holes you can use to give yourself elevated permissions. It is a very time-intensive process, and I honestly don't have the time to do it.
I have a wife, a 9 month old son, I work, I goto college, I'm working with kernels (the ultimate root is in the ramdisk, (what's used to start up the kernel) there's an on/off switch that says whether or not a device is allowed to be rooted without an exploit) and porting Android, (vendor rils (radio interface layer (what allows the baseband and Android to interact)) are the point I'm currently stuck at) and in whatever free time I have left, I like to hop on my ps3 and get my game on :p

If I were to completely drop kernels, porting and gaming, I might be able to find an exploit in 3 or 4 months (if I got very lucky.) Right now that's not an option because I'm (currently) working on porting a newer version of Android to my phone (Xperia Play) (see vendor rils.)

if you want some pointers as to what to look at, which have about a 50/50 (it will or it won't) chance of working, check (disassemble/decompile) the innopath app. Root privileges are needed to reboot the phone, and my wag (wild a** guess) is that if you can break it down, strip out the part where it calls for for a reboot, put it back together, you might have a shell root you can turn into a device root. Once again, wag, that probably won't work, but an idea.
 
Upvote 0
would my best bet be to start with C++?

Linux is based in C/C++, so yes, if you wanna start messing with programs in android, that's all Java based, but luckily there are only a few differences in C++/Java

(level of difficulty (top is least difficult to bottom ones have been known to drive lesser men mad) for programming)
Python
XML
HTML
Basic
Java
C++
C
Assembler
Machine Level
Binary
 
Upvote 0
The one reason I hate developer.Android.com is because it's geared toward app development, rather than Android systems

I've noticed. it was a rebuttal towards windows who recently did the same thing to increase app development on their mobile platform. I figured since it's the official training tool from android, he could get some use out of it being a beginner
 
Upvote 0
Linux is based in C/C++, so yes, if you wanna start messing with programs in android, that's all Java based, but luckily there are only a few differences in C++/Java

(level of difficulty (top is least difficult to bottom ones have been known to drive lesser men mad) for programming)
Python
XML
HTML
Basic
Java
C++
C
Assembler
Machine Level
Binary

I know HTML, CSS, and Javacript, I also have worked with some Java creating a few minor apps for personal use, just wondering if i should continue java( for Android or just plain java) or go with C/C++?
 
Upvote 0
Welcome dude. I, as you, have been trying to learn. My brother, who is only 14 has surpassed any learning curve i've seen.. Oh the younger generation. I am in no way that programming 'inclined' and to be honest, I am, like you willing to learn. I am not sure if you are in high school, college, or just learning for fun, but I can tell you when you get something, it is awesome! lol I am not a computer science major, I'm actually Organic Chem/Pre-med. So I rarely have the time to do anything. But I try. I bought a book for myself and sent one back home for my brother called Android Development for beginners. It cost like 12 bucks off amazon. But I've been poking around and have learned a lot about stuff on here and xda. But best of luck dude! You're in the right place!
 
Upvote 0
Hi,
Since you are determined, the best thing you can do is to reserve a bunch of consecutive days for a programming crash-course. Considering that you are a beginner, my best advice is to concentrate on learning only one of the many programming languages at first.
Do not bother yourself with any other language. The "here and there approach" will not work. You can easily fall in the never-ending online debate "What is the best programming language?". But this makes no sense. The truth is that every language is there for a purpose.
One thing that may help in learning your first language is to have an idea to build something specific. It is easier to learn when you have a well defined problem. This is like having a purpose and doing what it takes to achieve it.
My best advice is to learn from professional, like Shawn Arney's three-day IPhone and iPad programming course at Udemy.com. I learned a lot from him and I have already designed my first iPad application. The best thing in the course is that you can learn by example and whenever you have a problem, you can ask shawn for help.
 
Upvote 0

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones