本案例讲述一个Apk反编译全过程,包括:编译源码、修改源码、打包、签名。
案例展示:
反编译前 反编译后首先准备反编译工具:
dex2jar(dex转jar)
jd-gui(对Jar进行反编译)
apktool(对apk进行反编译)
baksmali(将dex文件编译成smali文件)
工具截图:
工具截图新建项目,生成一个APK:
生成APK复制【app-debug.apk】到【C:\Users\Chao\Desktop\反编译工具】开始反编译
CMD执行以下命令将Apk拆包(拆包后会在当前目录生成file文件夹):
java -jar apktool_2.3.4.jar d -f app-debug.apk -o file
APK拆包
用压缩软件打开apk,将内部的classes.dex解压到【C:\Users\Chao\Desktop\反编译工具\dex2jar-2.0】目录,并执行以下命令生成classes-dex2jar.jar:
d2j-dex2jar classes.dex
dex转换jar
用jd-gui.exe打开上面生成的classes-dex2jar.jar,查看源码:
查看源码根据jar反编译的源码进行修改,例如【file/smail/包名】目录下对应MainActivity.smali文件:
MainActivity.smali MainActivity.smali将smail内部Unicode字符串转码,确定是否是我们要修改的内容:
unicode转中文用我们想要的文字转换为Unicode字符串,并替换保存:
中文转unicode运行以下命令重新打包apk:
java -jar apktool_2.3.4.jar b file -o cc.apk
打包apk
此时apk还无法安装,还需要签名,运行以下命令签名:
debug.keystore是从android studio配置目录拿到的测试key,通常位于目录【C:\Users\Chao\.android】
jarsigner -verbose -keystore debug.keystore -signedjar cc_signed.apk cc.apk androiddebugkey
签名apk
此时apk已经可以安装使用了,不过为了提升运行速度,建议做一次对齐操作:
APK对齐:工具存放于<Android SDK>/build-tools/<version>
zipalign 4 cc_signed.apk cc_signed_aligned.apk
另外附上baksmali/smali将dex与smail相互转换的命令:
java -jar baksmali-2.2.5.jar d classes.dex -o smali
java -jar smali-2.2.5.jar a smali -o newclasses.dex
网友评论