​【移動安全】一文入門Android逆向

2021-01-16 Tide安全團隊

本文節主要介紹一下Android逆向常用的環境、工具、動靜態分析思路,筆者通過學習肉絲大佬分享的一些內容,加上自己一些經驗總結而來。

1、環境準備

環境也分三六九等,一個好的環境能讓你節省大量時間和精力去投入到更有意義的事情中,所以Android移動安全第一步,就是配置一套無坑的環境,首先是硬體配置如下:

Kali-linux-2019-4-vmware-amd64

1.1、VMware虛擬機

1、下載並安裝虛擬機後,註冊碼百度搜索註冊即可。
VMware workstation下載(Windows)
VMware Fusion下載(Mac)
2、下載並運行kali虛擬機
kali-linux-2019-4-vmware-amd64-zip.torrent
3、Kali更改時區:

dpkg-reconfigure tzdata然後選擇`Asia→Shanghai`,然後重啟即可。

4、更新源apt update
5、安裝中文字體
apt install xfonts-intl-chinese
apt install ttf-wqy-microhei

1.2、Android studio

1、訪問官網並下載最新版android studio

wget https://redirector.gvt1.com/edgedl/android/studio/ide-zips/4.0.1.0/android-studio-ide-193.6626763-linux.tar.gz

2、新建第一個Android項目

3、耐心等待android-studio加載完成即可
如果下載速度過慢,可配置代理重新加載。

1.3、Genymotion模擬器

1、genymotion下載
2、選擇Android8.0版本,並選擇主網卡設置為橋接模式

3、運行模擬器,並消除wifi感嘆號以及時間同步
在模擬器的shell裡以root用戶執行:

settings put global captive_portal_http_url https://www.google.cn/generate_204settings put global captive_portal_https_url https://www.google.cn/generate_204settings put global ntp_server 1.hk.pool.ntp.orgreboot

1.4、Genymotion ARM Translation

1、Genymotion是基於X86的,不支持ARM架構。所以有些應用是基於ARM架構編譯的就無法安裝,出現如下提示:

