Learning ProgrammingSupport


  1. computergeek24

    computergeek24 Active Member

    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

    Advertisement
  2. Spike G

    Spike G Well-Known Member

    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
  3. paxchristos

    paxchristos Well-Known Member

    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
  4. computergeek24

    computergeek24 Active Member

    thanks guys i've been reading the forum for about a month now :p
  5. paxchristos

    paxchristos Well-Known Member

    added my $.02
  6. computergeek24

    computergeek24 Active Member

    so tell me what you do and how you find the exploits.
  7. paxchristos

    paxchristos Well-Known Member

    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.
  8. computergeek24

    computergeek24 Active Member

    would my best bet be to start with C++?
  9. paxchristos

    paxchristos Well-Known Member

    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
  10. paxchristos

    paxchristos Well-Known Member

  11. Spike G

    Spike G Well-Known Member

    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
  12. computergeek24

    computergeek24 Active Member

    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++?
  13. paxchristos

    paxchristos Well-Known Member

    If you wanna work with the internals (actual Android system) c/c++. If you wanna work with apps, java.
  14. paxchristos

    paxchristos Well-Known Member

    I have a java background as well, and transitioning from java to c/c++ is relatively easy (similar syntax, just a few changes here and there)
  15. MarkkInNj

    MarkkInNj Active Member

    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!
  16. 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.
  17. mrsduyen

    mrsduyen New Member

    You can read read and watch at: bescoursehub.com;)
    Hope this course including everything you need
  18. noaboa

    noaboa New Member

    I recomend everyone to buy this book: https://payhip.com/b/HUDS
    You learn how to make games, and Java. I have made over 5000$ with what I learnd with this book

Share This Page