正式加入字節跳動,分享一點面試小經驗
今天正式入職了字節跳動。工號超吉利,尾數是3個6。然后辦公環境也很好,這邊一棟樓都是辦公區域。公司內部配備各種小零食、飲料,還有免費的咖啡。15樓還有健身房。而且公司包三餐來著。下午三點半左右還會有阿姨推著小車給大家送下午茶。聽說入職以后很容易長胖來著。不過如果想要保持身材的話,公司二樓還提供專門的健身餐。周二周四還可以預約專業的按摩服務,有效調理頸椎和腰椎。生活服務得這么貼心,感覺在這里就只需要好好工作就好了吧,哈哈
其實很早就和小伙伴們說要寫一篇面試經驗的。包括我為什么想要換工作,為了換工作做了什么準備,以及面試過程的一些分享。但是前段時間因為住院做了個小手術而耽誤了。今天剛剛好現在在入職的熟悉時期。晚上的時候趁機把這篇寫完,順便也借機會完成一下我們組的新手村任務。各位有興趣來字節跳動的朋友們,可以把簡歷發送給我郵箱,我來幫你內推喲。
今天本文主要講解:
APK文件反編譯
- 什么是反編譯
- 如何防止反編譯
- APK文件的基本構造
APK加固的方案原理
- APK加固總體架構
- APK打包基本流程
- Dex文件的意義
AES加密項目實戰
- APK加固項目實戰
- APK脫殼技術實戰
一.APK文件反編譯
1.什么是反編譯
- 定義:
利用編譯程序從源語言編寫的源程序產生目標程序的過程
2.怎么進行反編譯?
先了解apk的文件構造結構
二.加固方案思想
一個程序員的故事:
辛辛苦苦找到一個對象,結婚后發現是個母夜叉。不給管錢就鬧,晚上睡覺她趴著睡,導致這程序員無法去洗腳了。然而這個程序員很努力,平時除了上班,還能夠做點外包,賺點外快。所以他就想到了把工資卡上交,而把賺到的外快放到了自己的小金庫。從此過上了性福生活
一個加密的故事:
通過將非核心的dex文件進行暴露來達到保護核心dex文件的目的。
三.基本原理
3.1Apk打包流程
加殼是在原來apk的基礎上加一層保護殼,dex文件修改了就需要重新打包,否則apk安裝不了。這就需要我們詳細學習apk如何打包的
3.2Dex文件是什么
加固的目的是保護dex,直接而言就是對dex文件進行操作,對dex文件動刀子,必須知道dex文件是什么,能否直接動刀子
3.3Dex文件加載流程
加殼后的文件是不能直接用的,dex文件是加密的,所以我們需要對他進行解密,解密后的dex文件如何加載?
3.4APK文件是怎么生產的
四.加固總體框架
那么問題來了:
- 如何達到加密效果?
- 為什么是兩個系列的dex?
- 殼dex 怎么來的
- 殼dex如何保護源dex?
- 如何簽名?
- 如何運行新dex(如何脫殼)?
4.1加密過程
4.2APK文件如何簽名
4.3APK文件如何運行(脫殼)
4.4如何制定某些類在 main dex中
multiDexKeepFile
:手動加入要放到Main.dex中的類
com.umeng.analytics.Abb.class
multiDexKeepProguard
:以Proguard的方式手動加入要放到的Main.dex中的類
-keep public class com.tencent.bugly.**{*;}
由于篇幅原因,這份面試寶典已經被整理成了PDF文檔,有需要Android面試寶典全套完整文檔的麻煩點贊+點擊這里即可獲取資料免費領取方式!
本文在開源項目:騰訊文檔中已收錄,里面包含不同方向的自學編程路線、面試題集合/面經、及系列技術文章等,資源持續更新中…
54054)]
本文在開源項目:騰訊文檔中已收錄,里面包含不同方向的自學編程路線、面試題集合/面經、及系列技術文章等,資源持續更新中…