最新阿里P7技术体系:Android程序员如何有效提升学习效率?使用指南
開頭
先說一下我大概的情況吧。渣本畢業,工作已經有快兩年了,從高中就開始玩小破站。無論是學習還是日常放松都是在b站。大學主學的軟件技術專業,所以,進大學校門那一刻起,去上海bilibili工作就在心里埋下了種子。在學校,專業學的挺好的,自己寫過一些小項目,也參與過一些協會開發的項目。
兩年前剛畢業時候,b站也有校招,我當然滿懷期待的參加了,但是并沒有被錄用。當時,挺失落的吧,當時也有想過放棄:我一個渣渣二本畢業,憑什么去上海,進b站啊。所以就找了個普普通通的公司開始了我的程序員生涯。
到今年年初的時候,疫情爆發了,各行業都收到的很大的影響,也包括我任職的小公司。在家隔離了一個多月,在家玩手機的看到了b站的社招,人閑下來的時候還真就會有各種想法會冒出來,我突然就想到,要不再試一次吧,反正工作也沒了,在家閑著也是閑著,就著手準備bilibili的面試。刷面試題,看別人的面經,總結了一下校招時的失敗經驗…準備了挺久的,得有20多天吧,把學習所學的和工作兩年的所學以及網友的經驗,系統的梳理、鞏固。世間所有的付出終是有回報的,努力的耕耘,肯定是有收獲的。我成功的入職了bilibili,也是要感謝網友們提供的寶貴經驗,所以整理了一下,把我的面經分享出來給大家。
第一階段:Android 基礎知識回顧:
- 回顧Android 開發編程,深入理解Android系統原理和層次結構,深入分析Handler源碼和原理;
- 回顧Java,C/C++,Kotlin、dart 在Android開發中必用的語言,熟悉一下幾種語言混淆后的特性;
- 回顧Android IPC和JNI的底層原理和熱更新技術回顧Native開發要點,使用C++結合NDK完成Android Native開發;
- 回顧Android開發中常用的 AMS、PMS、WMS原理和App啟動中服務加載的流程;
- 回顧Android開發中必用的 Google的MVVM框架:DataBinding+LiveData+ViewModel;
- 回顧Android開發中必用的 Google的MVP框架:Dagger2;
- 回顧Android開發必用的網絡架構:Okhttp3+RxJava2+Retrofit2+Rxdownload4+Rxcache+Glide;
Android 逆向基礎知識:
- 熟悉Android逆向工具的使用,如apktool,IDA,dex2jar,JEB,Androidkiller,Androguard等;
- 深入分析APK中包含的各文件格式,分析Android系統源碼中解析APK的相關代碼;學習和熟悉smali語言(重點);
- 仿微信寫一個APP,并利用工具逆向出apk內的代碼,并對比源碼分析。
入門知識總結和實戰(逆向入門):
- 知識梳理,常用工具安裝,adb命令與Linux常用命令,常見登錄邏輯分析;
- 分析ELF可執行程序,調式ELF可執行程序;ARM匯編與寄存器,ARM反匯編速成,ARM指令機器碼,常用ARM指令集;
- 反編譯ELF文件與ObjDump,ELF文件解析與readelf,ELF文件解析與010Editor,深入分析ELF文件結構;IDA靜態分析,IDA動態調式;
- 簡易計算器實現及分析(練習);
- 字符串加密與解密,冒泡排序算法分析;
- 關鍵android_server文件檢測,IDA調試端口檢測;
- ELF可執行程序加載so庫,DEX解析與dexDump,DEX解析與010Editor;
- 實現自己的Dex解析工具與GDA(練習);
- Androidkiller動態調試smali代碼插件,AS+smalidea調式smali代碼;
- Log注入實現免注冊,如何定位關鍵代碼,去除java層簽名驗證,去除廣告和彈窗(實戰);
- 推薦閱讀《AndroidXXXXXX……》隨便找本系統源碼講解的書看看吧;
Android 基礎算法和安全協議:
- 密碼學,對稱加密算法,非對稱加密算法,散列函數;
- 數字簽名,數字證書,SSL證書檢測,協議與安全協議;
- 了解服務器端與客戶端通信協議分析;
- 使用Charles抓登錄封包和驗證碼,協議構造與Java層MD5算法,動態調式smali代碼與sign字段;
- 協議構造類與SO層DESCBC算法,協議關鍵字段SIGN與SO層MD5算法,動態調試協議字段,動態調式協議關鍵字段SIGN;
- 協議關鍵字段pwad和sign,動態調式協議字段拼接與MD5加密,分析so層OpenSSLSHA1算法;
- 封包加密與反編譯失敗,使用方法跟蹤分析加密;java層逆向分析,分析so層TEA算法;
- 練習:抓取驗證碼和登錄封包,分析協議關鍵字段與RSA算法,證書與RSA原理及源碼分析;
- 對稱加密AES、PBE與CRC算法,數字簽名RSA、DSA算法;
第二階段:Android 逆向進階學習:
- Android 系統結構深入分析,自定義 ClassLoader,自定義注解和元注解原理分析;
- 了解AndroidNDK,靜態注冊,動態注冊,SO加載分析,
- App保護策略去除霸哥磁力搜素APK簽名驗證,一鍵去除簽名驗證,靜態代{過}{濾}理,動態代{過}{濾}理Hook Activity啟動函數,
- Hook簽名驗證函數介紹xposed框架:Xposed框架:
- 繞過驗證碼注冊Xposed框架:
- 登陸劫持Xposed框架:
- 篡改IMEI信息介紹CydiaSubstrate框架:
- Java層Hook:
- 篡改系統文字顏色Java層Hook:
- 修改方法返回值繞過登錄Java層Hook:
- 篡改游戲金幣Java層Hook:
- 篡改主機名和端口號
- Native層Hook:
- ADBI框架:ELFARMHOOK框架內存摳取Dex文件過反調試技巧C++游戲
- 逆向練習:動態調試2048純算法游戲,Zygote+Hook使2048游戲秒過關;
Android NDK與JNI全面剖析:
- so動態庫的介紹
- JNI動態注冊和靜態注冊
- NDK Build 工具介紹
- Cmake工具介紹
- JNI.h介紹
- Android 源碼工具和技巧
- ijkplayer 源碼分析及原理講解
- AndFix 源碼分析及原理講解
- Java調用so庫的動態流程解析
- NDK實現增量更新
- 案例:NDK實現換臉等工業級圖像識別
- 案例:NDK文件實現拆分和加密處理
Android 加固防護和脫殼簡介:
- DEX文件、ODEX文件與OAT文件;
- XML文件與ARSC文件;
- 分析App加固的產生及背景,最初加固方式,加固技術的發展;
- HOOK制作脫殼機,定制自己的脫殼系統;
- DexClassLoader動態加載分析,DEX自解析重構技術;
- 三代梆梆加固原理分析;愛加密加固原理分析;
- 360加固與脫殼機,360加固VM與置換表;
- 輔助脫殼機,IDA動態調式脫愛加密殼;
- IDA動態調式脫360殼,IDA動態調式脫SO殼;
- 脫360殼-dex2oat,脫360殼-drizzleDumper;
- 百度加固DD大法,百度加固VM與置換表;
- 阿里加固與脫殼機,騰訊樂固;
- ARSC資源保護與注解;
- 脫殼神器ZjDroid:
- 捕魚達3加固技術總結;
Android 脫殼與反脫殼分析:
- Android脫殼中的思路,技巧elf結構詳解:
- 動態運行庫so文件的文件組成結構elf結構詳解:
- 加載so文件的流程elf文件變形與保護,elf文件修復分析,so加殼文件修復常用調試檢測方法與過檢測方法
- Android源碼定制添加反反調試機制Android dvm 脫殼,Dalvik dex處理分析IDA脫殼腳本編寫,Odex修復方法,
- IDAOdex修復腳本編寫
進階知識總結和企業級實戰(逆向進階):
- 病毒分析與脫殼學習,用Ransomware類和木馬類進行學習;
- 手動脫殼《王者X耀》練習;
- 從0開始打造自己的破解代碼庫;
第三階段:Android 漏洞分析和挖掘:
- 學習常見的漏洞類型和原理。例如堆溢出,棧溢出,UAF等,可以參考漏洞分析相關書籍;
- 關注Android Security Bulletin,根據提供的diff分析漏洞成因;
- 學習并調試以前的經典漏洞;
- 學習漏洞挖掘fuzzing思路,參考書籍推薦《Android安全XXXX》;
- 病毒分析與病毒脫殼實戰;
Android 虛擬機技術、系統源碼分析、刷機機制介紹、制作ROM刷機包:
- ASP代碼注入式寫法;
- Android 免root進行hook;
- Android虛擬機原理,Android多開原理講解;
- 在apk內部寫一個虛擬機,在apk內安裝apk;
- 虛擬機適配Android 10和64位系統;
- 從0開始開發自己的虛擬機庫;
- 最完善的刷機工具 :魔趣 ROM;
- 最完善的刷機工具 :Devices - TWRP;
更多學習和討論,歡迎加入我們的知識星球!
點擊這里加入我們吧!
群內有許多來自一線的技術大牛,也有在小廠或外包公司奮斗的碼農,我們致力打造一個平等,高質量的Android交流圈子,不一定能短期就讓每個人的技術突飛猛進,但從長遠來說,眼光,格局,長遠發展的方向才是最重要的。
8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)
群內有許多來自一線的技術大牛,也有在小廠或外包公司奮斗的碼農,我們致力打造一個平等,高質量的Android交流圈子,不一定能短期就讓每個人的技術突飛猛進,但從長遠來說,眼光,格局,長遠發展的方向才是最重要的。
這里有2000+小伙伴,讓你的學習不寂寞~·
總結
以上是生活随笔為你收集整理的最新阿里P7技术体系:Android程序员如何有效提升学习效率?使用指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创建型设计模式——抽象工厂模式
- 下一篇: linux系统gpu test,GpuT