如何反编译一款App,修改它的smali文件,并签名生成一款新的apk

    正如大家所知道的,Android App打包后一般会生成apk文件,那怎样能够将apk文件还原成为可以阅读的java文件和可以更改密码的smali文件?我们可以一起研究学习下:

    反编译apk,你需要确保你的电脑环境里安装了jdk,此外我们需要用到以下两款工具:

反编译前,你需要将你的apk文件后缀名修改为zip包,解压后,会看到很多文件夹,如下图所示

                    

找到你的classes.dex文件夹,放入dex2jar文件包中,如下图:

此时打开你的命令器,将路径cd到该文件夹下面,输入:

如果没有报任何错误说明已经转换成功了,此时你可以发现dex2jar文件包中多出了一个classes-dex2jar.jar文件,

打开你下载好的gui工具,然后点击file—> open file,选择刚才生成的classes-dex2jar.jar文件夹,则可以看见apk的内容了,混淆后的apk文件,只能看见很多abc组成的文件夹包,点击进去也可以看见代码,但阅读性不强,如果感兴趣可以试着阅读,我是很头疼,最后半途而废,但是,有些地方的逻辑你还是可以认出来的,哈哈。

 

如果想要修改文件,需要在smali文件里面实现。smali获得途径为,打开apktool工具,把apk包放入apktool文件里面,如下图,打开命令器,cd到apktool文件目录下,输入命令apktool d xxx.apk,可以在该目录下生成一个同名文件夹,里面包含了smali文件。

下载apktool地址为:

https://ibotpeaches.github.io/Apktool/install/

 

 

 

此时,可以进入smali文件夹中,找到你要修改的smila文件,用任意编译器或者记事本打开smila文件,此时你可以修改,所有smali文件需要使用汇编smali语言,如果需要学习的话,可以参考我后面的文章。修改完成后,则可以重新打包了,同样打开命令器,cd到apktool文件目录下,注意你的打包文件夹也应该在该目录下,输入命令:apktool b 123 -o xxx.apk

此时你打出来的包暂时不能用,还需要签名工具。所以你需要去生成一个keystore,然后签名,使用androidstudio或者eclipse都可以生成keystore文件,或者使用命令器生成,如果不会可以参考其他文章,在此不叙述了。我们需要把生成的.keystore文件放入到apktool目录下,然后同样打开命令器,cd到apktool文件目录下,输入命令:

jarsigner -verbose -keystore xxx.keystore -signedjar new_sign.apk xxx.apk asia

jarsigner -verbose代表签名命令标识符
-keystore后面则是你目录下的.keystore文件
-signedjar后面分别表示
new_sign.apk:签名后生成的apk文件。 
xxx.apk:未签名的apk文件。 
asia:你的证书別名。

此外还需要输入你的keystore密码,打包成功后,你可以得到你的apk文件了。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值