安卓逆向工程師崗位在近年來算是互聯(lián)網(wǎng)IT行業(yè)的香餑餑之一,月薪動(dòng)輒上萬年薪動(dòng)輒20萬微驶,讓很多行業(yè)內(nèi)兢兢業(yè)業(yè)拿一個(gè)五六千的外行人士很是羨慕浪谴。但是安卓逆向工程是專業(yè)技術(shù)要求很高的職業(yè),外行人輕易搶不走你的飯碗因苹,因此也有大量的人花很多金錢投資自己苟耻,學(xué)會(huì)了安卓逆向,想要入行分一杯羹扶檐。
光學(xué)會(huì)技術(shù)凶杖,并不等于就能找到一份好的工作。要找到一個(gè)很好的安卓逆向工程師崗位款筑,我們一定不能忽視其中最為重要的環(huán)節(jié)——面試智蝠。
安卓逆向工程師在面試時(shí)腾么,需要你掌握什么技能,面試官會(huì)怎樣考核你杈湾?這些東西對(duì)于一位安卓逆向求職者來說解虱,至關(guān)重要。畢竟相信很多和小編一樣愿意花錢學(xué)好安卓逆向的人毛秘,應(yīng)該都不是心血來潮饭寺,而是真的希望借此技術(shù)謀得一份高薪的工作。
安卓逆向工程必須掌握的技能:
必備技能:
1叫挟、負(fù)責(zé)安卓程序的加解密和數(shù)據(jù)傳輸分析艰匙、拆解、逆向等工作;
2抹恳、逆向APK,了解運(yùn)行過程员凝;
3、Andorid本地提權(quán)獲得root權(quán)限奋献;
4健霹、熟練掌握軟件逆向靜態(tài)分析软棺、動(dòng)態(tài)調(diào)試专筷、代碼跟蹤等;
5哼转、熟悉Android開發(fā)窃这,了解打包瞳别、反編譯、破解流程杭攻;
6祟敛、so破解、加殼兆解。
面試中對(duì)應(yīng)的具體要求:
1馆铁、加解密:一般都是遇到后再折騰解密,而且解密代碼和秘鑰一般都在代碼里面锅睛。
2埠巨、了解apk的具體含義,結(jié)合安卓開發(fā)進(jìn)行反編譯衣撬。
3乖订、Andorid本地提權(quán)獲得root權(quán)限,一般真機(jī)是用recovery刷機(jī)包具练,但是病毒提權(quán)是怎么樣的,目前掌握的一種提權(quán)的是像輸入命令行一樣輸入su并且用pm提權(quán)甜无,還有一種是修改init.rc文件扛点。
4哥遮、主要掌握ida動(dòng)態(tài)調(diào)式和代碼跟蹤
5、打包陵究,編譯和破解的流程是什么樣的眠饮?
6、so破解:一般就是破殼铜邮。如360等仪召。
補(bǔ)充:
加殼的另一種常用的方式是在二進(jìn)制的程序中植入一段代碼,在運(yùn)行的時(shí)候優(yōu)先取得程序的控制權(quán)松蒜,做一些額外的工作扔茅。大多數(shù)病毒就是基于此原理。加殼的程序經(jīng)常想盡辦法阻止外部程序或軟件對(duì)加殼程序的反匯編分析或者動(dòng)態(tài)分析秸苗,以達(dá)到它不可告人的目的召娜。這種技術(shù)也常用來保護(hù)軟件版權(quán),防止被軟件破解惊楼。
安卓逆向工程師的任職要求
崗位職責(zé):
總結(jié)下來要求如下:
1玖瘸、具有豐富的Android開發(fā)分析經(jīng)驗(yàn),熟悉Android系統(tǒng)架構(gòu)檀咙,熟悉android安全機(jī)制雅倒;
2、精通匯編語言弧可、Java蔑匣、C/C++語言,熟悉Smali語言侣诺,對(duì)逆向工程有濃厚興趣殖演;
3、熟練掌握ida年鸳、gdb逆向分析工具趴久;
4、熟練掌握軟件逆向靜態(tài)分析搔确、動(dòng)態(tài)調(diào)試彼棍、代碼跟蹤等;
5膳算、熟悉so和java層hook座硕;
6、熟悉Android開發(fā)涕蜂,了解打包华匾、反編譯、破解流程机隙;
7蜘拉、深入理解arm linux和Android底層運(yùn)行機(jī)制萨西;
8、熟練掌握各種調(diào)試工具:Smali旭旭、Dedexer谎脯、Dexdump、Apktool持寄、Dex2jar源梭、jd-gui。
面試官可能問到的問題稍味?
question:
1.Android的生命周期
onCreate - onStart - onResume-onPause-onStop-onDestory-onRestart
2.Android的入口函數(shù)废麻?
繼承了application類中的attachContext,onCreate
3.xposed框架的原理及常用函數(shù)?
替換system/bin/app_process文件仲闽,app_process就是zygote進(jìn)程文件脑溢,所以xposed通過替換zygote進(jìn)程實(shí)現(xiàn)了控制手機(jī)上所有app進(jìn)程
常用函數(shù)
(1)findAndHookMethod
(2)findAndHookConstructor hook構(gòu)造函數(shù)
(3)findClass:使用指定的類加載器查找類
(4)findField : 在類中查找自動(dòng)并將其設(shè)置為可訪問
(5)CallMethod 調(diào)用給定對(duì)象的實(shí)例或靜態(tài)方法
(6)newInstance 創(chuàng)建給定類的新實(shí)例
4.hook和注入有哪些?
l hook:反射(在程序運(yùn)行的時(shí)候赖欣,對(duì)任意一個(gè)類屑彻,都可以獲取其方法及變量)
l?java的動(dòng)態(tài)代理(smali注入)
5.反調(diào)試
lTracerpid不等于0
lPtrace自身.
l?IsDebuggerConnect。
(這部分內(nèi)容比較多顶吮,反調(diào)試可以找我細(xì)細(xì)給你分析)
6.逆向技術(shù)工具及免費(fèi)資料獲取+v:13140310004
總之機(jī)會(huì)永遠(yuǎn)是留給有準(zhǔn)備的人社牲,如果你不是天才的話,在進(jìn)行安卓逆向工程師面試前悴了,最好要做好充足的準(zhǔn)備搏恤。畢竟一份好的工作如果失去了是最大的損失,也是對(duì)自己苦苦學(xué)習(xí)安卓逆向技術(shù)的不尊重湃交、不負(fù)責(zé)熟空。如果你的安卓逆向技術(shù)夠硬,那么不妨投一投簡(jiǎn)歷搞莺,做好準(zhǔn)備息罗,去接受崗位與考核官的審核吧!