色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Android組件安全之drozer實(shí)戰(zhàn)

jf_vLt34KHi ? 來源:Tide安全團(tuán)隊(duì) ? 作者:Tide安全團(tuán)隊(duì) ? 2022-11-24 17:17 ? 次閱讀

前言

隨著手機(jī)市場(chǎng)的快速發(fā)展,各式各樣的手機(jī)應(yīng)用層出不窮。而手機(jī)應(yīng)用安全也成為一個(gè)熱門的話題,在海量的APP應(yīng)用中,可能會(huì)遇到各種各樣的威脅:木馬、病毒、篡改、破解、釣魚、二次打包、信息泄露、資源篡改、信息劫持等。而今天呢,我們將從Android組件安全的角度,通過實(shí)例演示的方式來揭露APP可能存在的、暴露在外的風(fēng)險(xiǎn)及薄弱點(diǎn)。

Android四大組件

先帶大家了解下Android的四大組件,分別是activity組件、service組件、content provider組件和broadcast receiver組件,這四個(gè)組件分別起到不同的作用,相互配合才能確保安卓系統(tǒng)的正常運(yùn)行,因此是缺一不可的。

8e9b2712-6bd8-11ed-8abf-dac502259ad0.png

Activity(活動(dòng))組件

Activity可以看成是安卓系統(tǒng)的根本,在這個(gè)根本上才可以進(jìn)行其他的工作,因?yàn)樵诎沧肯到y(tǒng)里運(yùn)行的所有的程序,它的流程都必須在【活動(dòng)】中運(yùn)行,所有他是最基本的模塊。它的作用是一個(gè)框架或頁面,每個(gè)程序會(huì)有多個(gè)【活動(dòng)】組成。所以在Android App 中只要能看見的幾乎都要依托于Activity,所以Activity是在開發(fā)中使用最頻繁的一種組件。(1)一個(gè)Activity通常就是一個(gè)單獨(dú)的屏幕(窗口)。(2)Activity之間通過Intent進(jìn)行通信。(3)android應(yīng)用中每一個(gè)Activity都必須要在AndroidManifest.xml配置文件中聲明,否則系統(tǒng)將不識(shí)別也不執(zhí)行該Activity。

Service(服務(wù))組件

Service是安卓里非常很重要的組件,它的地位和優(yōu)先級(jí)別是與活動(dòng)相似的,不過Service不能夠自己運(yùn)行,它只能在安卓的后臺(tái)運(yùn)行。它的作用就是與安卓的其他逐漸進(jìn)行交互,舉個(gè)簡(jiǎn)單例子:當(dāng)我們打開手機(jī)上音樂播放器并將它放到后臺(tái),此時(shí)播放的音樂就是由Service在負(fù)責(zé)控制。(1)service用于在后臺(tái)完成用戶指定的操作。(2)開發(fā)人員需要在應(yīng)用程序AndroidManifest.xml配置文件中聲明全部的service,使用標(biāo)簽。(3)Service通常位于后臺(tái)運(yùn)行,它一般不需要與用戶交互,因此Service組件沒有圖形用戶界面。Service組件需要繼承Service基類。Service組件通常用于為其他組件提供后臺(tái)服務(wù)或監(jiān)控其他組件的運(yùn)行狀態(tài)。

Content Provider(內(nèi)容提供器)組件

Content Provider(內(nèi)容提供器)用來管理和共享應(yīng)用程序的數(shù)據(jù)庫。在應(yīng)用程序間,Content Provider是共享數(shù)據(jù)的首選方式。(1)android平臺(tái)提供了Content Provider使一個(gè)應(yīng)用程序的指定數(shù)據(jù)集提供給其他應(yīng)用程序。其他應(yīng)用可以通過ContentResolver類從該內(nèi)容提供者中獲取或存入數(shù)據(jù)。(2)只有需要在多個(gè)應(yīng)用程序間共享數(shù)據(jù)是才需要內(nèi)容提供者。例如,通訊錄數(shù)據(jù)被多個(gè)應(yīng)用程序使用,且必須存儲(chǔ)在一個(gè)內(nèi)容提供者中。它的好處是統(tǒng)一數(shù)據(jù)訪問方式。(3)ContentProvider實(shí)現(xiàn)數(shù)據(jù)共享。ContentProvider用于保存和獲取數(shù)據(jù),并使其對(duì)所有應(yīng)用程序可見。這是不同應(yīng)用程序間共享數(shù)據(jù)的唯一方式,因?yàn)閍ndroid沒有提供所有應(yīng)用共同訪問的公共存儲(chǔ)區(qū)。

