1、baksmali:classes.dex 反编译为 smali 格式 (smali:smali 格式编译打包为 classes.dex,但由于 smali 格式类似汇编, 比较难阅读,所以用 dex2jar 进行辅助 ) 2、dex2jar:classes.dex 转为 jar 包 3、jdgui:jar 反编译并阅读 操作顺序: apk 用 zip 解开,里面的 classes.dex 分别用 baksmali 处理为 smali,用 dex2jar 处理成 jar,然后用 jdgui 看代码,找好 java 文件中要改的位置后,在 smali 里找对应的位置修改,改完了用 smali 再编译为 classes.dex,覆盖原来 apk 里 的同名文件,最后重新签名。注意安装时要先删除原来手机里的版本,因为签名 不同。 1、apk 用 zip 解开,得到 classes.dex 2、用 baksmali 处理为 smali(只是反编译看代码就不需要这一步,修改才用) java -jar baksmali-1.4.1.jar -x classes.dex 得到 out 目录,里面是 smali 文件 3、用 dex2jar 处理 classes.dex 为 jar 包 dex2jar.bat classes.dex 得到 classes.dex.dex2jar.jar 4、用 jdgui 打开 classes.dex.dex2jar.jar 好了,可以看代码,但还不能直接修改,需要对比着来修改 smali 文件 改好后,用 java -jar smali-1.2.6.jar -o classes.dex out 得到修改后的 classes.dex,用这个文件替换 fishing_joy_1.apk 中的同名文件 但这个 apk 是不能用的,还没有进行重新签名 先用 keytool 生成 keystore keytool -genkey -keystore mykeystore -alias mykeystore -validity 999 把 apk 中的 META-INF 删除,再用 jarsigner 签名 jarsigner -verbose -keystore mykeystore -signedjar fishing_joy_1_signed.apk fishing_joy_1.apk mykeystore 先卸载原来手机中安装的这个游戏,再用 fishing_joy_1_signed.apk 安装 最后工作目录是这个样子