Android-逆向工程

Android反编译工具-apktool

反编译

apktool d xxx.apk

反编译后逆向编译

通过以下命令可以把已经修改过的文件重新打包为apk

apktool b xxx

但是这样打包出来的apk是无法安装到手机上的,因为Android在手机都是有一个唯一标识的,也就是签名,如果我们直接安装无签名的apk,系统会提示安装失败,并且打出log信息,Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION] ,所以我们需要给我们的新的apk打上签名。

1)生成签名

我们可以通过AndroidStudio或者ecplise来手动生成一个keystore,也可以通过命令行来生成

keytool -genkey -keystore my.keystore -keyalg RSA -validity 10000 -alias my

-keystore my.keystore 即签名文件的名字

-alias 表示签名文件的别名,一般和普通名字一样,这里也是my

反编译成功之后我们会看到目录文件下:

reset: 资源文件夹,可以是字体文件,或者壁纸等

res: 资源文件夹

smali: Dalvik VM内部执行的核心代码。Android采用的是java语言进行开发,但是Android系统有自己的虚拟机Dalvik,代码编译最终不是采用的java的class,而是使用的smali。也就是由java转化而来。

2)使用签名打包

把你的签名文件和apk拷到同一个目录下,然后执行以后语句:

jarsigner -verbose -keystore my.keystore -signedjar my_signed.apk my.apk my

my.keystore即你的签名文件名称

my.apk即需要进行签名的apk

my_signed.apk即Android签名后的APK执行文件。

3) 常见问题

错误提示:jarsigner: 找不到xx的证书链。xx必须引用包含私有密钥和相应的公共密钥证书链的有效密钥库密钥条目。

解决方法:签名文件的Alias写错,请改正。

错误提示:jarsigner 错误: java.lang.RuntimeException: 密钥库加载: Keystore was tampered with, or password was incorrect

解决方法:签名文件的密码错误,请改正。

错误提示:jarsigner: 与xx关联的密钥不是私有密钥

解决方法:签名文件的Alias的密码错误,请改正。

Android-enjarify

这是是谷歌出品的一款反编译工具,它可以将dalvik字节码转化成 java 字节码。当我们通过apktool反编译出代码工程之后,只能看到smali文件,则这样的可读性是很差的,如果我们希望看到Java代码,我们就需要到enjarify工具

使用方式:

enjarify yourapp.apk

enjarify classes2.dex

enjarify yourapp.apk -o yourapp.jar

转化为jar包之后,可以使用jd-gui.jar打开查看代码,所以我们也需要再去下载jd-gui.jar

 

 

转载自:https://www.aliyun.com/jiaocheng/59532.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值