broadcast receiver(廣播接收者)組件

在安卓系統(tǒng)中,廣播接收器并不是直接就可以看到的,它是程序之間傳遞信息時(shí)的一種機(jī)制,作用就是接收或者發(fā)送通知。通俗的來說廣播接收器更像是一種傳遞組件,它能夠?qū)⑿畔⒔邮眨踔吝€可以對(duì)它進(jìn)行過濾然后進(jìn)行響應(yīng)。(1)你的應(yīng)用可以使用它對(duì)外部事件進(jìn)行過濾,只對(duì)感興趣的外部事件(如當(dāng)電話呼入時(shí),或者數(shù)據(jù)網(wǎng)絡(luò)可用時(shí))進(jìn)行接收并做出響應(yīng)。廣播接收器沒有用戶界面。然而,它們可以啟動(dòng)一個(gè)activity或serice來響應(yīng)它們收到的信息,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力,例如閃動(dòng)背燈、震動(dòng)、播放聲音等。一般來說是在狀態(tài)欄上放一個(gè)持久的圖標(biāo),用戶可以打開它并獲取消息。(2)廣播接收者的注冊(cè)有兩種方法,分別是程序動(dòng)態(tài)注冊(cè)和AndroidManifest文件中進(jìn)行靜態(tài)注冊(cè)。(3)動(dòng)態(tài)注冊(cè)廣播接收器特點(diǎn)是當(dāng)用來注冊(cè)的Activity關(guān)掉后,廣播也就失效了。靜態(tài)注冊(cè)無需擔(dān)憂廣播接收器是否被關(guān)閉,只要設(shè)備是開啟狀態(tài),廣播接收器也是打開著的。也就是說哪怕app本身未啟動(dòng),該app訂閱的廣播在觸發(fā)時(shí)也會(huì)對(duì)它起作用。

Android安全測(cè)試框架-drozer

drozer簡(jiǎn)介

drozer是一款針對(duì)Android的安全測(cè)試框架,分為安裝在PC端的控制臺(tái)、安裝在終端上的代理APP兩部分。可以利用APP的IPC通信,動(dòng)態(tài)的發(fā)現(xiàn)被測(cè)試APP的安全風(fēng)險(xiǎn)。drozer最主要的功能就是對(duì)安卓APP四大組件activity、 broadcast receivers、 content providers、 services進(jìn)行安全測(cè)試。

drozer安裝

環(huán)境準(zhǔn)備

1、python2.7環(huán)境,安裝地址 2、安卓模擬器(我用的MuMu)或一臺(tái)安卓實(shí)體機(jī) 3、java環(huán)境1.7,安裝地址(我用的jdk1.8,目前使用無問題) 4、adb,安裝地址 4、drozer、agent.apk、sieve(待測(cè)app) 安裝地址 5、FourGoats(待測(cè)app)安裝地址

Mac安裝drozer

8ede3b38-6bd8-11ed-8abf-dac502259ad0.png

8f177e5c-6bd8-11ed-8abf-dac502259ad0.png

8f45f6b0-6bd8-11ed-8abf-dac502259ad0.png

8f5237ea-6bd8-11ed-8abf-dac502259ad0.png

1.python2.7(系統(tǒng)自帶),也可直接下載安裝

2.java環(huán)境,直接下載安裝

3.adb可以從上述安裝地址下載相應(yīng)安裝包,解壓后配置下環(huán)境變量即可.這里僅演示下Mac的安裝方式:

安裝homebrew(已安裝的話可跳過)ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

8f6d9710-6bd8-11ed-8abf-dac502259ad0.png

安裝adbbrew install android-platform-tools測(cè)試是否安裝成功adb devices

8fe860a8-6bd8-11ed-8abf-dac502259ad0.png

1.drozer、agent.apk、sieve(待測(cè)app) 訪問上述鏈接,直接下載安裝相應(yīng)安裝包

