手机要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.