Android反编译-编译源码-修改源码-打包-签名全过程

本案例讲述一个Apk反编译全过程,包括:编译源码、修改源码、打包、签名。

案例展示:

Android反编译-编译源码-修改源码-打包-签名全过程_第1张图片

Android反编译-编译源码-修改源码-打包-签名全过程_第2张图片

首先准备反编译工具:

dex2jar(dex转jar)

dex2jar

jd-gui(对Jar进行反编译)

jd-gui

apktool(对apk进行反编译)

apktool

baksmali(将dex文件编译成smali文件)

baksmali

工具截图:

Android反编译-编译源码-修改源码-打包-签名全过程_第3张图片

新建项目,生成一个APK:

Android反编译-编译源码-修改源码-打包-签名全过程_第4张图片

复制【app-debug.apk】到【C:\Users\Chao\Desktop\反编译工具】开始反编译

CMD执行以下命令将Apk拆包(拆包后会在当前目录生成file文件夹):

java -jar apktool_2.3.4.jar d -f app-debug.apk -o file

Android反编译-编译源码-修改源码-打包-签名全过程_第5张图片

用压缩软件打开apk,将内部的classes.dex解压到【C:\Users\Chao\Desktop\反编译工具\dex2jar-2.0】目录,并执行以下命令生成classes-dex2jar.jar:

d2j-dex2jar classes.dex

Android反编译-编译源码-修改源码-打包-签名全过程_第6张图片

用jd-gui.exe打开上面生成的classes-dex2jar.jar,查看源码:

Android反编译-编译源码-修改源码-打包-签名全过程_第7张图片

根据jar反编译的源码进行修改,例如【file/smail/包名】目录下对应MainActivity.smali文件:

Android反编译-编译源码-修改源码-打包-签名全过程_第8张图片

Android反编译-编译源码-修改源码-打包-签名全过程_第9张图片

将smail内部Unicode字符串转码,确定是否是我们要修改的内容:

Android反编译-编译源码-修改源码-打包-签名全过程_第10张图片

用我们想要的文字转换为Unicode字符串,并替换保存:

Android反编译-编译源码-修改源码-打包-签名全过程_第11张图片

运行以下命令重新打包apk:

java -jar apktool_2.3.4.jar b file -o cc.apk

Android反编译-编译源码-修改源码-打包-签名全过程_第12张图片

此时apk还无法安装,还需要签名,运行以下命令签名:

debug.keystore是从android studio配置目录拿到的测试key,通常位于目录【C:\Users\Chao\.android】

jarsigner -verbose -keystore debug.keystore -signedjar cc_signed.apk cc.apk androiddebugkey

Android反编译-编译源码-修改源码-打包-签名全过程_第13张图片

此时apk已经可以安装使用了,不过为了提升运行速度,建议做一次对齐操作:

APK对齐:工具存放于/build-tools/
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

你可能感兴趣的:(Android)