安卓app源码的获取

本文介绍了解决dex2jar反编译APK文件时遇到的版本不支持错误的具体步骤。通过修改classes.dex文件头中的magic version值,从037改为036,成功解决了dex2jar无法识别的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

反编译有一种方式是

  1. 把dex文件从apk解压出来,得到classes.dex
  2. 然后用dex2jar把dex文件转换成jar文件: dex2jar.bat classes.dex
  3. 再把生成的classes.jar文件放到JD-GUI中即可

dex2jar下载: https://sourceforge.net/projects/dex2jar/
jd-gui下载: http://jd.benow.ca/

仍然报错

dex2jar .\classes.dex -> .\classes-dex2jar.jar
com.googlecode.d2j.DexException: not support version.
        at com.googlecode.d2j.reader.DexFileReader.<init>(DexFileReader.java:151)
        at com.googlecode.d2j.reader.DexFileReader.<init>(DexFileReader.java:211)
        at com.googlecode.dex2jar.tools.Dex2jarCmd.doCommandLine(Dex2jarCmd.java:104)
        at com.googlecode.dex2jar.tools.BaseCmd.doMain(BaseCmd.java:288)
        at com.googlecode.dex2jar.tools.Dex2jarCmd.main(Dex2jarCmd.java:32)

提示not support version,版本不支持?(看到这条信息我还以为要下载最新版本的dex2jar,结果仍然不行)

此时想到干脆编译下dex2jar的相关文件看看为什么报错
打开dex2jar-2.0\lib目录,因为是reader.DexFileReader.<init> 处报错,所以应该是DexFileReader初始化报错吧,应该是dex-reader-2.0.jardex-reader-api-2.0.jar把这两个jar包扔到jdgui里面,很快便找到DexFileReader,并在构造方法里面,并找到相关源代码

public DexFileReader(ByteBuffer in)
  {
    in.position(0);
    in = in.asReadOnlyBuffer().order(ByteOrder.LITTLE_ENDIAN);
    int magic = in.getInt() & 0xFFFFFF;
    if (magic != 7890276)
    {
      if (magic == 7955812) {
        throw new DexException("Not support odex");
      }
      throw new DexException("not support magic.");
    }
    int version = in.getInt() & 0xFFFFFF;
    if ((version != 3486512) && (version != 3552048)) {//这里主动抛出异常
      throw new DexException("not support version.");
    }
    ....
}

可以猜测这在读取第一个字符时通过比较version 值主动抛出异常了
显然version不等于3486512和3552048是罪魁祸首,它们是什么呢,上下搜索可以看到一个定义的常量:

  private static final int MAGIC_035 = 3486512;
  private static final int MAGIC_036 = 3552048;

额,MAGIC_035MAGIC_036,网上查了一下,说是dex头部校验

老版本的magic version是035
优化的dex文件,magic version是036
报错居然说不等于这两个,是什么情况???

用notpad++打开classes.dex文件,在头部看到如下情况

 

dex头部

第二行竟然是037!!!!嗯,我有一个大胆的想法: 把037,改成036,保存,再用dex2jar
成功!!!再用jd-gui打开jar文件也能顺利反编译

遗留思考:

  1. magic version是dex校验的话,为什么gts的apk为是037一个不合法的值?难道这个apk比较特殊?(实际验证这个apk安装不上)
  2. 为什么读到的int值3552048,而通过notepad++显示是036?(猜测与字符编码有关)

 

Android应用源码安卓源码(172个合集),可以做为你的学习参考。 365MobileSecretary v1.0.6(365手机助手AIDL) 888个经典 Logo.rar AdXmpp(Openfire+asmack+spark) .zip AidlDemo(简单aidl的例子) aidl跨进程调用.rar andbatdog电池监控.rar andbatdog监视电池.rar andricoFacebook客户端.rar Android Gamex分析报告.rar Android 英语单词记忆程序源码 AndroidPdfViewerPDF查看器.zip AndroidPlayer(仿酷狗播放器).tar androidtalk_2010_11_17【Sundy系列】全看懂了-加两年经验-语音朗读-语音识别-语音.rar Android下的信息客户端 WhisperSystems-TextSecure.zip Android与js交互.rar Android中监听电话状态.rar Android之Wifi学习教程.rar Android之用PopupWindow实现弹出菜单.rar android在wifi下手机与电脑的socket通信.rar android多线程断点下载.rar Android手机一键Root原理分析.zip Android手机的VoIP客户端 Sipdroid.rar Android有未接来电后处理(判断未接来电).rar Android模仿乐淘的应用程序分析源码.zip Android游戏源码——忍者快跑.rar Android自动发送短信.rar Android自动开关机实现.rar Android视频采集+RTSP完整代码(可用) Android远程登录含有loading登录效.zip Angle v1.0_2D游戏引擎.ZIP BOOK看遍所有UI控件.7z BrewClock闹钟.zip BTAndroidWebViewSelection(webview选择文字) cellmap v2.0 基站查询定位导航系统 .rar DialogShow.rar dialog去除边框代码.rar DocumentViewer(PDF阅读器) douBanList(滚动到底部加载新的,软缓存,懒加载) Droid Wall 手机防火墙.zip FBReader修改epub快速加载.rar FiveChess五子棋.zip Flashlight灯光.zip GetSDTree(简单SD卡文件浏览器) hotel宾馆系统.zip ImageView 图片循环跑马灯的效果.rar ipcamera-for-android 手机变成IP Camera.rar jamendo-开源在线音乐.rar jchat4android手机聊天程序.rar LoginXml.rar MineSweeper由java实现.zip miniTwitter登录界面.rar MyAppWeixin(仿微信界面) MyBrowser(简单网页浏览器) Myjob3(图片剪辑功能).rar OPENG开发的示例代码.rar OpenSudoku一个简单的九宫格数独游戏.zip OssSystem(OA系统图书管理简单版).rar Phonegap+HTML5+CSS3+jQuer简单界面模板示例及源码.rar ProgressBar 几乎全部的用法.rar QQ_UI之分类菜单DEMO.zip QQ的登录界面 源代码 .zip quitesleep手机电话功能软件.rar rokon_src_2-0-3_游戏引擎.zip scientific-calculator-for-android( 功能强大的科学计算器).zip SeeJoPlayer(播放器).7z SipDroid客户端源码.rar sipdroid语音及视频通话.rar tablelogin(登陆界面).rar TankWar坦克大战.zip telecapoland-jamendo-android-6cd07fb(国外开源音乐播放器) TorProxy应用实现了Android手机无线电电传通讯(TOR).rar UI设计之 仿做蘑菇街UI设计 源码.zip ViewPager-实现左右两个屏幕的切换.rar VIEW双缓冲与SurfaceView比较.zip weibo4andriod-2011-01-14.zip WordPress for Android zirco-browser浏览器源码.rar Zirco-browser:超越海豚的开源浏览器.rar zz-doctor中医大夫助
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值