[DEV] Reassembling classes.dex using smali - Nexus One Android Development

Guys, I'm editing some files in services.jar. So I extract the classes.dex, which is about 1mb. Using baksmali, I disassemble all the files to the com folder, which ends up being 8-9mb uncompressed. After making my changes, I try reassembling the classes.dex, but my file ends up being 9mb. Even if I insert it into the services.jar, that file is still 4.5mb. Obviously I am unable to boot. Can anyone let me know how to get this to work?
These are the commands I am using.
disassembling:
java -Xmx512m -jar baksmali-1.2.1.jar -o c:\smali classes.dex
and reassembled later:
java -Xmx512m -jar smali-1.2.1.jar -o classes.dex c:\smali

Maybe this should be in development......

eViL D: said:
Guys, I'm editing some files in services.jar. So I extract the classes.dex, which is about 1mb. Using baksmali, I disassemble all the files to the com folder, which ends up being 8-9mb uncompressed. After making my changes, I try reassembling the classes.dex, but my file ends up being 9mb. Even if I insert it into the services.jar, that file is still 4.5mb. Obviously I am unable to boot. Can anyone let me know how to get this to work?
These are the commands I am using.
disassembling:
java -Xmx512m -jar baksmali-1.2.1.jar -o c:\smali classes.dex
and reassembled later:
java -Xmx512m -jar smali-1.2.1.jar -o classes.dex c:\smali
Click to expand...
Click to collapse
The commands I use I got from this post.

Thanks for you answer, I got it figured out.

hmmm how did you get this working? Cause that post just has what you did here...
I'm having the same problem, I just get boot loops after pushing my custom jar file :-/

oops I spoke too soon.. managed to get it working after like 10th or so try lol

Related

how do you open a classes.dex file?

like the title says
You need baksmali
http://code.google.com/p/smali/
And then what do I do? i Dled it.
I'm trying to open classes.dex located in system/framework/android.policy
Extract classes.dex from /system/framework/android.policy.jar and then do:
java -jar baksmali.jar classes.dex
You will end up with a folder named "out" which will hold decompiled classes.dex
Eddie1506 said:
Extract classes.dex from /system/framework/android.policy.jar and then do:
java -jar baksmali.jar classes.dex
You will end up with a folder named "out" which will hold decompiled classes.dex
Click to expand...
Click to collapse
Where should I put the baksmali.jar file on my PC ? Should it be in java folder or anywhere is fine as long as i open the command window from there ?

Is there a READABLE guide on how to decompile/recompile .jar and .dex?

I was able to do this about a month ago and I deleted all my files but now I am in need of it as I am trying to make an overscroll glow for this phone and I can't even remember where to start.
Skyler2Dope said:
I was able to do this about a month ago and I deleted all my files but now I am in need of it as I am trying to make an overscroll glow for this phone and I can't even remember where to start.
Click to expand...
Click to collapse
http://code.google.com/p/android-apktool/
apktool is what I use, works like a champ!
I have downloaded that but I dont know where to start really...any help would be much appreciated.
Needed:
Android sdk
Winrar
smali/baksmali tool
How to get the .jar you want:
Go into command get to platform folder inside Android sdk.
(example I'll use Android.policy.jar located in /system/framework/)
Code:
adb pull /system/framework/Android.policy.jar
This pulls .jar to your platform-tools folder. Now open .jar with winrar and extract classes.dex into tools folder; where smali and baksmali files are. Go into CMD this time get into the tools folder.
Run this in CMD
Code:
java -jar baksmali.jar /dexout/ classes.dex
Make your changes to the dex now that it's extracted. When your ready to recompile use this command:
Code:
java -Xmx512M -jar smali.jar /dexout/ new-classes.dex
Now just move new-classes.dex to desktop and rename to classes.dex then drag into .jar file we used earlier. Now to push back to phone I like to go into cwm when I'm pushing back to phone so that there is no issues.
Code:
adb push Android.policy.jar /system/framework/
Reboot or boot if you pushed whole in cwm.

[Q] HELP: android.policy.jar and Smali on LGP880 @V10H

Hi,
I got myself the android.policy.jar (313bytes) and android.policy.odex (350.584bytes) from the /system/framework.
I then copied the whole /system/framework folder from my P880 for baksmali, also.
I then baksmalied the android.policy.odex with:
java -Xmx512m -jar baksmali.jar -x android.policy.odex -d framework -o output
and resmalied it (this is a test) with:
java -Xmx512m -jar smali.jar output/ -o classes.dex
This all works without an error message.
I end up with the classes.dex (314.716bytes).
Here my trouble begins. I put classes.dex with 7zip and normal compression into the original android.policy.jar (now 143.886bytes)
I removed the ORIGINAL android.policy.odex and android.policy.jar from my phone and copied the new android.policy.jar (143.886bytes) into the their place (/system/framework).
After reboot I am stuck with a bricked phone
To investigate, I then reodexed android.policy.jar with
dexopt-wrapper android.policy.jar new.android.policy.odex /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/filterfw.jar:/system/framework/com.lge.bluetooth.jar:/system/framework/com.lge.core.jar
which works fine, but my NEW android.policy.odex is not the original 350.584bytes, but 322.368bytes
I added the file signature from the old odex, but the size remains the same.
My questions:
Why did my android.policy.jar (143.886bytes) not work, although I changed none of the coding?
Why did my android.policy.odex (322.368bytes) not have the same size as the original odex in the rom?
I attach these two files for you. Please help me. :crying:
Thank you!
PS: I had to rename the odex to txt, because it cant be attached otherwise.

need help deodex secphone.odex

Hello
I am trying to Deodex my SG4 stoke rom secphone.odex
I read almost all threads here before posting this but still have some errors..
that's the steps I did
1-Pull framework folder from my phone and put it under c:\framework
2-run this command
java -jar baksmali.jar -d C:\framework -x secphone.odex
and it generate the "out" folder..
3- run this command
java -Xmx512m -jar smali.jar out -o classes.dex
and it generates the classes.dex file
4-Open the secphone.apk with 7zip and add the classes.dex on the root..
now when i put the secphone.apk on my phone and set permissions, the phone app always gives error that it stopped and keep poping this error until i restore the original apk..
whats missing me here to have it work?
regards
Hi Romeo,
Did you found a solution? I have the same problem.
Thanks
Me too, same problem.

[Q] Decompiled my classes.dex from services.jar, no StatusBarIcon.smali

I pulled /system/framework/services.jar three times now, and extracted the classes.dex. Then decompiled the classes.dex with "java -jar baksmali.jar -o classout/ classes.dex" and navigated to classout/com/android/server. The problem is the dir is missing the "status" folder. I did this with VTS 10, colorchange.jar, and manually .. same result. Thoughts?

Categories

Resources