android java反编译

一:dex反编译

工具依赖:dex2jar-2.0

获取工具:提供两个链接,一个是github的,需要翻墙,有更新,另一个不用翻墙的,但从16年后就没有更新了

Releases · pxb1988/dex2jar · GitHubhttps://github.com/pxb1988/dex2jar/releases

dex2jar download | SourceForge.nethttps://sourceforge.net/projects/dex2jar/

命令简析:

dex2jar提供了一组批处理和sh脚本来支持windows和Linux上执行

下面是git hub上 Bob Pan 在 3 Nov 2014 写的操作流程,与现在的实际条件已经有所不同,但这几步流程是一样的,有所不同的是jdk现在可以使用jdk8,后续应该还可以使用jdk17。

  1. Install JDK7

     // For Ubuntu 
     sudo apt-get install openjdk-7-jre 
    
  2. Download dex2jar from dex2jar - Browse Files at SourceForge.net

  • Extract dex2jar-version.zip to a folder. for example /home/panxiaobo/, _C:_

      // For Linux
      unzip -x dex2jar-version.zip -d /home/panxiaobo
    
  1. use dex2jar to generate .jar file. dex2jar will generate a file named someApk-dex2jar.jar in the working folder.

     // For Linux, Mac OSX, Cygwin
     sh /home/panxiaobo/dex2jar-version/d2j-dex2jar.sh /home/panxiaobo/someApk.apk
     // For Windows
     C:\dex2jar-version\d2j-dex2jar.bat someApk.apk
    
  2. use a decompiler to view the source.

  3. that's it

下面的链接是反编译出jar包之后的查看工具,jd-gui并不是唯一的工具,使用AS也是可以通过加载jar包的方式但看到反编译出来的代码。jd使用很简单,和普通的文件工具差不多,就不专门介绍了。

https://github.com/java-decompiler/jd-gui/releases/icon-default.png?t=M1L8https://github.com/java-decompiler/jd-gui/releases/

二:odex反编译

工具依赖:baksmali-2.5.2.jar ,smali-2.5.2.jar

获取工具:以下站点提供了原始的jar包下载,读者可以按需下载对应版本。如果有兴趣,读者也可以在这个git仓库上阅读源码。JesusFreke / smali / Downloads — Bitbuckethttps://bitbucket.org/JesusFreke/smali/downloads/

示例:反编译serivces.odex文件,

        第一步把odex解码为smali文件,这一步会把对应odex文件编译出当前目录的out路径下

        java -jar baksmali-2.5.2.jar x services.odex

        第二步把smali文件编译为dex包

        java -jar smali-2.5.2.jar ass -o classes.dex out

        第三步,使用dex反编译方法,反编译出源代码。

注意,odex反编译时,应尽可能保证当前odex有依赖的包都在当前路径下

命令简析:

        针对特定的版本,命令可能存在差异,可以使用 -h或--help列出当前版本的命令列表

如我使用的2.5.2的版本,如果是用于反编译 odex或oat文件,使用deodex,de,x三个命令都可以

参考命令如下:java -jar baksmali-2.5.2.jar x services.odex

E:\tools\bux2.0\push\bak\framework\oat\arm64>java -jar baksmali-2.5.2.jar h
usage: baksmali [--version] [--help] [<command [<args>]]

Options:
  --help,-h,-? - Show usage information
  --version,-v - Print the version of baksmali and then exit

Commands:
  deodex(de,x) - Deodexes an odex/oat file
  disassemble(dis,d) - Disassembles a dex file.
  dump(du) - Prints an annotated hex dump for the given dex file
  help(h) - Shows usage information
  list(l) - Lists various objects in a dex file.

See baksmali help <command> for more information about a specific command

E:\tools\bux2.0\push\bak\framework\oat\arm64>

smali的命令列表如下

E:\tools\bux2.0\push\bak\framework\oat\arm64>java -jar smali-2.5.2.jar h
usage: smali [-v] [-h] [<command [<args>]]

Options:
  -h,-?,--help - Show usage information
  -v,--version - Print the version of baksmali and then exit

Commands:
  assemble(ass,as,a) - Assembles smali files into a dex file.
  help(h) - Shows usage information

See smali help <command> for more information about a specific command

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值