2、解決方法
安裝ARM Translation tool,
下載地址:[https://github.com/m9rco/Genymotion_ARM_Translation](https://github.com/m9rco/Genymotion_ARM_Translation)
下載與Genymotion模擬器相對應的Android版本的Genymotion-ARM-Translation.zip
然後將該文件直接拖入Genymotion,點OK開始安裝

安裝完點OK,重啟一下Genymotion即可
1.5、常用工具

1、命令工具
tmux: 可以關閉窗口將程序放在後臺運行
jnettop: 監測網絡流量,得到通訊IP、埠、URL、速率信息
netstat -tunlp:埠對應進程號、監聽、收發包埠
htop: top 的增強版,當前系統負載、前臺活躍進程、線程和佔用

apt install tmux jnettop htop


2、QtScrcpy
Android實時投屏軟體
[https://gitee.com/Barryda/QtScrcpy/releases](https://gitee.com/Barryda/QtScrcpy/releases)

3、wifi adb
連接WIFI自動開啟網絡調試
[https://www.apkmirror.com/apk/metactrl/wifi-adb-debug-over-air/](https://www.apkmirror.com/apk/metactrl/wifi-adb-debug-over-air/)

kali虛擬機adb連接模擬器:
直接adb devices時提示沒設備,可以先使用adb connect 192.168.3.18:5555

4、termux
Android終端模擬器應用程式,可直接運行而無需生根或安裝。自動安裝了最小的基本系統-使用APT軟體包管理器可以使用其他軟體包



5、Neofetch
在終端中顯示Linux系統信息,可以連接手機查看手機系統信息

2、四大組件與系統架構2.1、Android四大組件


1、Activity

1、一個Activity通常就是一個單獨的窗口2、Activity之間通過Intent進行通信。3、Activity應用中每一個Activity都必須要在AndroidManifest.xml配置文件中聲明,否則系統將不識別也不執行該Activity。


2、Service

1、Started(啟動):當應用程式組件(如Activity)調用StartService()方法啟動服務時,服務處於Started狀態。2、bound(綁定):當應用程式組件調用bindService()方法綁定到服務時,服務處於bound狀態。3、Service通常位於後臺運行,它一般不需要與用戶交互,因此Service組件沒有圖形用戶界面。Service組件需要繼承Service基類。Service組件通常用於為其他組件提供後臺服務或監控其他組件的運行狀態。


3、Content provider

1、Android平臺提供了Content Provider使一個應用程式的指定數據集提供給其他應用程式。其他應用可以通過ContentResolver類從該內容提供者中獲取或存入數據。2、只有需要在多個應用程式間共享數據是才需要內容提供者。例如,通訊錄數據被多個應用程式使用,且必須存儲在一個內容提供者中。它的好處是統一數據訪問方式。3、ContentProvider實現數據共享。ContentProvider用於保存和獲取數據,並使其對所有應用程式可見。這是不同應用程式間共享數據的唯一方式,因為android沒有提供所有應用共同訪問的公共存儲區。4、開發人員不會直接使用ContentProvider類的對象,大多數是通過ContentResolver對象實現對ContentProvider的操作。5、ContentProvider使用URI來唯一標識其數據集,這裡的URI以content://作為前綴,表示該數據由ContentProvider來管理。


4、Broadcast Receiver

1、你的應用可以使用它對外部事件進行過濾,只對感興趣的外部事件(如當電話呼入時,或者數據網絡可用時)進行接收並做出響應。廣播接收器沒有用戶界面。然而,它們可以啟動一個activity或serice來響應它們收到的信息,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力,例如閃動背燈、震動、播放聲音等。一般來說是在狀態欄上放一個持久的圖標,用戶可以打開它並獲取消息。2、廣播接收者的註冊有兩種方法,分別是程序動態註冊和AndroidManifest文件中進行靜態註冊。3、動態註冊廣播接收器特點是當用來註冊的Activity關掉後,廣播也就失效了。靜態註冊無需擔憂廣播接收器是否被關閉,只要設備是開啟狀態,廣播接收器也是打開著的。也就是說哪怕app本身未啟動,該app訂閱的廣播在觸發時也會對它起作用。


2.2、Android系統架構


Android採用分層的架構,分為四層,從高層到底層分為應用程式層(app+System apps),應用程式框架層(Java API Framework),系統運行庫和運行環境層(Libraries + android Runtime)和Linux核心層(HAL+ Linux Kernel)


2.3、Android常用開發與逆向命令總結


1、file查看文件屬性
2、使用echo命令寫內容到文件中,然後利用cat讀取文件內容。
3、使用dumpsys命令獲取當前頂層activity的信息,grep進行過濾,-i參數忽略大小寫。

4、ls -alit按時間排序顯示當前目錄全部信息。
5、dumpsys package com.termux查看該APP內存中的信息

6、ps -e 顯示全部進程


7、dumpsys dbinfo com.termux查看資料庫信息

8、adb pull /sdcard/app 將手機中的文件拷貝到電腦當前目錄下
adb push D:\tmp.txt /sdcard 將本地文件放到手機中
註:如遇到權限問題,使用chmod改權限
9、adb forward埠轉發
10、adb logcat 查看當前日誌信息

adb logcat |grep -i com.termux



11、指定連接某臺設備的adb shell

adb -s 192.168.3.18:5555 shell


12、查看某埠對應的進程名

netstat -tunlp |grep 7001  # 埠netstat -tunlp |grep "com.termux" # 進程名netstat -aple |grep -i https #正在通信的埠,查看使用https的通信



13、htop 實時查看手機進程
手機普通用戶termux安裝



手機root用戶查看htop,全部進程

$ su# /data/data/com.termux/files/usr/bin/htop


3、刷機3.1、推薦環境
1、pixel(sailfish)+官方8.1.0_r1+twrp3.3.0+Magisk+Frida
2、pixel(sailfish)+twrp3.3.0+lineage16.0+addonsu16.0

1、pixel(sailfish)+官方7.1.2_r8+twrp3.2.1-0+SuperSU+XposedInstaller

1、pixel(sailfish)+最新fastboot+Fart8.1.0
2、n6p(angler)+老fastboot+Fart8.1.0

1、n6p(angler)+原生8.1.0_r1+twrp3.3.1+SuperSu3.2、n6p(angler)+官方8.1.0_r1+twrp3.3.1+Magisk+Frida

下面帶領大家刷兩套常用手機環境。
搜鏡像並下載8.1.0 (OPM1.171019.011, Dec 2017)
[https://developers.google.com/android/images](https://developers.google.com/android/images)
然後下載對應手機型號的安裝包

root@tale:~/Desktop# wget https://dl.google.com/dl/android/aosp/angler-opm1.171019.011-factory-39448337.ziproot@tale:~/Desktop# 7z x angler-opm1.171019.011-factory-39448337.zip


1、將fastboot添加環境變量

# nano ~/.bashrc添加export PATH=/root/Android/Sdk/platform-tools:$PATH# source ~/.bashrc


2、手機完全關機,按住下音量鍵+關機鍵,進入bootloader模式

root@tale:~/Desktop/angler-opm1.171019.011# ./flash-all.sh



部分較老機型在使用fastboot刷入8.1.0_r1版本的FART時(比如bullhead),會出現各種奇怪錯誤,原因是使用高版本的fastboot會報錯:

複製自己編譯的fastboot替換原文件即可。

# which fastboot# mv /root/Desktop/fastboot Android/Sdk/platform-tools/fastboot# chmod 777 fastboot



提示finished之後手機會進入重啟狀態


選擇中文後,一直點下一步進入手機主屏幕,然後設置休眠時間長一些,再去點擊10次版本號,打開開發者選項,打開「不鎖定屏幕」
-關閉「自動系統更新」-開啟「USB調試」


3.2.1、使用Magisk獲取root


[https://twrp.me/](https://twrp.me/)
選擇TWRP 3.3.1-0 Released,然後點擊 devices page

選擇Primary (Europe)

下載拷貝到kali虛擬機
手機進入bootloader模式,然後使用fastboot flash recovery命令

# adb reboot bootloader# fastboot flash recovery twrp-3.3.1-0-angler.img 註:刷pixel XL使用# fastboot boot twrp-3.3.1-0-marlin.img


然後手機按兩下向下音量鍵,點擊開關鍵進入recovery mode模式
滑動進入後選擇settings,然後取消「Enable screen timeout」
下載Magisk、frida-server

# wget https://github.com/topjohnwu/Magisk/releases/download/v20.4/Magisk-v20.4.zip# adb push Magisk-v20.4.zip /sdcard/# wget https://github.com/frida/frida/releases/download/12.11.10/frida-server-12.11.10-android-arm64.xz# 7z x frida-server-12.11.10-android-arm64.xz 放到官網推薦目錄下# adb push frida-server-12.11.10-android-arm64 /data/local/tmp/

然後點擊install選項,找到Magisk-v20.4.zip,點進去之後向右滑動進行安裝,完成之後點擊Reboot System選擇Do Not install


啟動手機後,運行wifi adb時會彈出root請求選項,如下

3.2.2、啟動frida-server


然後我們去開啟手機frida-server

➜  ~ adb shellangler:/ $ whoamishellangler:/ $ suangler:/ # whoamirootangler:/ # cd /data/local/tmp/angler:/data/local/tmp # lsfrida-server-12.11.10-android-arm64 oatangler:/data/local/tmp # chmod 777 frida-server-12.11.10-android-arm64                      angler:/data/local/tmp # ./frida-server-12.11.10-android-arm64 &[1] 8096

至此該套n6p(angler)+官方8.1.0_r1+twrp3.3.1+Magisk+Frida環境已刷成功。

3.3、n6p(angler)+官方8.1.0_r1+twrp3.3.1+SuperSu+NetHunter

2020年4月初,Kali在其官方博客上釋出了最新的Kali Nethunter 2020.1,帶來了全新的Kali NetHunter Rootless和Kali NetHunter Lite,同時對完整版Kali Nethunter進行了更加深入的優化,使用了全新的內核編譯工具,從內核全面支持USB鍵盤、光碟機和網卡模擬,功能更加強大,系統更加穩定。可以連上顯示器和鍵鼠,直接成為一臺電腦,直接把桌面環境帶著走。


Kali Nethunter的完整鏡像不是所有手機都能裝的,只有官網支持的設備才能裝。這裡使用Nexus 6p(angler)進行舉例,主要流程分四步:

3.3.1、刷入官方原版鏡像

首先完全關機,按住音量下+關機鍵,或直接使用如下命令,進入bootloader模式

# adb reboot bootloader# cd angler-opm1.171019.011/# ./flash-all.sh

3.3.2、三方recovery:twrp

# adb reboot bootloader# fastboot flash recovery twrp-3.3.1-0-angler.img

3.3.3、使用SuperSU獲取root
按兩下音量↓鍵,開機鍵確認進入recovery mode# adb push SR5-SuperSU-v2.82-SR5-20171001224502.zip /sdcard然後安裝SuperSU即可

3.3.4、刷入Kali Nethunter

下載Nexus 6P Oreo

https://www.offensive-security.com/kali-linux-nethunter-download/

root@tale:~# proxychains wget https://images.kali.org/nethunter/nethunter-2020.3-angler-oreo-kalifs-full.zip# adb push /Users/tale/Downloads/nethunter-2020.3-angler-oreo-kalifs-full.zip /sdcard/# adb reboot bootloader按兩下音量↓鍵,開機鍵確認進入recovery mode然後選擇安裝Nethunter即可

刷機結束後進入系統首次也要先點擊Nethunter的應用,申請的所有權限都給,左側導航進入Kali Chroot Manager,點擊START KALI CHROOT,只要初始化這一次,後續無論如何重啟都會出現如圖所示的Everything is fine and Chroot has been started!。
至此詳細刷機流程結束。

3.3.5、使用Kali Nethunter

1、點開Nethunter這個app,給它所有的權限,左上角選擇Kali Chroot Manager頁面,看到chroot系統初始化完成。
2、點開Nethunter終端這款App,選擇KALI,進入Kali系統。
3、apt update升級系統中的軟體庫信息。
4、可以安裝linux環境才能跑的命令程序,如apt install neofetch htop jnettop等。
5、打開Nethunter這個應用,左上角切換到KeX Manager,點擊「SETUP LOCAL SERVER」,輸入一個連接密碼和顯示密碼,輸入和確認即可,然後點擊「START SERVER」開啟伺服器。點開「KeX Client」這個App,在密碼那一欄輸入密碼之後,點擊「Connect」進行連接,即可直接進入Kali Nethunter作業系統的桌面。

6、配合QtScrcpy、wifiadb更方便的從電腦操控手機,並不用連接數據線
7、可以在此手機系統運行操作burp、Wireshark來抓包,手機SIM卡的流量也可以抓到。
8、Kali Nethunter為諸多USB設備和無線網卡打上了驅動補丁,可以在手機上直接製作路由器,然後在網卡上進行抓包。(以後會發文章詳情介紹)
製作路由器來抓包可以徹底解決抓不到包的問題,因為在路由器上抓包,對於一個App來說日常使用是沒有區別的,所以可以做到對App的完全無感知的,從上帝視角對APP進行全面監控。

4、動靜態分析

下面以具體一個惡意APP為實例,運用動靜態分析方法結合工具使用來分析該APP。
通過模擬器安裝該APP發現場面高能,背景和背景音樂非常不健康(筆者差點身敗名裂),並且音量被調到最大,循環播放無法關閉,屏幕也被鎖定無法關閉。

4.1、靜態分析

靜態分析原理基本就是一個反彙編過程,常用的靜態分析工具為jadx、jeb、gda,當我們拿到手分析一款APP時,基本先反編譯、解包大致查看APK裡的內容,下圖為jadx-gui反編譯之後的情況。

# proxychains wget https://github.com/skylot/jadx/releases/download/v1.1.0/jadx-1.1.0.zip



可以看到該APP並沒有加殼,然後我們解壓APK文件後,發現在r文件夾下存放了資源文件(包括多人運動的圖片與聲音),dex為Dalvik虛擬機可執行文件,resources存放了一些字符串,meta包含該APP籤名信息,AndroidManifest文件中包含了APP的配置信息。

將要分析的APP文件拖入jeb之後,進入MainActivity,然後選擇Decompile,通過代碼分析發現該APP首先註冊了Broadcast,然後尋找該類Class.forName("com.shimeng.qq2693533893.MyServiceOne"),最後用startService來啟動該類。主要邏輯在MyServiceOne類裡。

點開MyServiceOne發現裡面有祝福的話

通過在模擬器運行該APP發現,連接模擬器的ADB斷掉,而且重啟模擬器會自動彈出APP的頁面並且自動播放聲音,該聲音無法關掉,而且重啟手機後也會自動播放聲音。
setprop persist.sys.usb.config none執行斷掉自身USB的操作。

4.2、動態分析

動態分析在運行代碼的情況下,通過跟蹤分析相關的內存,如寄存器內容,函數執行結果,內存使用情況等等,分析函數功能,明確代碼邏輯。
objection是由Frida提供支持的運行時移動探索工具包,旨在幫助您評估行動應用程式的安全狀況

# wget https://bootstrap.pypa.io/get-pip.py# python3 get-pip.py# pip install objection# objection version# adb push frida-server-12.11.10-android-arm64  /data/local/tmp# adb shell# su# cd /data/local/tmp# chmod 777 *# ./frida-server-12.11.10-android-arm64# objection -g com.android.settings explore



通過objection動態分析該APP,不過因要分析的惡意APP會自動斷掉USB連接,所以我們在模擬機上用termux運行frida服務,並監聽8888埠,用電腦去連接監聽的埠。

vbox: # ./frida-server-12.11.10-android-x86 -l 0.0.0.0:8888


通過frida-ps找到該APP包名com.shimeng.qq2693533893

# frida-ps -H 192.168.56.101:8888


配合加載Wallbreaker插件,更方便的搜索查看Android內存中的類結構、實例、內部數據等。

# git clone https://github.com/hluwa/Wallbreaker ~/.objection/plugins/Wallbreaker# objection -N -h 192.168.56.101 -p 8888 -g com.android.settings explore -P ~/.objection/plugins




通過動靜態結合分析了解大致邏輯在com.shimeng.qq2693533893.MyServiceOne類中,操作按解除鎖定後,然後hook該類

com.shimeng.qq2693533893 on (Android: 8.0.0) [net] # android hooking watch class com.shimeng.qq2693533893.MyServiceOne




首先觀察objection發現一直調用該函數access$L1000018
然後hook該方法

com.shimeng.qq2693533893 on (Android: 8.0.0) [net] # android hooking watch class_method com.shimeng.qq2693533893.MyServiceOne.access$L1000018 --dump-backtrace



發現一直在調用MyServiceOne$100000007,通過靜態分析找到100000007,發現該方法是調用getStreamMaxVolume系統音量最大的api,所以該APP運行之後無法關閉音量。

回頭來看我們輸入的解鎖碼然後列印出來的內容,相當於輸入了一個解鎖碼的參數,下圖涉及到的調用方法即APP的執行流程。

com.shimeng.qq2693533893 on (Android: 8.0.0) [net] # android hooking watch class com.shimeng.qq2693533893.MyServiceOne


然後hook顏如玉方法

com.shimeng.qq2693533893 on (Android: 8.0.0) [net] # android hooking watch class_method com.shimeng.qq2693533893.MyServiceOne.顏如玉 --dump-args --dump-backtrace --dump-return



點擊再點解鎖,發現列印出了參數、返回值、調用棧。

根據列印出的內容繼續跟蹤該類com.shimeng.qq2693533893.MyServiceOne$100000002
發現主要的判斷邏輯如下,如果與9DDEB743E935CE399F1DFAF080775366相等,則移除MyServiceOne.this.util.removeView(),進入sm2

if(顏如玉QQ2693533893.getSaltMD5(MyServiceOne.顏如玉(v2.substring(0, 3))) + v2.substring(3, v2.length()).equals("9DDEB743E935CE399F1DFAF080775366" + v3_1)) {MyServiceOne.this.util.removeView();MyServiceOne.this.sm2();


至此,利用動態分析我們將更準確的定位到關鍵性邏輯,相比搜索字符串碰運氣,更快捷靠譜。

5、脫殼

將解包後的dex文件導入010Editor進行分析查看,發現文件頭為dex035,比較常用的葫蘆娃脫殼機FRIDA-DEXDump的原理是採用暴力搜索內存中dex035進行特徵匹配

# proxychains wget https://www.sweetscape.com/download/010EditorLinux64Installer.tar.gz# tar zxvf 010EditorLinux64Installer.tar.gz # ./010EditorLinux64Installer



個人比較常用的FRIDA-DEXDump如作者所說可實現三秒脫殼。

https://github.com/hluwa/FRIDA-DEXDump默念一聲"我想脫個殼"。啟動 APP。啟動 frida-server。python main.py。默數三秒,脫好了。


6、總結

越學越菜

相關焦點

  • 一文入門Android逆向
    然後選擇`Asia→Shanghai`,然後重啟即可。4、更廣播接收者的註冊有兩種方法,分別是程序動態註冊和AndroidManifest文件中進行靜態註冊。動態註冊廣播接收器特點是當用來註冊的Activity關掉後,廣播也就失效了。靜態註冊無需擔憂廣播接收器是否被關閉,只要設備是開啟狀態,廣播接收器也是打開著的。也就是說哪怕app本身未啟動,該app訂閱的廣播在觸發時也會對它起作用。
  • 聊聊Python爬蟲工程師以後發展方向之一如何入門Android逆向
    背景:爬蟲工程師對逆向的需求及安卓逆向發展前景淺析這篇文章寫給Python爬蟲工程師們,網際網路寒冬的就業壓力越來越大,流量越來越湧向移動端,爬蟲和反爬的攻防不斷升級,這一切的一切,都讓我們不得不學習新技能,才能保持競爭力和養家餬口(一群單身狗,掙的錢連自己都養不活) 。
  • 推薦:Android逆向安全4大書籍,從入門到精通
    Android逆向安全是一個很熱門高薪的行業,很多人都想要去學習這門技術,但又有多少人能夠學會呢?很多人都沒有找對學習的方法,而學習的方法有兩種,第一就是跟著培訓班走,第二就是要有學習路線,第一種很簡單適合很多人,第二種就難了,很多人因為缺乏自制力而沒有堅持下去。
  • 自學Android逆向的學習難點
    學習建議一首先,自學安卓逆向,一定要有清晰明確的學習思維。第一步:最要緊的就是買一本入門android逆向的入門書籍,第一遍,先把書籍通讀一遍,至少要明白安卓逆向中大部分的專有名詞,基本的名詞都不知道,那就別談後期的學習和實踐了。第二步:當你明白了有哪些專有名詞之後,就可以開始對照著書籍,動手。
  • 《Android逆向反編譯代碼注入》- 逆向安全入門必看視頻教程
    《Android逆向反編譯代碼注入》>適合人群:Android開發人員、逆向反編譯開發人員、以及對Android逆向安全感興趣的朋友。視頻地址:51CTO學院:https://edu.51cto.com/course/24485.html騰訊課堂:https://ke.qq.com/course/2868968學完本課程,可以讓大家掌握Android逆向反編譯工具、重籤名工具、smali語法知識、開發jar包,以及代碼修改和注入技術
  • Android逆向之手機環境配置
    該篇文章主要介紹在Android逆向開始之前的手機環境配置。
  • Android安全幾道入門題目
    Android系統由於其開源的屬性,市場上針對開原始碼定製的ROM參差不齊,在系統層面的安全防範和易損性都不一樣,android
  • 【Sobug漏洞時間】Android APP安全測試入門
  • Android新手入門-Android中文SDK
    Android新手入門本文引用地址:http://www.eepw.com.cn/article/201610/305797.htmAndroid新手入門 (Getting Started with Android)新手入門Android,請首先閱讀下面的章節 (To get started with Android, please read the following
  • 移動安全 | 逆向基礎
    在這裡,首先簡單介紹一下高級語言、彙編語言以及機器語言,然後再介紹APK的編譯過程,為後續逆向打下基礎。當然,編譯涉及到的知識遠遠不止這些,這裡我只是結合APK的編譯過程,選擇性地介紹一些需要的知識而已。避免介紹過多的編譯知識,反而導致大家無法理解的情況發生。
  • 一篇文章帶你入門移動安全
    這篇文章集合了一些入門移動安全的基礎滲透知識,希望可以能給想入門移動安全小夥伴們一些收穫
  • 一文入門Linux下gdb調試(二)
    ​​​​調試方法與gdb調試正常程序一樣,詳情參照上一篇一文入門Linux下gdb調試(一)。
  • 乾貨總結:APP自動化入門知識點及命令總結
    >1 移動端測試是什麼?移動端測試是指對移動應用進行的測試,即實體的特性滿足需求的程度。app安全測試通過安全測試技術,保證app儘可能的不存在安全漏洞.3 市場招聘狀況網際網路移動場景下業務的爆發,導致移動端開發和測試人員需求量增大,市場很缺移動端的人才。
  • Android Hook神器:XPosed入門與登陸劫持演示
    CSDN移動將持續為您優選移動開發的精華內容,共同探討移動開發的技術熱點話題,涵蓋移動應用、開發工具、移動遊戲及引擎、智能硬體、物聯網等方方面面。如果您想投稿、參與內容翻譯工作,或尋求近匠報導,請發送郵件至tangxy#csdn.net(請把#改成@)。
  • Android實戰004:Hello World入門實例體驗
    創建 Android 應用前面我們已經通過【Android實戰003:配置Android Stduio開發環境】搭建好了Android開發環境,雙擊運行android-studio\bin目錄中的studio64.exe
  • 優億移動開放日(深圳站):Android走向何方
    在eoe首屆android移動峰會上我們承諾將開放eoe開發者服務平臺SDK。在本屆大會上,通過我們一年的努力,我們已經了搭建開發者和使用者的橋梁,開啟移動網際網路新時代活動亮點:1)優億開發者社區聯合多方合作夥伴打造最專業的開發者沙龍。優億開發者社區啟蒙了中國最早一批android開發者,目前在社區中聚集了35萬優質開發者資源。
  • IDA,軟體逆向分析神器
    交互式反彙編器專業版(Interactive Disassembler Professional),人們常稱其為IDA Pro,或簡稱為IDA,是總部位於比利時列日市(Liège)的Hex-Rayd公司的一款產品。開發IDA的是一位編程天才,名叫Ilfak Guilfanov。
  • 網絡安全——從新手入門到大師的學習攻略
    最近經常有網友問我網絡安全方面怎麼樣從入門到大師,或者成為黑客、紅客等,其實我想說的是,只要你有毅力,能堅持學習各種必須的網絡安全技術和理論知識,隨著時間的積累,最終一定會成為你心中最想成為的網絡安全專家,本文就著重講解下網絡安全從入門到大師的學習攻略。一、什麼是網絡安全?
  • 小生淺談Java層逆向,「Android逆向技術」
    我們都知道安卓應用是可以用多種語言來進行開發的,而且根據不同的語言我們也有不同的逆向方式,今天小生就給大家介紹介紹在眾多語言中相對簡單一點的java,我們稱之為java層逆向Java層逆向的含義由於APP是程式設計師通過java代碼編寫而來的,所以我們正常去逆向分析,目的就是還原程式設計師當時開發的代碼,這樣我們就能清楚的了解APP運行時候的代碼邏輯是怎麼樣的。
  • Android NDK入門
    入門的最好辦法就是學習Android自帶的例子, 這裡就通過學習Android的NDK自帶的demo程序:hello-jni來達到這個目的。一、 開發環境的搭建android的NDK開發需要在linux下進行: 因為需要把C/C++編寫的代碼生成能在arm上運行的.so文件,這就需要用到交叉編譯環境,而交叉編譯需要在linux系統下才能完成。