902aa60c-6bd8-11ed-8abf-dac502259ad0.png

安裝成功后,執(zhí)行drozer命令輸出如下:

91de7136-6bd8-11ed-8abf-dac502259ad0.png

將下載好的agent.apk與sieve.apk、FourGoats.apk安裝到模擬器或安卓實(shí)體機(jī)中

921a6cf4-6bd8-11ed-8abf-dac502259ad0.png

以上就是drozer的安裝步驟,Windows和Linux平臺(tái)上的安裝大體上類似,就不一一測(cè)試了。

drozer實(shí)例演示

接下來將帶大家實(shí)例操作下通過利用drozer,來挖掘目標(biāo)app的漏洞隱患

drozer連接過程

第一步:adb連接模擬器或?qū)嶓w機(jī)

925ce368-6bd8-11ed-8abf-dac502259ad0.png

出現(xiàn)上述設(shè)備編號(hào)及狀態(tài),顯示連接成功

1.開啟模擬器,在電腦終端中輸入命令:adb devices

注:如果輸出中看不到模擬器,這可以使用adb kill-server,先殺死adb服務(wù),在嘗試下adb devices

2.如果是通過實(shí)體機(jī)進(jìn)行測(cè)試的話,需要通過USB數(shù)據(jù)線與電腦相連,USB連接步驟如下:

1、手機(jī):設(shè)置---->更多設(shè)置---->開發(fā)者選項(xiàng)---->USB調(diào)試 注釋:如果在設(shè)置里找不到開發(fā)者選項(xiàng),可以通過 設(shè)置----->關(guān)于手機(jī)----->連續(xù)點(diǎn)擊“版本號(hào)”多次。2、手機(jī)和電腦上都有驅(qū)動(dòng)(360助手等),并且用USB線連接上了;3、電腦:cmd進(jìn)入命令窗口:adb devices 4、連接成功會(huì)顯示設(shè)備編號(hào)和狀態(tài)。

第二步:端口轉(zhuǎn)發(fā)

連接成功后,接下來我們建立一個(gè)合適的端口用于轉(zhuǎn)發(fā)來使得我們的pc可以和模擬器中drozeragent打開的tcp套接字進(jìn)行連接,drozer默認(rèn)端口為31415執(zhí)行命令:adb forward tcp:31415 tcp:31415

第三步:連接drozer

在模擬器中打開drozer應(yīng)用程序,并開啟

9291eac2-6bd8-11ed-8abf-dac502259ad0.png

打開新的終端窗口,執(zhí)行命令drozerconsoleconnect出現(xiàn)以下畫面,顯示連接成功

933f54a0-6bd8-11ed-8abf-dac502259ad0.png

配置sieve應(yīng)用程序

打開我們下載好的sieve應(yīng)用程序,它是一款密碼管理軟件,專門被設(shè)計(jì)出來用于安卓應(yīng)用常見漏洞的學(xué)習(xí)使用。首先需要設(shè)置16位的masterpassword,為演示方便密碼設(shè)為:1234567812345678

93a6f0b0-6bd8-11ed-8abf-dac502259ad0.png

然后需要設(shè)置4位的pin碼:1234

93e04aea-6bd8-11ed-8abf-dac502259ad0.png

完成上述操作后,可以新建數(shù)據(jù)進(jìn)行保存

94128eba-6bd8-11ed-8abf-dac502259ad0.png

9425a70c-6bd8-11ed-8abf-dac502259ad0.png

退出登錄,打開驗(yàn)證,需輸入密碼才能讀取數(shù)據(jù)

9457667a-6bd8-11ed-8abf-dac502259ad0.png

至此操作完畢。

drozer實(shí)戰(zhàn)

drozer的常用命令有這幾種:

