Android apk dex odex smali 反编译、回编译、签名

2 篇文章 0 订阅
1 篇文章 0 订阅

鉴于很多小伙伴需要欣赏别人Apk的源码,特写此拙文。大概思路就是通过dex2jar等工具把dex转化为jar,再通过jd-gui查看其java源码。

众所周知,dex是Android虚拟机Dalvik上的可执行文件,而odex是优化过(Optimized)的dex。

1.如果只是反编译Apk中的dex,可用7zip或其它压缩软件解压出Apk包中dex文件

这种方法看不到xml布局等配置信息

若只有odex,将odex回编译成dex方法:

java -jar baksmali.jar -x  classes.odex

当前文件夹下会生成一个out文件夹然后输入命令:

java -Xmx512M -jar smali.jar out -o classes.dex

2.若继续转化为jar文件查看:

d2j-dex2jar -f classes.dex

即可生成相应的classes_dex2jar.jar

把classes_dex2jar.jar拖到Jd-gui即可看到具体java代码

3.如果你需要查看布局等Xml配置文件或熟悉smali语法

java -jar apktool.jar d yuan.apk yuan_fby

反编译出smali代码等进行查看修改

4.如果你不仅想看还想回编刚才反编译出的smali到一个新的Apk

java -jar apktool.jar b  yuan_fby yuan_fby.apk

5.注意步骤4编译出的Apk是没有签名的

如果你有系统签名可以获得高权限:

java -jar signapk.jar platform.x509.pem platform.pk8  yuan_fby.apk  yuan_fby_signed.apk

如果没有系统签名则可用testkey签名:

 java -jar signapk.jar  testkey.x509.pem  testkey.pk8 yuan_fby.apk  yuan_fby_signed.apk

也可以用jks文件给apk签名:

jarsigner -digestalg SHA1 -sigalg SHA1withRSA(或SHA1withDSA) -verbose -keystore xxx.jks -signedjar yuan_fby_signed.apk  yuan_fby.apk xxx(keystore别名)

6.题外话

上面反编译步骤可以轻松的对一个没有任何防护措施的Apk进行源码阅读。

有攻就会有防,现在一般商业项目Apk都会进行一些安全防御措施:比如ProGuard混淆 Apk加固加壳等

当然安全都是相对的,有防也会有攻,比如ProGuard混淆后的代码只是增加了阅读难度而已。加固加壳的也有脱壳等技术。

有攻有防,才显得更有意思。

本文链接:http://blog.csdn.net/lechengyuyuan/article/details/51262746

 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值