Decompiling APKs - Other Tools & General Discussion

Hello Everyone,
I was wondering, in this day and age what tools do I need for decompiling APK Files? I am also assuming that these tools would also serve me well if I just wanted to edit a file in an APK. If not, then what tools do I need for that as well?
I have scoured the net and found pages that gives many different answers. However those pages are from 2012 on back. So it could be old out dated information.
For now I am assuming the minimum Java JDK, Eclipse (or the new program that was highlighted a month back here on XDA but I forget the name of it), Android SDK, and a Java Decompiler (But which one is best??)
Guidance...Anyone...Anyone...Bueller?

After 52 Views no one has any suggestions? If you all think I answered my own question, that's fine but at least if someone has a suggestion on what a good JAVA Decompiler is to use, that would be helpful?
Thanks all.

Neither Eclipse nor the SDK would help you decompile apps.
To get the resources, use Apktool.
To get the Java, use Dex2jar and JDGUI.
Or use a simplified tool like VTS.

Related

How do i develop a C# or C++ app to copy files

Basically what i want to do is what M2DC does.
i want the program to list all the .zip files that are in a certain theme folder and then when you apply the theme, it unzips the file and copies whatever is in that file and copy it to the windows folder.
Please help me.
i know NOTHING about programming.
you dont even need to show me, even if you give me a link that give me the necessary information to help me do so.
btw, i have Visual Studio 2008.
http://msdn.microsoft.com/en-us/windowsmobile/default.aspx
that is microsofts windows mobile developer center you may find some stuff there, but if you have no programing experience you may just want to get the developer of m2dc to help you out getting started
best of luck
forgot to mention i already looked there.
good tutorials. just none of which help me in this situation.
kidnamedAlbert said:
Basically what i want to do is what M2DC does.
i want the program to list all the .zip files that are in a certain theme folder and then when you apply the theme, it unzips the file and copies whatever is in that file and copy it to the windows folder.
Please help me.
i know NOTHING about programming.
you dont even need to show me, even if you give me a link that give me the necessary information to help me do so.
btw, i have Visual Studio 2008.
Click to expand...
Click to collapse
Did you download the free copy of visual studio?
bedaweed said:
Did you download the free copy of visual studio?
Click to expand...
Click to collapse
i have the full version
the only reason he would have asked is that you have to have the full version for windows mobile development....
okay well i do.
but im not a programmer so i need some help.
i started trying to jump in just recently, mostly i've just been skinning before so i am in the same boat
this is the c++ library reference, it may provide some help.
http://msdn.microsoft.com/en-us/library/cscc687y.aspx
the code should be the same on a pc performing the same operation
so such code exmpls should be fine too
i tried to do some searching but it appears that there is not very many beginners tutorials for windows mobile so I will just put a couple of suggestions out there.
If you have never written code before I would recommend starting with C#
I personally use C++ but that is because I started writing C++ while still in high school before C# even existed. From what I can tell C# would be a much less painful experience that learning c++.
If you are not all that interested in learning the ins and outs of programming I would take a took at mortscript because that basically gives you just about everything that you would need and I just checked the documentation they have everything you need, the ability to unzip files and make a simple gui
Whenever looking about learning a new programming language you will do best to look for a "Hello World" example, whenever I learna new language / platform (like i am currently doing with android) I always look for a hello world example so that I can get something simple up and running
I end up getting a lot of information from http://www.codeproject.com/ and http://www.pocketpcdn.com/ sometimes the information is outdated, but it is usually pretty good.
The latest and greatest programming website is stackoverflow.com You can ask a question and Usually you will get an answer to your question in a day or so.
If you are ever interested in looking at some C++ things you can look at the full M2DC source code by downloading the zip file from the google code page (latest source code). In the zip file there is a sln file somewhere, that is the entire solution for the program. You should be able to open that file with you copy of visual studio and build a fully working copy of M2DC
good luck
How to teach programming in one post...
Well I don't know where to start, Developing C# apps for PPC is similar to developing desktop apps. The best way to learn is to see what others have done and copy across the code you need (Lookup Popfly Development ).
I'd try and find the code for this in a Normal WinForms app to do this and then port it across to the PPC App.
I'd do it in C#. The un-zipping maybe complicated, I'm not sure what ZIP code is in the .Net Compact Framework.
Let me know if you need any help, I might even knock some code together for ya.
Ta
Dave
mpenguin14 said:
i tried to do some searching but it appears that there is not very many beginners tutorials for windows mobile so I will just put a couple of suggestions out there.
If you have never written code before I would recommend starting with C#
I personally use C++ but that is because I started writing C++ while still in high school before C# even existed. From what I can tell C# would be a much less painful experience that learning c++.
If you are not all that interested in learning the ins and outs of programming I would take a took at mortscript because that basically gives you just about everything that you would need and I just checked the documentation they have everything you need, the ability to unzip files and make a simple gui
Whenever looking about learning a new programming language you will do best to look for a "Hello World" example, whenever I learna new language / platform (like i am currently doing with android) I always look for a hello world example so that I can get something simple up and running
I end up getting a lot of information from http://www.codeproject.com/ and http://www.pocketpcdn.com/ sometimes the information is outdated, but it is usually pretty good.
The latest and greatest programming website is stackoverflow.com You can ask a question and Usually you will get an answer to your question in a day or so.
If you are ever interested in looking at some C++ things you can look at the full M2DC source code by downloading the zip file from the google code page (latest source code). In the zip file there is a sln file somewhere, that is the entire solution for the program. You should be able to open that file with you copy of visual studio and build a fully working copy of M2DC
good luck
Click to expand...
Click to collapse
actually thats the first thing i tried(using m2dc as a template)
but i was super confused.
i tried taking out unessicary things like softkeys, background, internet, etc. but it didnt want to build. and plus, i probably did it all wrong.
if i cant get a good mortscript to do it, ill look into those websites you recommended me.
im in high school right now and im trying to find classing that will teach me some basic programming.
my school is filled with idiots though.
but im moving to a different city, so maybe they can teach me better than i would here.
thanks again.