常用測(cè)試命令 作用
基本語法 run 具體命令 [-參數(shù)]
run app.package.list 列出所有包名(軟件)
run app.package.info -a 包名 查看某個(gè)軟件(包名)的具體信息
run app.package.attacksurface 包名 查看某個(gè)軟件的攻擊面
run app.activity.info -a 包名 查看某個(gè)軟件的 activity 組件的具體攻擊面
run app.activity.start --component 包名 具體activity 啟動(dòng)某個(gè) activity
run app.provider.info -a 包名 查看某個(gè)軟件的 provider 組件的具體攻擊面
run app.provider.finduri 包名 列出某個(gè)軟件的 URI
run app.provider.query content://xxxxxURI 查看某個(gè)URI內(nèi)容
run app.provider.query content://xxxxxURI --projection "'" 檢測(cè)某個(gè) URI 是否存在注入
run app.provider.query content://xxxxxURI --selection "'" 檢測(cè)某個(gè) URI 是否存在注入
run app.provider.query content://xxxxxURI --projection "* FROM SQLITE_MASTER WHERE type='table';--" 針對(duì)某個(gè) URI 進(jìn)行注入
run app.provider.read content://xxxxxURI 通過某個(gè) URI 讀取文件
run app.provider.download content://xxxxxURI 主機(jī)目錄/文件名 通過某個(gè) URI 下載文件
run app.service.info -a 包名 查看某個(gè)軟件的 service 組件的具體攻擊面
run app.service.start --action 某個(gè) action 啟動(dòng)某個(gè) service
run app.broadcast.info -a 包名 查看某個(gè)軟件的 broadcast 組件的具體攻擊面
run app.broadcast.send -action 某個(gè) action --extra TYPE KEY VALUE 執(zhí)行某個(gè) broadcast 組件的 action,并傳遞參數(shù)
run scanner.provider.finduris -a 包名 尋找可訪問 URI
run scanner.provider.traversal -a 包名 探測(cè)存在目錄遍歷的 URI
run scanner.provider.injection -a 包名 探測(cè)存在注入的 URI

滲透攻擊

首先我們執(zhí)行run app.package.list 列出設(shè)備中所有安裝的應(yīng)用程序 從中我們可以發(fā)現(xiàn)sieve的包名信息

947958ca-6bd8-11ed-8abf-dac502259ad0.png

執(zhí)行run app.package.info -a com.mwr.example.sieve查看待測(cè)APP詳細(xì)信息,包括版本,app在設(shè)備中保存數(shù)據(jù)的地方,app安裝的位置以及關(guān)于應(yīng)用權(quán)限的大量細(xì)節(jié)。

94ce07bc-6bd8-11ed-8abf-dac502259ad0.png

執(zhí)行run app.package.attacksurface com.mwr.example.sieve命令,來獲取針對(duì)待測(cè)app sieve的攻擊面。activities exported 越權(quán)攻擊,發(fā)送偽造消息等;broadcast receivers exported 發(fā)送惡意廣播,偽造廣播消息,越權(quán)攻擊等;content providers exported 數(shù)據(jù)泄漏,SQL注入等;services exported 越權(quán)攻擊,服務(wù)拒絕,權(quán)限提升等;

9510c7a0-6bd8-11ed-8abf-dac502259ad0.png

我們可以看到上圖潛在的可被導(dǎo)出的且暴露在外的相關(guān)組件種類及數(shù)量。

攻擊Activity

我們可以先從activity入手,通過一些特殊命令來深入研究暴露的攻擊面。執(zhí)行run app.activity.info -a 包名來列出指定包的所有activity。

954b96be-6bd8-11ed-8abf-dac502259ad0.png

我們可以看到目前有三種activity可被導(dǎo)出,其中MainLoginActivity是登錄界面,而PWList是登錄后的密碼加載頁面,既然此頁面可被導(dǎo)出且不需要權(quán)限,我們可以通過命令來啟動(dòng)可導(dǎo)出且不需要權(quán)限的activity 執(zhí)行run app.activity.start --component 包名 activity名。

9593b002-6bd8-11ed-8abf-dac502259ad0.png

95b3e822-6bd8-11ed-8abf-dac502259ad0.png

我們可以看到,程序調(diào)用成功,已經(jīng)成功繞過了登錄界面,進(jìn)入了登錄后密碼讀取頁面。

攻擊Content Providers

1. 數(shù)據(jù)泄露執(zhí)行run app.provider.info -a 包名,列出可被導(dǎo)出的provider

95edfe9a-6bd8-11ed-8abf-dac502259ad0.png

通過上述圖片,我們可以看出存在兩種provider組件可被導(dǎo)出,分別是DBContentProvider和FileBackupProvider其中只有DBContentProvider的/Keys路徑下需要權(quán)限訪問外,其他均不需要任何特定的權(quán)限就可以與之交互通過使用drozer的scanner模塊去猜測(cè)可能存在的URIs,執(zhí)行run scanner.provider.finduris -a 包名。

