1.用到的文件:
a. baksmali.jar,smali.jar,下载地址:http://code.google.com/p/smali/downloads/list
b. odex文件所在ROM的core.jar,ext.jar,android.policy.jar,frameworks.jar,services.jar,获取方式:获取设备的root权限,提取/system/framework/中的相关文件;
将上述文件拷贝到同一目录。
2. 反编译odex文件;
进入上述目录,执行:
java -jar baksmali.jar -x name.odex
之后,会生成一个out文件夹,里面的文件是smali格式。
3. 生成dex文件
进入上述目录,执行:
java -jar smali.jar out -o name.dex
问题解决:
1. regCount does not match the number of arguments of the method。
这个应该跟指定的api-level有关,最新的baksmali.jar默认api-level=14(CTS),当出现问题1时,可能尝试指定api-level,
如: java -jar baksmali.jar -a 13 out -o name.dex
更多详情请参考:http://code.google.com/p/smali/wiki/DeodexInstructions