[Q] How to become an Android developer?

I've seen all the work you guys here at XDA developer do (and it's all really great).
And i'd really like to be able to develop stuff for android devices like you guys!
I know how to use Eclipse to develop apps and i've made a few apps already (no games or any real good stuff because i'm still learning right now).
But I want to be able to develop ROMs,kernels,...etc.U know!!
I've signed up for a java coarse at "New Horizons" training center and i'm gonna start in about a month.
But that won't teach me everything,it won't even teach me everything about application-creating
So,here I am,asking you guys (android developers):
How can I learn the stuff that you've learned?
What websites should I check out?
Where and how can I learn how to develop complete apps,games,Roms and kernels for any android smartphone?
In other words;Tell me how you learned all this stuff,and how can I learn it too?
Thank U!!!
Custom ROMS are not created from scratch.
Existing ROMs from the manufactors are taken appart, dissected, modified and packed again to be uploaded here.
The best way to start on that is just by taking apart existing ROMs and looking through the files.
Modifiy some, repack them and check if it still works.
Repeat said process .
If you want to go deeper read up about decompiling & recompiling apk files.
Modifying bak smali code.
For creating your own kernels, just use google, so much info about that. Its not an android only topic, but a linux topic and the internet has plenty of info on that.
Good luck on your journy .
The first thing you have to do is to understand the system. This means you have to understand Linux, the kernel, the datasystem(because Android is obvisiously based on Linux).
You have to be able to understand written code or program/code yourself.
The best way to code for android is to learn java.
Read this here: http://developer.android.com/guide/index.html
Ok,thanks for the information.
But let me tell you what I already know and understand:
Android is Linux,I know what linux is,I know everything about it and i'm already using GNU Fedora and Ubuntu (I have spent countless hours reading the "about Ubuntu" and "about GNU"),In Android or Linux everything is a file and everything in the system or the apps has a file .
Now I have some questions that I need you to answer first before adding anything else:
1-Is learning Java enough?don't I need to learn any other programing languages?And if I do,then what languages will I need to learn?
2-how can I learn to build or modify an android kernel (linux)?give me a good site or something?
3-how can i learn to decompile and recompile apks and roms?
4-What will I be needing to learn in order to buid a kernel?
5-What programing langusge is the android source code written in?I think it's java,am I right?
I hope you answer these questions before adding anymore information.
Thanks in advance,and I hope it's not any trouble)
1-No, you need to compile and modify kernels etc. therefore you need to program in C(I guess)
2- Well, buy books about Linux and Kernels etc. Its quite difficult to teach it. You gotta learn yourself.
3- Decompiling and recompiling is not an option. Its like stealing - Dont modify apks without permission. If you got permission then you modify apks with the SDK(Java).
Roms are often compiled in C(I think)
4 - Books and the will to learn.
5. Android Source Code is C(like Linux), Android Apps are Java.
Quinity said:
1-No, you need to compile and modify kernels etc. therefore you need to program in C#(I guess)
2- Well, buy books about Linux and Kernels etc. Its quite difficult to teach it. You gotta learn yourself.
3- Decompiling and recompiling is not an option. Its like stealing - Dont modify apks without permission. If you got permission then you modify apks with the SDK(Java).
Roms are often compiled in C#(I think)
4 - Books and the will to learn.
5. Android Source Code is C#(like Linux), Android Apps are Java.
Click to expand...
Click to collapse
Just making sure you mean c, not c# right??
Try visiting the android website. There is a tutorial on how to get started with android development.
There is a fee that you would need to pay per year in order for your application to appear on the android market where you will be able to sell your product.
Java will be advantageous when it comes to android programming and if you know J2ME that will be a bonus as well.
ps:Learn from examples, buy a good book for beginners: “Hello, Android” and “Beginning Android“.
(i’m not a developer)
Nilurun said:
There is a fee that you would need to pay per year in order for your application to appear on the android market where you will be able to sell your product.
Click to expand...
Click to collapse
I believe it is a one time fee when you sign up, not a yearly fee.
Ok,I'm already using the Android developer website,but the whole thing takes time to read all the guidelines and do tutorials and packages.
So all i'm asking here:
What programming languages do I need to learn in order to be able to understand the native android source code and develop everything starting from kernel down to apps,I already know that I need to learn Java for apps and thanks to "Quinity" I know I need to learn C to understand the native source code.
I can easily learn C at any professional training center.The questions now are:
1-how and where can I learn to edit the Linux kernel and decompile and recompile ROM and APK files?
2-why do I even need to learn Java ME (formerly J2ME)?
I understand that Java ME is the java environment originally running on small devices with limited processors and performance such as mobile phones and smart phones,but what is the use of it when it comes to the app development,or any Android development at all?
And thanks for all the replies.
One more thing,I have to make sure what the android source code written in.And Quick answers;PLEASE.
Is it C,or C#?
C
Check out the wikipedia article, which states at the beginning:
The Android open-source software stack consists of Java applications running on a Java-based, object-oriented application framework on top of Java core libraries running on a Dalvik virtual machine featuring JIT compilation. Libraries written in C include the surface manager, OpenCore[21] media framework, SQLite relational database management system, OpenGL ES 2.0 3D graphics API, WebKit layout engine, SGL graphics engine, SSL, and Bionic libc.
Dark3n said:
C
Check out the wikipedia article, which states at the beginning:
The Android open-source software stack consists of Java applications running on a Java-based, object-oriented application framework on top of Java core libraries running on a Dalvik virtual machine featuring JIT compilation. Libraries written in C include the surface manager, OpenCore[21] media framework, SQLite relational database management system, OpenGL ES 2.0 3D graphics API, WebKit layout engine, SGL graphics engine, SSL, and Bionic libc.
Click to expand...
Click to collapse
Thanks,the article really did help a lot.
So,now I need to learn Java SE (without question),but what about Java EE and Java ME,will they be useful in the app development process,will I need them?
And what If I can't learn C (it's extremely hard to find a training center that teaches C these days),will learning C++ or C# do me any good?
I know that the source code is written in C,but is it really a big difference between the three,If I learn C# or C++ will I still be able to do everything I need to do and fully understand the code?
note that i'm on a tight schedule for now and I need to learn only the stuff I can't do without.
speeed_demon47 said:
Thanks,the article really did help a lot.
So,now I need to learn Java SE (without question),but what about Java EE and Java ME,will they be useful in the app development process,will I need them?
And what If I can't learn C (it's extremely hard to find a training center that teaches C these days),will learning C++ or C# do me any good?
I know that the source code is written in C,but is it really a big difference between the three,If I learn C# or C++ will I still be able to do everything I need to do and fully understand the code?
note that i'm on a tight schedule for now and I need to learn only the stuff I can't do without.
Click to expand...
Click to collapse
I think you are missunderstanding something here.
You should start by just learning java, the different EE ME SE etc. are still java.
The difference is that those are sets of java platforms. They bring, as does the android platform, prebuild libaries along, these contain functions (i.e. print that, create datastructure X) so you don't have to write every tiny bit of code.
Forget about those.
You want to use java on the android platform, which still uses java, but brings along its own libaries with prebuild code you can use ( See http://developer.android.com/reference/packages.html ).
So just learn java, if you want to work with android you can learn java on the android platform, this way you will already be familiar with the libaries provided by android.
I would say C# is more similar to java and C++ is more similar to C.
I don't understand what you mean with "do everything i need to do".
What do you need to do?
"Understand code".
Understanding code does require more than knowing what each line does, you will have to see the bigger picture ,not just few lines of code, to understand what is does. Depending on how the code is written (tidy or confusing), is the code commented? It might take ages to understand it.
Programming is sometimes a bit like art . Code can be beautiful or horrible
You don't have to do everything in a training center either.
The internet, time and interest is enough. There are so many tutorials and pages available...
You could have also found most of the answers by just using google...
Wikipedia article about java holds the information about the differences between EE/ME/SE etc...
Searching for terms like "difference C C sharp" etc. holds the answer to that question...
So maybe a training center is better for you to learn those programming languages, as "google skills" will certainly be required to teach you those things yourself.
What tight schedule are you on?
Dark3n said:
I think you are missunderstanding something here.
You should start by just learning java, the different EE ME SE etc. are still java.
The difference is that those are sets of java platforms. They bring, as does the android platform, prebuild libaries along, these contain functions (i.e. print that, create datastructure X) so you don't have to write every tiny bit of code.
Forget about those.
You want to use java on the android platform, which still uses java, but brings along its own libaries with prebuild code you can use ( See http://developer.android.com/reference/packages.html ).
So just learn java, if you want to work with android you can learn java on the android platform, this way you will already be familiar with the libaries provided by android.
I would say C# is more similar to java and C++ is more similar to C.
I don't understand what you mean with "do everything i need to do".
What do you need to do?
"Understand code".
Understanding code does require more than knowing what each line does, you will have to see the bigger picture ,not just few lines of code, to understand what is does. Depending on how the code is written (tidy or confusing), is the code commented? It might take ages to understand it.
Programming is sometimes a bit like art . Code can be beautiful or horrible
You don't have to do everything in a training center either.
The internet, time and interest is enough. There are so many tutorials and pages available...
You could have also found most of the answers by just using google...
Wikipedia article about java holds the information about the differences between EE/ME/SE etc...
Searching for terms like "difference C C sharp" etc. holds the answer to that question...
So maybe a training center is better for you to learn those programming languages, as "google skills" will certainly be required to teach you those things yourself.
What tight schedule are you on?
Click to expand...
Click to collapse
Yes,I already know all about java,I read the articles on wikipedia,but why would I need to learn java enterprise? Isn't it mostly used around internet applications and servers? Can't I just use the APIs if i'm going to build an app that needs internet or server connectivity?
And why would I need to learn java Micro? Doesn't android use dalvik virtual machine to run apps? I mean,java Micro is mostly used to create feature phone apps,why would I need it with android?
There's something I don't understand though,on wikipedia the article about android says this:"Applications are usually developed in the Java language using the Android Software Development Kit, but other development tools are available, including a Native Development Kit for applications or extensions in C or C++"
So,the question is;what is the difference between apps developed in java and apps developed in C or C++?
The problem about C# is that I don't know anything about it;can't find any articles on wikipedia and other sites really don't help!!!
I meant by "understanding the code",having the ability to understand the command lines,what they do,what each line is responsible for and having the ability to edit or adjust something,.....etc.
And for the tight schedule;I need to learn everything about android within 6 months (I don't need to learn C as much,but it'd be a bonus),and that's why I go to training centers,faster and more efficient than self learning.
What did u mean by "google skills"?
And what did u mean by "learn java on the android platform"?
Thanks for the help and providing quick answers.
speeed_demon47 said:
Yes,I already know all about java,I read the articles on wikipedia,but why would I need to learn java enterprise? Isn't it mostly used around internet applications and servers? Can't I just use the APIs if i'm going to build an app that needs internet or server connectivity?
And why would I need to learn java Micro? Doesn't android use dalvik virtual machine to run apps? I mean,java Micro is mostly used to create feature phone apps,why would I need it with android?
There's something I don't understand though,on wikipedia the article about android says this:"Applications are usually developed in the Java language using the Android Software Development Kit, but other development tools are available, including a Native Development Kit for applications or extensions in C or C++"
So,the question is;what is the difference between apps developed in java and apps developed in C or C++?
The problem about C# is that I don't know anything about it;can't find any articles on wikipedia and other sites really don't help!!!
I meant by "understanding the code",having the ability to understand the command lines,what they do,what each line is responsible for and having the ability to edit or adjust something,.....etc.
And for the tight schedule;I need to learn everything about android within 6 months (I don't need to learn C as much,but it'd be a bonus),and that's why I go to training centers,faster and more efficient than self learning.
What did u mean by "google skills"?
And what did u mean by "learn java on the android platform"?
Thanks for the help and providing quick answers.
Click to expand...
Click to collapse
You miss understood again...
I will try to be clearer:
I meant by google skills, that you would find most answer yourself if you just use a search engine with the right terms.
You DONT need to learn Java ME/SE etc.
You can and will only use the APIs provided by the android toolkit.
So if you already know java, google "android developement tutorial" and start build some apps to get experience.
Forget C#, you don't need that, AT ALL for android.
Android apps, only need java.
If you want to understand the deeper layers of android, those are written in C.
But "int i=0;" is a variable i with value 0 in java and in C. So if you just want to read some of the code of the deeper layers and change small bits, you don't need to take extra courses in C.
So the conclusion is, you need to understand the android architecture and be able to write apps and have experience...
I would recommend to just think of some thing and write an app for that, learning by doing. Occasionally you can read some theory about the underlying concept of what you are doing.
An example would be to write an app that sorts values the user enters.
You would use already premade sort and array functions from the android api
Something like
Code:
Array x;
x.addAll(y);
x.sort(Descending);
To get deeper knowledge you could then browse the android sourcecode and see how x.sort actually sorts the array.
I think Android application is writen in Java ?
But maybe it is not that your question?
Dark3n said:
You miss understood again...
I will try to be clearer:
I meant by google skills, that you would find most answer yourself if you just use a search engine with the right terms.
You DONT need to learn Java ME/SE etc.
You can and will only use the APIs provided by the android toolkit.
So if you already know java, google "android developement tutorial" and start build some apps to get experience.
Forget C#, you don't need that, AT ALL for android.
Android apps, only need java.
If you want to understand the deeper layers of android, those are written in C.
But "int i=0;" is a variable i with value 0 in java and in C. So if you just want to read some of the code of the deeper layers and change small bits, you don't need to take extra courses in C.
So the conclusion is, you need to understand the android architecture and be able to write apps and have experience...
I would recommend to just think of some thing and write an app for that, learning by doing. Occasionally you can read some theory about the underlying concept of what you are doing.
An example would be to write an app that sorts values the user enters.
You would use already premade sort and array functions from the android api
Something like
Code:
Array x;
x.addAll(y);
x.sort(Descending);
To get deeper knowledge you could then browse the android sourcecode and see how x.sort actually sorts the array.
Click to expand...
Click to collapse
Ok,good,thanks.
So,I don't need EE or ME,right? But if I learn them later on (maybe next year or so),would they come in handy or would they be useless?
I've been developing in Eclipse and SDK with ADT plugin,it's very helpful and I've completed most of the tutorials so far (hello world,tom cat,......etc) and started building something of my own.I've been also using Titanium app accelerator,it's really good too (still mainly eclipse but the tutorials and help are better);but so far all i've done is just copy the code and that's all,I didn't write a single line of code (maybe a few lines,but that's it).
I also started a course a week ago (learning Linux kernel),so far so good,And I found a good site to teach me image files.
But a little hung up on the programming languages section,so,conclusion;I need to learn Java Standard,would enterprise or micro be any good?
And about the native source code,will java be enough? won't I need to learn C?
Thanks for the quick responses,it's a lot of help.
HuTcHx said:
I think Android application is writen in Java ?
But maybe it is not that your question?
Click to expand...
Click to collapse
I already know that,but that's not what i'm asking about.
The enterprise edition and what not just offer different sets of libary for other platforms, aslong as long as you program for android devices you will have little use for knowledge of the other editions.
Think of it as being a specialised technican for cars. They all have engines and 4 tires and a steering wheel and all technicans can work with that, but will you work in a VW repair shop or in the Mercedes repair shop?
In this case you will work on the android platform, as long as you don't want to switch to server programming in java (Java EE) or embedded systems (Java ME), there is no need to get familiar with that.
Java SE means standart edition and basicly already included in the android libaries.
If you don't want to keep copy pasting code, try something different that has not been done in a tutorial, or modifiy a tutorial to do something else.
But there is nothing wrong with copying code, if you have written a good piece of code there is no harm in reusing it elsewhere.
The android sourcecode is a mix of java and C, the lower layers are written in C the higher ones in java.
I don't know what you want to achieve with your knowledge? To write apps you don't need to learn C.
It is difficult to master all fields, easier if you choose one.
Dark3n said:
The enterprise edition and what not just offer different sets of libary for other platforms, aslong as long as you program for android devices you will have little use for knowledge of the other editions.
Think of it as being a specialised technican for cars. They all have engines and 4 tires and a steering wheel and all technicans can work with that, but will you work in a VW repair shop or in the Mercedes repair shop?
In this case you will work on the android platform, as long as you don't want to switch to server programming in java (Java EE) or embedded systems (Java ME), there is no need to get familiar with that.
Java SE means standart edition and basicly already included in the android libaries.
If you don't want to keep copy pasting code, try something different that has not been done in a tutorial, or modifiy a tutorial to do something else.
But there is nothing wrong with copying code, if you have written a good piece of code there is no harm in reusing it elsewhere.
The android sourcecode is a mix of java and C, the lower layers are written in C the higher ones in java.
I don't know what you want to achieve with your knowledge? To write apps you don't need to learn C.
It is difficult to master all fields, easier if you choose one.
Click to expand...
Click to collapse
So,learning java enterprise isn't really important;but is it important if I want to excel in the development process?
But what's the use of learning Micro edition AT ALL when it comes to android development???
Isn't it used to develop apps for feature phones and PDAs,not smartphones?
And after I learn Java standard will I need to learn any special libraries for android? I mean,will I be able to get to writing the code right away or do I need to learn about the android files and libraries? or are they java standard already? I know I need to learn to compile the packages,but is that it?
And what about XML files,I can do them with JDK or Apache Ant,right? so,I don't need to worry about them,do I?
I'm trying to learn as much I can from the dev guide and the tutorials on the developers site,but the dev guide is too long to both read and comprehend,and that's basically a huge problem,cuz I have a job and education and I can't find time to know everything in the dev guide.
I know it'll be difficult to master all fields,but the team I'm going to work with needs someone who's able to edit the deeper layers of the code and,so I think I'll need both java and C for that job,it don't matter anyways I have time to learn both.

Decomplle APK

Ok, So I have tried APKTool and APK Manager and I searched on here but I couldn't find any more updated information. So I have to ask, are there any apps out there to help decompile applications.
I have the updated Android SDK, frameworks, Java SDK, Eclipse and all the goodies installed, but I am trying to find a way to decompile an APK to view its code, graphics, and the rest of its guts. I have no interest in re-writing an application by "stealing" someone else's work. I just want to get a understanding how some basic applications run and the brains behind it.
Any help would be much appreciated
-Nick
As far as I understand, upon compilation, chances are you can decompile quite a fair bit of the content. But not all, because some has turned into language that only the processor should recognise.
But again, maybe I'm not updated enough.

Android Malware Analysis

Hi folks,
I have just started exploring the prospect of Android Malware Analysis recently. As of now I have mostly done Static Analysis using tools like APKTool, APKManager, Dex2Jar, Jd-GUI. Cheers to people in the forum who have contributed with these tools and cleared the initial questions, that was really helpful.
Recently I was trying to analyze a malware that sends SMS to the C&C individuals, using the above mentioned tools I changed the C&C number which was hardcoded in the code to the port number of an emulator on my system. I was able to se the SMSes being diverted to the emulator.
I wanted to try something at the next level now, I was thinking of loading the apk in eclipse and putting breakpoints in the code so that I can catch the different activities. A scenario would be before the SMS is sent out of the app the code stops executing at my breakpoint so that I can view what is going on. Hoping that this feels similar to debugging an exe in OllyDBG. I hope I got my point right.
Right now I followed a number of tutorials online and imported the apk code onto eclipse. I have been following a tutorial highlighted here
http://kkinder.com/2011/11/27/so-you-want-to-reverse-engineer-an-android-app-apk/
So right now I have .smali code as well as java code ( which I am getting by opening the apk as a jar file in JD GUI and saving from there as mentioned in the tutorial). The problem is I am getting errors in every java file that I import in eclipse.
Is there a better and easier way to debug apk files on eclipse, or rather is there a tool which I can use to do something like adding breakpoints before an app sends out an sms for instance.
Pardon me for the long post but i thought ill provide as much information as possible so that you guys can help.
Thanks in advance :good:
Bump
skeptre said:
Hi folks,
I have just started exploring the prospect of Android Malware Analysis recently. As of now I have mostly done Static Analysis using tools like APKTool, APKManager, Dex2Jar, Jd-GUI. Cheers to people in the forum who have contributed with these tools and cleared the initial questions, that was really helpful.
Recently I was trying to analyze a malware that sends SMS to the C&C individuals, using the above mentioned tools I changed the C&C number which was hardcoded in the code to the port number of an emulator on my system. I was able to se the SMSes being diverted to the emulator.
I wanted to try something at the next level now, I was thinking of loading the apk in eclipse and putting breakpoints in the code so that I can catch the different activities. A scenario would be before the SMS is sent out of the app the code stops executing at my breakpoint so that I can view what is going on. Hoping that this feels similar to debugging an exe in OllyDBG. I hope I got my point right.
Right now I followed a number of tutorials online and imported the apk code onto eclipse. I have been following a tutorial highlighted here
http://kkinder.com/2011/11/27/so-you-want-to-reverse-engineer-an-android-app-apk/
So right now I have .smali code as well as java code ( which I am getting by opening the apk as a jar file in JD GUI and saving from there as mentioned in the tutorial). The problem is I am getting errors in every java file that I import in eclipse.
Is there a better and easier way to debug apk files on eclipse, or rather is there a tool which I can use to do something like adding breakpoints before an app sends out an sms for instance.
Pardon me for the long post but i thought ill provide as much information as possible so that you guys can help.
Thanks in advance :good:
Click to expand...
Click to collapse

Dropbox for RT via Python

I brought up some thoughts about Dropbox in mamaich's thread and netham45 was nice enough to bring up some interesting facts about Dropbox, namely that it's compiled in Python.
I'm totally unqualified and have no idea how to actually do the tough stuff, but i'm just going to leave all my notes so far in this thread so someone perhaps more knowledgeable with Python can take it from here. I will try to play it around to get it working though.
Basically after extracting Python from the .exe I got left with a bunch of .pycs that need to be recompiled into the .py that made up the file. I have no idea how to do this. See here http://nixforums.org/about81754.html - if this can be built into some sort of functional program, then it may be very well possible to take this one step further and recompile an .exe for ARM that runs dropbox - or even more easily just compile a working python file for Dropbox
this also might be interesting http://kyl191.net/2012/04/dropbox-api-python-to-sync-a-folder/
I also thought it's worth pointing out this https://github.com/mdornseif/dropbox-client-python
last but not least http://stackoverflow.com/questions/2678180/how-does-dropbox-use-python-on-windows-and-os-x
Maybe someone will have a better idea about what's going on here
The compiled python -should- be platform independent. I honestly don't know much about Python, but we should be able to just reverse whatever dropbox.exe is doing (which should be just a launcher), mimic it, and get a rather functional dropbox.
Another thing that could be done is implement a client in .net. I played with doing just that a couple weeks ago, I had a semi functional (it worked, but had some issues still) offline client in not very many lines of code using a .net library for Dropbox. I'll see if I can get my code up sometime soon.
netham45 said:
The compiled python -should- be platform independent. I honestly don't know much about Python, but we should be able to just reverse whatever dropbox.exe is doing (which should be just a launcher), mimic it, and get a rather functional dropbox.
Click to expand...
Click to collapse
The Python-to-exe packers I know basically include a native loader that unpacks the python dll and loads it either from temporary location or directly from memory and then passes the script to that dll.
It's probably just a matter of figuring out which packer they used and/or porting one of the packers and repackaging it again for RT
DarkoLord said:
The Python-to-exe packers I know basically include a native loader that unpacks the python dll and loads it either from temporary location or directly from memory and then passes the script to that dll.
It's probably just a matter of figuring out which packer they used and/or porting one of the packers and repackaging it again for RT
Click to expand...
Click to collapse
Wrong track completely. The compiled python being referred to above is not python packed into an exe. It is a .pyc file. Contrary to popular belief python is not interpreted line by line. Instead it is compiled into bytecode and then a virtual machine executes that. The bytecode can be saved into a .pyc file (there is a tool included in the standard python install for it somewhere, alternately if you try importing any script as a python module then python will automatically make a .pyc for it which you can use), it has a smaller file size and is not human readable. This is the file being referred to.
It is possible to reverse engineer .pyc files. I remember seeing a tool which is capable of making a pretty good attempt of reverse engineering non obfuscated bytecode, thats the disadvantage to python being open source, the bytecode specification is publicly viewable can't remember the tools name and I would think dropbox have obfuscated their pyc files.
SixSixSevenSeven said:
Wrong track completely. The compiled python being referred to above is not python packed into an exe. It is a .pyc file. Contrary to popular belief python is not interpreted line by line. Instead it is compiled into bytecode and then a virtual machine executes that. The bytecode can be saved into a .pyc file (there is a tool included in the standard python install for it somewhere, alternately if you try importing any script as a python module then python will automatically make a .pyc for it which you can use), it has a smaller file size and is not human readable. This is the file being referred to.
It is possible to reverse engineer .pyc files. I remember seeing a tool which is capable of making a pretty good attempt of reverse engineering non obfuscated bytecode, thats the disadvantage to python being open source, the bytecode specification is publicly viewable can't remember the tools name and I would think dropbox have obfuscated their pyc files.
Click to expand...
Click to collapse
I'm aware of that (by script file I meant pyc, of course), but what would be the reason for trying to reverse engineer the pyc files since the bytecode itself is platform independent?
For starters someone should just try running the unpacked .pcy files on the RT or are we past that and there is some platform specific stuff inside that prevents it from working?
DarkoLord said:
I'm aware of that (by script file I meant pyc, of course), but what would be the reason for trying to reverse engineer the pyc files since the bytecode itself is platform independent?
For starters someone should just try running the unpacked .pcy files on the RT or are we past that and there is some platform specific stuff inside that prevents it from working?
Click to expand...
Click to collapse
The pycs are getting magic number errors when I try to look at them because i'm not running it through the interpreter - because I dont know what the interpreter is. I think the first step is to find a way to get it compiled and running to find out if its platform independent or if there are dependencies.
I also have no idea which .pyc to start with
Ah, magic number.
Apparently Dropbox uses a bit modified version of python interpreter with some encryption and mixed opcodes.
Here are some details: http://blog.codepainters.com/2012/09/17/python-care-and-feeding-the-dropbox-way/. It looks like it could be done
Wow, if we could have legit dropbox on RT, that would be AMAZING!!
https://www.dropbox.com/developers/sync
Any idea if this would be helpful?
userno69 said:
Wow, if we could have legit dropbox on RT, that would be AMAZING!!
Click to expand...
Click to collapse
I really agree, is this project still alive??
maxxie85 said:
I really agree, is this project still alive??
Click to expand...
Click to collapse
It's been six months since this thread was posted in. I doubt it.
netham45 said:
It's been six months since this thread was posted in. I doubt it.
Click to expand...
Click to collapse
yeah I noticed that to, never hurts to ask.
And by the way, maybe now the life in this project is getting resparkeld.
Sent fromy my ASUS Transformer Pad TF300T using XDA Premium HD app

Categories

Resources