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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/c__chao/article/details/83017681

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

案例展示:

反编译前

反编译后

首先准备反编译工具:

dex2jar(dex转jar)

dex2jar

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

jd-gui

apktool(对apk进行反编译)

apktool

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

baksmali

工具截图:

工具截图

新建项目,生成一个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

猜你喜欢

转载自blog.csdn.net/c__chao/article/details/83017681