㈠ 怎麼對android app實現逆向分析
首先,逆向分析是一門技術,也是一門藝術。
其次,安卓逆向同樣可細分為應用層APK逆向、安卓設備框架、內核驅動等逆向、基於安卓的硬體產品逆向等。此處假定樓主說的是第一種逆向。
應用層的逆向分析根據需求的不同,又可細分成APK流程逆向與功能逆向。
流程逆向通常是指簡單的對APK運行流程進行分析,此類分析通常可以使用將APK置於沙盒環境中運行捕捉並查看運行結果。這種逆向需求通常不是很多,典型的工種有殺軟廠商的病毒分析工程師。
功能逆向相比流程逆向則困難得多。但需求比較普遍。實際逆向分析過程中對功能實現的理解,在很大程度上取決於逆向人員相關的軟體開發知識。比如,分析Android程序的java代碼就需要掌握基本的Android軟體開發的知識。分析so庫的代碼就需要了解C/C++相關的so庫開發的知識。除了基本開發相關的能力外,逆向分析人員還需要具備以下知識:
ARM/X86/MIPS匯編語言-分析so庫時可能需要閱讀大量的反匯編代碼。
常見逆向分析工具的使用-JDGUI/IDA PRO/APKTOOL/JEB/DEX2JAR
常用的安卓程序調試與反調試手段-調試器檢測與反檢測/脫殼/反混淆
常用的加密與解密演算法-好的逆向分析人員需要有快速識別常見加密解密演算法的能力
最後,就是多動手,多動手練習是掌握逆向分析技術最好的方法。
㈡ Android軟體安全與逆向分析的Android術語
逆向分析是一種逆向工程技術,是一種產品設計技術再現過程,即對一項目標產品進行逆向分析及研究,從而演繹並得出該產品的處理流程、組織結構、功能特性及技術規格等設計要素,以製作出功能相近,但又不完全一樣的產品。逆向工程源於商業及軍事領域中的硬體分析。其主要目的是在不能輕易獲得必要的生產信息的情況下,直接從成品分析,推導出產品的設計原理 。Android 軟體安全與逆向分析是針對Android 軟體的逆向分析,對原有APK文件進行反向研究,包括對語法,代碼等進行分析,破解原有APK的源代碼,資源文件比如圖片,音頻等等行為。
1.APK一旦被破解,反編譯之後的源碼就被破解者獲取,開發者的勞動成果就被竊取,危害了開發者的利益。
2.反編譯的APK如果被進行二次打包,那麼APP就成為盜版產品,盜版產品侵害開發者的版權
3.反編譯的產品有可能被破解者進行二次打包,注入惡意代碼,竊取用戶隱私,惡意扣除用戶手機流量和資費,獲取用戶數據等等,這些行為嚴重傷害用戶的利益。
4.盜版產品不受保護,用戶得不到合理的售後支持和服務。
在這種情況下就需要加強對安卓APK DEX文件進行保護的技術,防止反編譯。dex文件其實就是Android系統中可以在Dalvik虛擬機上直接運行的文件格式。Java源碼通過ADT編譯成Smali語言這是一個優化的過程,相對於.class文件它體積小、運行效率高、被編譯後可讀性低;Smali再到class. DEX本身就是一個加殼保護的過程。 DEX文件如果未做好保護,黑客通過反編譯可讓源碼完全暴露,可利用閱讀源碼來找到App的設計流程,通過對程序流程的了解將很容易對程序進行盜版、惡意篡改、惡意代碼注入等危險行為 。
1.隔離Jave程序。這種是最根本的保護,將一些關鍵的Class文件進行加密,例如對注冊碼、序列號管理相關的類進行加密,開發人員可以將關鍵的JavaClass放在伺服器端,用戶通過伺服器介面獲取服務而不是直接通過java文件。破解者就無法獲取class文件了。目前有很多通過介面提供服務的標准和協議,比如HTTP,webservice,RPC等等。但是呢,這種方式並不是適合所有的APP,比如單機運行的程序的無法隔離Java程序。
2.對class文件進行加密保護。開發者可以將一些關鍵的class文件進行加密,比如對注冊碼,序列號管理相關的類進行加密來防止反編譯。在使用這些被加密的類之前,程序需要首先對這些類進行解密,然後才能將這些類載入在JVM中。要解密這些類,必須要通過一些硬體或是軟體才能完成。
3.轉換成本地代碼
這是一種防止反編譯的比較有效的方法。因為本地代碼往往難以被反編譯。開發人員可以選擇將整個應用程序轉換成本地代碼,或者可以選擇關鍵模塊轉換。如果僅僅轉換關鍵部分模塊,Java程序在使用這些模塊時,需要使用JNI技術進行調用。當然,在使用這種技術保護Java程序的同時,也犧牲了Java的跨平台特性。對於不同的平台,我們需要維護不同版本的本地代碼,這將加重軟體支持和維護的工作。不過對於一些關鍵的模塊,有時這種方案往往是必要的。為了保證這些本地代碼不被修改和替代,通常需要對這些代碼進行數字簽名。在使用這些本地代碼之前,往往需要對這些本地代碼進行認證,確保這些代碼沒有被黑客更改。如果簽名檢查通過,則調用相關JNI方法.
4.代碼混淆
代碼混淆是對Class文件進行重新組織和處理,使得處理後的代碼與處理前代碼完成相同的功能(語義)。但是混淆後的代碼很難被反編譯,即反編譯後得出的代碼是非常難懂、晦澀的,因此反編譯人員很難得出程序的真正語義。從理論上來說,黑客如果有足夠的時間,被混淆的代碼仍然可能被破解,甚至目前有些人正在研製反混淆的工具。但是從實際情況來看,由於混淆技術的多元化發展,混淆理論的成熟,經過混淆的Java代碼還是能夠很好地防止反編譯。下面我們會詳細介紹混淆技術,因為混淆是一種保護Java程序的重要技術 。
5.第三方工具加密
上面四種方式可能要耗費開發者很大一部分精力和時間,如果想要方便的話,可以尋求第三方的加密工具。目前市場上有一些工具是可以幫助APK加密的,比較知名的是愛加密的加密平台。相對於上面四種方式,這種第三方的加密工具要更全面和專業,可以有效的保護dex文件,so庫文件,xml主配文件以及其他資源文件不被反編譯和惡意篡改。
愛加密專家提醒,這些方式並不是獨立運用的,有時候可以混合使用,根據自己的情況來定,比如說高級混淆之後還是可以使用第三方的愛加密工具進行高級保護,多一重安全。
㈢ 《有趣的二進制軟體安全與逆向分析》epub下載在線閱讀全文,求百度網盤雲資源
《有趣的二進制》([ 日] 愛甲健二)電子書網盤下載免費在線閱讀
鏈接: https://pan..com/s/1leBcD-f8EgBVOxGAsl_oxw
書名:有趣的二進制
作者:[ 日] 愛甲健二
譯者:周自恆
豆瓣評分:7.9
出版社:人民郵電出版社
出版年份:2015-10
頁數:272
內容簡介:
《有趣的二進制:軟體安全與逆向分析》通過逆向工程,揭開人們熟知的軟體背後的機器語言的秘密,並教給讀者讀懂這些二進制代碼的方法。理解了這些方法,技術人員就能有效地Debug,防止軟體受到惡意攻擊和反編譯。本書涵蓋的技術包括:匯編與反匯編、調試與反調試、緩沖區溢出攻擊與底層安全、鉤子與注入、Metasploit 等安全工具。
《有趣的二進制:軟體安全與逆向分析》適合對計算機原理、底層或計算機安全感興趣的讀者閱讀。
作者簡介:
愛甲健二
曾就職於NetAgent株式會社,負責逆向工程、惡意軟體分析、滲透測試等工作。2008年7月任董事。此後,在株式會社Fourteenforty技術研究所(現更名為株式會社FFRI)從事計算機安全技術研究和軟體開發工作。
曾參加Black Hat Japan 2008(日本)、HITCON 2011(中國台灣)等會議,並發表重大研究成果。著有《匯編語言教程》(アセンブリ言語の教科書)、《TCP/IP教程》(TCP/IPの教科書)等。
㈣ 這本書好不好 C++反匯編與逆向分析技術揭秘
我看過這本書,不太好,不是寫的不好,而是說你沒有逆向基礎的話,不太看得懂,你有基礎的話,這本書也沒必要看,一句話,可讀性不好。----個人看法
建議你看《加密與解密》和《逆向:逆向工程揭秘》這兩本。