Android逆向工程師
面試指南
Interview Guide
安卓逆向工程師面試有哪些需要注意的?
Interview Guide
安卓逆向工程師崗位在近年來算是網際網路IT行業的香餑餑之一,月薪動輒上萬年薪動輒20萬,讓很多行業內兢兢業業拿一個五六千的外行人士很是羨慕。但是安卓逆向工程是專業技術要求很高的職業,外行人輕易搶不走你的飯碗,因此也有大量的人花很多金錢投資自己,學會了安卓逆向,想要入行分一杯羹。
光學會技術,並不等於就能找到一份好的工作。要找到一個很好的安卓逆向工程師崗位,我們一定不能忽視其中最為重要的環節——面試。
安卓逆向工程師在面試時,需要你掌握什麼技能,面試官會怎樣考核你?這些東西對於一位安卓逆向求職者來說,至關重要。畢竟相信很多和小編一樣願意花錢學好安卓逆向的人,應該都不是心血來潮,而是真的希望藉此技術謀得一份高薪的工作。
好工作待遇
Interview Guide
五險一金、出國旅遊、年底雙薪、帶薪年假、員工生日會、住房補貼
安卓逆向工程必須掌握的技能:
Interview Guide必備技能:
1、負責安卓程序的加解密和數據傳輸分析、拆解、逆向等工作;
2、逆向APK,了解運行過程;
3、Andorid本地提權獲得root權限;
4、熟練掌握軟體逆向靜態分析、動態調試、代碼跟蹤等;
5、熟悉Android開發,了解打包、反編譯、破解流程;
6、so破解、加殼。
面試中對應的具體要求:
1、加解密:一般都是遇到後再折騰解密,而且解密代碼和秘鑰一般都在代碼裡面。
2、了解apk的具體含義,結合安卓開發進行反編譯。
3、Andorid本地提權獲得root權限,一般真機是用recovery刷機包,但是病毒提權是怎麼樣的,目前掌握的一種提權的是像輸入命令行一樣輸入su並且用pm提權,還有一種是修改init.rc文件。
4、主要掌握ida動態調式和代碼跟蹤
5、打包,編譯和破解的流程是什麼樣的?
6、so破解:一般就是破殼。如360等。
補充:
加殼的另一種常用的方式是在二進位的程序中植入一段代碼,在運行的時候優先取得程序的控制權,做一些額外的工作。大多數病毒就是基於此原理。加殼的程序經常想盡辦法阻止外部程序或軟體對加殼程序的反彙編分析或者動態分析,以達到它不可告人的目的。這種技術也常用來保護軟體版權,防止被軟體破解。
安卓逆向工程師的任職要求
Interview Guide
崗位職責:
總結下來要求如下:
1、具有豐富的Android開發分析經驗,熟悉Android系統架構,熟悉android安全機制;
2、精通彙編語言、Java、C/C++語言,熟悉Smali語言,對逆向工程有濃厚興趣;
3、熟練掌握ida、gdb逆向分析工具;
4、熟練掌握軟體逆向靜態分析、動態調試、代碼跟蹤等;
5、熟悉so和java層hook;
6、熟悉Android開發,了解打包、反編譯、破解流程;
7、深入理解arm linux和Android底層運行機制;
8、熟練掌握各種調試工具:Smali、Dedexer、Dexdump、Apktool、Dex2jar、jd-gui。
面試官可能問到的問題?
Interview Guide
question:
1.Android的生命周期
onCreate - onStart - onResume-onPause-onStop-onDestory-onRestart
2.Android的入口函數?
繼承了application類中的attachContext,onCreate
3.xposed框架的原理及常用函數?
替換system/bin/app_process文件,app_process就是zygote進程文件,所以xposed通過替換zygote進程實現了控制手機上所有app進程
常用函數(1)findAndHookMethod(2)findAndHookConstructor hook構造函數(3)findClass:使用指定的類加載器查找類(4)findField : 在類中查找自動並將其設置為可訪問(5)CallMethod 調用給定對象的實例或靜態方法(6)newInstance 創建給定類的新實例
4.hook和注入有哪些?
l hook:反射(在程序運行的時候,對任意一個類,都可以獲取其方法及變量)
l java的動態代理(smali注入)
5.反調試
l Tracerpid不等於0
l Ptrace自身.
l IsDebuggerConnect。
(這部分內容比較多,反調試可以找我細細給你分析)
總結:機會永遠是留給有準備的人,如果你不是天才的話,在進行安卓逆向工程師面試前,最好要做好充足的準備。畢竟一份好的工作如果失去了是最大的損失,也是對自己苦苦學習安卓逆向技術的不尊重、不負責。如果你的安卓逆向技術夠硬,那麼不妨投一投簡歷,做好準備,去接受崗位與考核官的審核吧!