記一次dex的反編譯

負(fù)責(zé)的app在跑gts時(shí)報(bào)錯(cuò)邪码,結(jié)果有報(bào)錯(cuò)信息只有g(shù)ts的apk沒有源碼谢揪,導(dǎo)致無從查起扭弧。所以準(zhǔn)備反編譯gts的apk阎姥,結(jié)果發(fā)現(xiàn)問題, 記錄一下

首先第一時(shí)間用到是jadx,這是一個(gè)傻瓜式的工具鸽捻,只要打開工具呼巴,把a(bǔ)pp扔進(jìn)去就可以了...
這是下載地址: https://github.com/skylot/jadx/releases
結(jié)果沒有反應(yīng)....
于是想到bin目錄下面有個(gè)jadx.bat的腳本文件,估計(jì)是命令行工具御蒲,試試

jadx.bat GtsManagedProvisioning.apk

結(jié)果報(bào)錯(cuò):


jadx反編譯報(bào)錯(cuò)

表示錯(cuò)誤看不懂衣赶,只好找其它方式

反編譯還有一種方式是

  1. 把dex文件從apk解壓出來,得到classes.dex
  2. 然后用dex2jar把dex文件轉(zhuǎn)換成jar文件: dex2jar.bat classes.dex
  3. 再把生成的classes.jar文件放到JD-GUI中即可

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

仍然報(bào)錯(cuò)

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,結(jié)果仍然不行)

此時(shí)想到干脆編譯下dex2jar的相關(guān)文件看看為什么報(bào)錯(cuò)
打開dex2jar-2.0\lib目錄碘箍,因?yàn)槭?code>reader.DexFileReader.<init> 處報(bào)錯(cuò)遵馆,所以應(yīng)該是DexFileReader初始化報(bào)錯(cuò)吧鲸郊,應(yīng)該是dex-reader-2.0.jardex-reader-api-2.0.jar把這兩個(gè)jar包扔到j(luò)dgui里面,很快便找到DexFileReader货邓,并在構(gòu)造方法里面秆撮,并找到相關(guān)源代碼

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)) {//這里主動(dòng)拋出異常
      throw new DexException("not support version.");
    }
    ....
}

可以猜測(cè)這在讀取第一個(gè)字符時(shí)通過比較version 值主動(dòng)拋出異常了
顯然version不等于3486512和3552048是罪魁禍?zhǔn)祝鼈兪鞘裁茨芈呖郑舷滤阉骺梢钥吹揭粋€(gè)定義的常量:

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

額像吻,MAGIC_035MAGIC_036,網(wǎng)上查了一下复隆,說是dex頭部校驗(yàn)

老版本的magic version是035
優(yōu)化的dex文件拨匆,magic version是036
報(bào)錯(cuò)居然說不等于這兩個(gè),是什么情況挽拂?惭每??

用notpad++打開classes.dex文件亏栈,在頭部看到如下情況


dex頭部

第二行竟然是037Lㄐ取!H薇薄黎侈!嗯,我有一個(gè)大膽的想法: 把037闷游,改成036峻汉,保存,再用dex2jar
成功F晖P莘汀!再用jd-gui打開jar文件也能順利反編譯

遺留思考:

  1. magic version是dex校驗(yàn)的話业簿,為什么gts的apk為是037一個(gè)不合法的值瘤礁?難道這個(gè)apk比較特殊?(實(shí)際驗(yàn)證這個(gè)apk安裝不上)
  2. 為什么讀到的int值3552048,而通過notepad++顯示是036梅尤?(猜測(cè)與字符編碼有關(guān))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末柜思,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子巷燥,更是在濱河造成了極大的恐慌酝蜒,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矾湃,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡堕澄,警方通過查閱死者的電腦和手機(jī)邀跃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門霉咨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拍屑,你說我怎么就攤上這事途戒。” “怎么了僵驰?”我有些...
    開封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵喷斋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蒜茴,道長(zhǎng)星爪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任粉私,我火速辦了婚禮顽腾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘诺核。我一直安慰自己抄肖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開白布窖杀。 她就那樣靜靜地躺著漓摩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪入客。 梳的紋絲不亂的頭發(fā)上管毙,一...
    開封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音痊项,去河邊找鬼锅风。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鞍泉,可吹牛的內(nèi)容都是我干的皱埠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼咖驮,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼边器!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起托修,我...
    開封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤忘巧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后睦刃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砚嘴,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了际长。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耸采。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖工育,靈堂內(nèi)的尸體忽然破棺而出虾宇,到底是詐尸還是另有隱情,我是刑警寧澤如绸,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布嘱朽,位于F島的核電站,受9級(jí)特大地震影響怔接,放射性物質(zhì)發(fā)生泄漏搪泳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一蜕提、第九天 我趴在偏房一處隱蔽的房頂上張望森书。 院中可真熱鬧,春花似錦谎势、人聲如沸凛膏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽猖毫。三九已至,卻和暖如春须喂,著一層夾襖步出監(jiān)牢的瞬間吁断,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工坞生, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仔役,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓是己,卻偏偏與公主長(zhǎng)得像又兵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卒废,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容