Android Odex转dex、apk和odex合成apk

手机要ROOT,这样才能做下面的工作!

1、将/system/framework/ 和/system/app两个目录下的文件全部导出,并且将里面的文件全部拷贝到同一个文件夹下,例如abc目录

2、将baksmali.jar 和smali.jar拷贝到abc目录

cd abc

java -Xmx512M -jar baksmali.jar -x android.policy.odex

这样执行完后会在当前目录生成out包,里面就是android.policy锁屏的源码class文件

接下来就是将class文件转换成dex文件。。。

java -Xmx512M -jar smali.jar out -o classes.dex

最终生成了classes.dex文件。


如果在执行上面的步骤中出现了报错:

UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: Java heap space

那就是分配给jvm的内存还不够,解决的办法就是将512改成1024试试

java -Xmx1024M -jar baksmali.jar -x android.policy.odex

java -Xmx1024M -jar smali.jar out -o classes.dex


生成了dex文件后用好压软件打开jar包或者apk包,直接将classes.dex拖入到打开的jar包或者apk包就可以重新生成apk或者jar了,并且没有修改原来的签名信息。

ps:也可以使用zip或者unzip 来压缩。

以下批处理用来合成/system/framework下所有的odex和jar包对应的完整jar包,双击执行start.bat即可

start.bat内容如下:

for /r file\ %%a in (*.odex) do call make.bat %%a


make.bat内容如下:

@echo off
move file\%~n1.jar make\%~n1.jar>nul
move file\%~n1.odex make\%~n1.odex>nul
cd make
echo     正在将 %~n1.odex 转化为 classes.dex ...
echo %1
echo %~n1
echo ..........................................
java -Xmx1024M -jar baksmali.jar -x %~n1.odex
java -Xmx1024M -jar smali.jar out -o classes.dex
REM del %1 /Q
rd out /Q /S
echo     正在将 %~n1.jar 与 classes.dex 合并...
zip %~n1.jar -u classes.dex>nul
del classes.dex /Q
cd..
move make\%~n1.jar OK\%~n1.jar>nul
echo.
echo     ---- Scuess ----
echo.

你可能感兴趣的:(apk,android,jar,dex,odex)