96726a40-6bd8-11ed-8abf-dac502259ad0.png

掃描結(jié)果可以看到成功掃描出3條可讀取目錄文件,使用其他的drozer模塊從目錄URI中獲得信息,甚至可以修改數(shù)據(jù)庫中的數(shù)據(jù) 執(zhí)行命令run app.provider.query --vertical content://com.mwr.example.sieve.DBContentProvider/Passwords/

96865b2c-6bd8-11ed-8abf-dac502259ad0.png

執(zhí)行命令

run app.provider.query --vertical content://com.mwr.example.sieve.DBContentProvider/Keys/

96a50586-6bd8-11ed-8abf-dac502259ad0.png

成功讀取出sieve加密后初始密碼及pin碼等2. SQL注入因?yàn)榘沧科脚_(tái)比較推薦使用SQLite數(shù)據(jù)庫存儲(chǔ)用戶數(shù)據(jù),我們可以查找可進(jìn)行sql注入的URIs 執(zhí)行命令run scanner.provider.injection -a 包名

96fe4056-6bd8-11ed-8abf-dac502259ad0.png

可以看出Projection參數(shù)和Selection參數(shù)均存在注入,我們使用projection參數(shù)傳遞sql注入語句到content provider中 執(zhí)行命令run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"

97554126-6bd8-11ed-8abf-dac502259ad0.png

報(bào)錯(cuò)了,說明應(yīng)該是存在SQL注入的,通過構(gòu)造注入語句,來列出數(shù)據(jù)庫中的所有表。執(zhí)行命令run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* from sqlite_master where type='table';--" --vertical

977d495a-6bd8-11ed-8abf-dac502259ad0.png

執(zhí)行命令run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* from Key;--"

9879e03e-6bd8-11ed-8abf-dac502259ad0.png

攻擊Service

執(zhí)行命令run app.service.info -a 包名。列出可被導(dǎo)出的基本service信息,可以看到AuthService和CryptoService可被導(dǎo)出。

98948c04-6bd8-11ed-8abf-dac502259ad0.png

通過執(zhí)行命令run app.service.send com.mwr.example.sievecom.mwr.example.sieve.AuthService --msg 2354 9234 0 --extra stringcom.mwr.example.sieve.PIN 1234 --bundle-as-obj

98da98f2-6bd8-11ed-8abf-dac502259ad0.png

我們可以直接獲取其初始密碼,其中 --msg what arg1 arg2指定獲取消息時(shí)要使用的what、arg1和arg2值 我們可以利用android killer反編譯工具對(duì)sieve進(jìn)行反編譯

9904d216-6bd8-11ed-8abf-dac502259ad0.png

提取其目標(biāo)服務(wù)源碼

9933751c-6bd8-11ed-8abf-dac502259ad0.png

通過分析其邏輯可以確定其what和arg1參數(shù),不過輸出的結(jié)果,需要在參數(shù)中輸入其pin值才可以獲取

攻擊broadcast

關(guān)于broadcast組件的漏洞利用,可通過可導(dǎo)出的組件進(jìn)行發(fā)送惡意廣播或者進(jìn)行拒絕服務(wù)攻擊。我們使用FourGoats進(jìn)行測(cè)試 執(zhí)行命令run app.broadcast.info -a 包名。列出可被導(dǎo)出的broadcast組件基本信息,我們可以看到存在一項(xiàng)可被導(dǎo)出的組件。

9973d6ca-6bd8-11ed-8abf-dac502259ad0.png

1. 發(fā)送惡意廣播由于運(yùn)行broadcast組件需要找到其對(duì)應(yīng)的action,所以我們需要反編譯app,使用android killer對(duì)其反編譯,并在AndroidManifest.xml中找到對(duì)應(yīng)actionorg.owasp.goatdroid.fourgoats.SOCIAL_SMS。

99a2dd9e-6bd8-11ed-8abf-dac502259ad0.png

在分析其組件源碼運(yùn)行邏輯可知需要使用兩個(gè)參數(shù):phoneNumber、message。

99e55cc8-6bd8-11ed-8abf-dac502259ad0.png

