Android 加殼初解

前言

? ?????為了方便新手理解加殼挡育,本篇文章打算從反編譯入手,通過場景問答的形式來講解加殼驱还。

場景一

? ?????? 如果一個Android新手渊鞋,想要查看一個APK的代碼,他會怎么做基跑?

? ? ? ? ?搜索引擎走起:通過Google/Baidu婚温,發(fā)現(xiàn)一堆"反編譯APK"的文章。

? ? ? ? ?這些文章基本思路:

????????????1:解壓縮APK包媳否,獲取Dex文件栅螟,通過dex2jar,轉(zhuǎn)換成jar文件

????????????2:上面獲取到的jar文件篱竭,通過 JD-GUI進(jìn)行查看

????????????3:通過ApkTool反編譯APK力图,獲取到資源文件,再重新打包掺逼,簽名

? ? ? ? ?那么走一遍吃媒,嘗試一下(新建APP,走一遍工具,得到如下圖)

反編譯結(jié)果圖

場景二

? ?????? 不想APK源碼被查看赘那,能怎么辦惑朦?

? ?????? 整理下反編譯代碼鏈路:APK->DEX->JAR>JD-GUI查看


? ?????? 思路一:在APK->DEX這一步的時候,能不能讓DEX文件獲取不到漓概?

? ?????? 嘗試:把DEX文件干掉漾月,重新簽名->安裝->安裝失敗(否定)

? ?????? 嘗試:把DEX文件放到assets下胃珍,重新簽名->安裝->安裝失斄褐住(否定)

? ?????? 結(jié)論:APK按照一定的格式才能被安裝


? ???????發(fā)散思路:能不能把DEX文件藏起來,用其他的DEX文件代替觅彰?

? ???????嘗試:新建工程B吩蔑,把A的DEX文件放到assets下,再把B的DEX放到A中填抬,重新簽名->安裝->安裝成功

? ???????打開崩潰烛芬?A中類找不到?

? ???????解決:可以通過B的DEX飒责,反射加載A中的DEX文件赘娄,這邊先給出代碼截圖。

? ???????具體思路會在文章:<APK中類的查找與加載>中講解)

反射加載DEX
反射加載DEX

? ???????那么走一遍宏蛉,嘗試一下

? ? ? ? ? 1:B工程新建Application遣臼,在onCreate里面通過反射加載assets里面的classes.dex文件(見上2張截圖)

? ? ? ? ? 2:A工程先生成一個Release包,再提取classes.dex放到A工程assets里面

? ? ? ? ? 3:A工程在AndroidManifest.xml里面拾并,添加B的Application

? ? ? ? ? 4:A工程打包揍堰,用B工程的classes.dex替換掉A的classes.dex,A重新打包嗅义,安裝屏歹,正常加載

????????????(見截圖)


B.Apk


A工程


合并之后的包

? ???????思路與結(jié)果:

? ???????????APP啟動時,先加載B的Application之碗,在通過B的Application加載A的Dex文件蝙眶,達(dá)到加殼的目的

? ???????????這樣可以讓用戶不能直接反編譯源碼,這就是最簡單的加殼(具體代碼:見Gitlab)

總結(jié)與拓展? ??

? ???????上面雖然說明了最簡單的加殼继控,但如果想實用的話械馆,還有非常多的問題。

? ???????例如:

? ???????????1:對殼DEX進(jìn)行反編譯武通,查看代碼霹崎,還能找到真正的DEX,怎么處理冶忱?

? ???????????2:怎么去加殼支付寶APK尾菇?

? ???????????3:這只是最基本的代碼加殼了,那資源能加殼嗎?

? ???????????4:上面只是在APK->DEX這一步做文章派诬,那么能不能讓DEX轉(zhuǎn)換成JAR的時候失斃拖?能不能讓JAR文件不能被JD-GUI查看默赂?


歡迎查看加殼系列文章

1:自動加殼工具

2:加殼后APP啟動優(yōu)化

3:加殼二代之殼加解密

4:dex2jar原理與破壞

5:加殼之SO庫加殼

6:加殼三代之指令抽離

7:加殼四代之指令轉(zhuǎn)換

相關(guān)文章

1:APK中類的查找與加載

2:最簡單的插件

3:最簡單的熱更新

4:Tinker原理講解一

5:Tinker原理講解二

6:Tinker原理講解三

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沛鸵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子缆八,更是在濱河造成了極大的恐慌曲掰,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奈辰,死亡現(xiàn)場離奇詭異栏妖,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)奖恰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門吊趾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瑟啃,你說我怎么就攤上這事论泛。” “怎么了翰守?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵孵奶,是天一觀的道長。 經(jīng)常有香客問我蜡峰,道長,這世上最難降的妖魔是什么朗恳? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任湿颅,我火速辦了婚禮,結(jié)果婚禮上粥诫,老公的妹妹穿的比我還像新娘油航。我一直安慰自己,他們只是感情好怀浆,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布谊囚。 她就那樣靜靜地躺著,像睡著了一般执赡。 火紅的嫁衣襯著肌膚如雪镰踏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天沙合,我揣著相機(jī)與錄音奠伪,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛绊率,可吹牛的內(nèi)容都是我干的谨敛。 我是一名探鬼主播眶熬,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼宜猜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缴渊?” 一聲冷哼從身側(cè)響起藐俺,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤肥惭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后紊搪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜜葱,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年耀石,在試婚紗的時候發(fā)現(xiàn)自己被綠了牵囤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡滞伟,死狀恐怖揭鳞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情梆奈,我是刑警寧澤野崇,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站亩钟,受9級特大地震影響乓梨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜清酥,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一扶镀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧焰轻,春花似錦臭觉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至揩懒,卻和暖如春什乙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旭从。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工稳强, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留场仲,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓退疫,卻偏偏與公主長得像渠缕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子褒繁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

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