所以執(zhí)行命令run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --extra string phoneNumber 123 --extra string message 123

99f7eac8-6bd8-11ed-8abf-dac502259ad0.png

9a29a630-6bd8-11ed-8abf-dac502259ad0.png

2.拒絕服務(wù)前面我們已獲取其對(duì)應(yīng)的action,直接執(zhí)行命令run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS

9a5335d6-6bd8-11ed-8abf-dac502259ad0.png

9a785ece-6bd8-11ed-8abf-dac502259ad0.png

至此,演示結(jié)束,目前我們已提取了其軟件用戶名、密碼、pin碼等,也發(fā)現(xiàn)了諸多典型的漏洞,如SQL注入、目錄遍歷、拒絕服務(wù)等。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3935

    瀏覽量

    127352
  • Service
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    13784
  • 組件
    +關(guān)注

    關(guān)注

    1

    文章

    512

    瀏覽量

    17816
  • 安卓系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    273

    瀏覽量

    20556

原文標(biāo)題:Android組件安全之drozer實(shí)戰(zhàn)

文章出處:【微信號(hào):Tide安全團(tuán)隊(duì),微信公眾號(hào):Tide安全團(tuán)隊(duì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    可動(dòng)態(tài)布局的Android抽屜完整篇

      以前曾經(jīng)介紹過《Android提高第十九篇“多方向”抽屜》,當(dāng)這個(gè)抽屜組件不與周圍組件發(fā)生壓擠的情況下(周圍組件布局不變),是比較好使
    發(fā)表于 04-27 11:51 ?6337次閱讀

    Android開發(fā)入門,從實(shí)戰(zhàn)體驗(yàn)開始!

    華清遠(yuǎn)見傾力打造“Android開發(fā)免費(fèi)入門實(shí)戰(zhàn)體驗(yàn)課”,資深Android專家老師向?qū)W員全面展示Android領(lǐng)域主流開發(fā)平臺(tái)Android
    發(fā)表于 01-14 15:07

    張飛實(shí)戰(zhàn)電子設(shè)計(jì)思想核心2

    張飛實(shí)戰(zhàn)電子設(shè)計(jì)思想核心2
    發(fā)表于 04-23 19:24

    [資料分享]+大話企業(yè)級(jí)Android應(yīng)用開發(fā)實(shí)戰(zhàn)

    `[資料分享]+大話企業(yè)級(jí)Android應(yīng)用開發(fā)實(shí)戰(zhàn)一、看威武霸氣的封面作者:王家林 二、讀讀簡(jiǎn)介,看看適合你嗎? 這是一本能夠讓你學(xué)出幸福感并在還沒有學(xué)完時(shí)就能夠勝任android應(yīng)用軟件
    發(fā)表于 09-26 10:31

    [資料分享]+《Android軟件安全與逆向分析》

    攻擊 333  11.3.3  權(quán)限攻擊檢測(cè) 336  11.4  Android組件安全 339  11.4.1  Activity安全及Activity劫持演示 340  11.4
    發(fā)表于 09-26 10:53

    干貨!Android藍(lán)牙驅(qū)動(dòng)開發(fā)經(jīng)驗(yàn)

    干貨!Android藍(lán)牙驅(qū)動(dòng)開發(fā)經(jīng)驗(yàn)?zāi)夸浺?Bluetooth基本概念1二 Android Bluetooth架構(gòu)12.1 Bluetooth架構(gòu)圖12.2 Bluetooth代碼層次結(jié)構(gòu)3三
    發(fā)表于 02-29 15:53

    Android安全開發(fā)WebView中的地雷

    `Android安全開發(fā)WebView中的地雷0X01 About WebView在Android開發(fā)中,經(jīng)常會(huì)使用WebView來實(shí)現(xiàn)WEB頁面的展示,在Activiry中啟動(dòng)自己
    發(fā)表于 09-09 19:35

    AndroidsettingsWifi學(xué)習(xí)

    AndroidsettingsWifi學(xué)習(xí)
    發(fā)表于 11-02 10:52

    Androidwifi分析(上)

    Androidwifi分析(上)
    發(fā)表于 11-02 10:53

    Android開發(fā)入門與實(shí)戰(zhàn)

    Android開發(fā)入門與實(shí)戰(zhàn)
    發(fā)表于 03-30 13:25

    名師講壇——Android 開發(fā)實(shí)戰(zhàn)經(jīng)典

    名師講壇——Android 開發(fā)實(shí)戰(zhàn)經(jīng)典
    發(fā)表于 03-19 11:23 ?2次下載

    c#開發(fā)Android應(yīng)用實(shí)戰(zhàn)

    c#開發(fā)Android應(yīng)用實(shí)戰(zhàn)
    發(fā)表于 07-14 13:32 ?0次下載

    ANDROID開發(fā)應(yīng)用程序的方法和技巧

    本文檔以200多個(gè)經(jīng)典應(yīng)用范例的實(shí)現(xiàn)郭恒,詳細(xì)講解了開發(fā)各類Android應(yīng)用程序的方法和技巧。從UI界面布局實(shí)戰(zhàn)講起,依次講解了基本控件應(yīng)用、事件處理實(shí)戰(zhàn)、界面顯示實(shí)戰(zhàn)、文件操作和數(shù)
    發(fā)表于 09-11 15:48 ?7次下載

    微信小程序如何開發(fā)?微信小程序教程視頻常用組件API開發(fā)項(xiàng)目實(shí)戰(zhàn)

    本文檔的主要內(nèi)容介紹的是微信小程序如何開發(fā)?微信小程序教程視頻微信小程序入門與實(shí)戰(zhàn) 常用組件API開發(fā)技巧項(xiàng)目實(shí)戰(zhàn)詳細(xì)的介紹了
    發(fā)表于 08-28 14:41 ?88次下載

    手機(jī)APP開發(fā)MIT Appinventor詳細(xì)實(shí)戰(zhàn)教程(一),利用通過藍(lán)牙控制單片機(jī),以及實(shí)現(xiàn)單片機(jī)與android設(shè)備之間的

    MIT Appinventor 是編程領(lǐng)域較為受歡迎且適用的編程軟件 ,其操作流程和使用方法簡(jiǎn)單,一種深受廣大編程小鎮(zhèn)的喜愛今天為大家介紹一種利用它開發(fā)手機(jī)APP的實(shí)戰(zhàn)經(jīng)歷 ——手機(jī)APP開發(fā)
    發(fā)表于 11-14 09:21 ?44次下載
    手機(jī)APP開發(fā)<b class='flag-5'>之</b>MIT Appinventor詳細(xì)<b class='flag-5'>實(shí)戰(zhàn)</b>教程(一),利用通過藍(lán)牙控制單片機(jī),以及實(shí)現(xiàn)單片機(jī)與<b class='flag-5'>android</b>設(shè)備之間的
    主站蜘蛛池模板: 亚洲 在线 日韩 欧美| 麻豆XXXX乱女少妇精品-百度| 百度影音第四色| 67194con免费福和视频| 伊人久久综合影院| 亚洲视频黄| 亚洲欧美日韩另类精品一区二区三区| 无限资源在线看影院免费观看| 日本免费一本天堂在线| 欧美内射深插日本少妇| 欧美亚洲日韩在线在线影院| 蜜桃成熟时33D在线嘟嘟网| 久久永久影院免费| 久久艹综合| 久久免费看少妇高潮A片JA| 久久精品一区二区影院| 久久综合久综合久久鬼色| 久久噜国产精品拍拍拍拍| 久久视热频这里只精品| 乱h好大噗嗤噗嗤烂了| 暖暖日本在线手机免费完整版 | 俄罗斯9一14 young处| 东北成人社区| 国产黄a三级三级三级| 国产系列在线亚洲视频| 国模丽丽啪啪一区二区| 久久精品国产欧美日韩99热| 久久亚洲AV成人无码动态图| 免费国产综合视频在线看| 青柠视频在线观看高清HD| 日本亚洲精品色婷婷在线影院| 为什么丈夫插我我却喜欢被打着插| 午夜理伦片免费| 艳妇臀荡乳欲伦岳TXT下载| 中国特级黄色大片| china中国gay偷拍| 国产99青草全福视在线| 很黄很色60分钟在线观看| 久久视频精品3线视频在线观看| 男女无遮挡吃奶gift动态图| 日本无码专区亚洲麻豆|