應用崩潰日志的獲取方法及裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術,尤其是一種應用崩潰日志的獲取方法及裝置。
【背景技術】
[0002]安卓平臺發(fā)展迅速,已經(jīng)逐漸成為了移動終端的最普及的操作系統(tǒng),與其他終端操作系統(tǒng)相比,開放式的安卓系統(tǒng)為應用開發(fā)者提供了更多的功能接口,這些功能接口在提高了系統(tǒng)的可擴展性,但同時也為惡意軟件提供了便利。針對安卓系統(tǒng)的木馬等惡意軟件可以通過偽裝的方式保存在安卓安裝包中,騙取用戶安裝并授予一定的權限,之后通過濫用權限在后臺執(zhí)行一些特定行為,包括竊取用戶隱私、騙取資費等行為;不僅如此,對于一些正常的安卓系統(tǒng)應用,也存在通過非法拷貝、逆向工程、反編譯、調試、破解、二次打包、內存截取等手段來威脅安卓系統(tǒng)的安全,不僅危害了使用者,也給正常應用開發(fā)者造成嚴重的損害。
[0003]目前市面上針對安卓安裝包的保護主要是基于對dex文件的保護,一般是通過對dex文件進行加密和混淆等處理手段來實現(xiàn),在安卓安裝包運行時再動態(tài)解密,還原內容。但是由于dex文件的反編譯難度較低,很容易被反編譯工具輕易逆向,導致該類方案始終無法完全解決安卓安裝包面臨的安全問題,開發(fā)者們也一直在尋求更有效的解決方案。
[0004]為解決上述問題,現(xiàn)有技術提供了各種各樣的對安卓安裝包中文件進行保護的方法。以360提供的加固保為例,其在實現(xiàn)安卓安裝包中文件的保護時,包括:將對安卓安裝包實現(xiàn)加密保護的代碼(對安卓安裝包中的dex文件進行加密保護的代碼,或者,安卓安裝包中的dex文件核心代碼)保存到所述安卓安裝包的Iib目錄下的SO文件中;將待保護的SO文件作為代碼數(shù)據(jù)寫入殼程序文件中;對所述殼程序文件中的所述SO文件進行加固保護處理;將進行加固保護處理后的SO文件和所述安卓安裝包的其他部分(包括dex文件)重新打包生成加固安裝包。
[0005]上述安卓安裝包中文件保護方法能夠有效阻止惡意程序對SO文件的反匯編分析,提高安卓安裝包的安全等級,以及保護開發(fā)者和使用者的利益。但是,任何一個安卓安裝包都無法保證不存在缺陷(即Bug),Bug的存在導致安卓安裝包在運行過程中出現(xiàn)崩潰,應用程序的穩(wěn)定性差,給用戶應用程序的使用過程造成諸多不便。然而上述文件保護方法無法確定發(fā)生崩潰的位置,更無法對發(fā)生崩潰的文件中Bug進行清除,應用程序的崩潰難于消除。
[0006]因此,如何方便快捷的獲取應用程序在運行過程中的崩潰日志,及時了解產生崩潰位置,減少崩潰成為當前亟待解決的問題之一。
【發(fā)明內容】
[0007]本申請實施例提供了一種應用崩潰日志的獲取方法及裝置,以解決現(xiàn)有無法確定發(fā)生崩潰的位置,更無法對發(fā)生崩潰的文件中Bug進行清除,應用程序的崩潰難于消除的技術問題。
[0008]下面通過附圖和實施例,對本發(fā)明的技術方案做進一步的詳細描述。
[0009]根據(jù)本申請實施例的一個方面,提供了一種應用崩潰日志的獲取方法,該應用崩潰日志的獲取方法包括:
[0010]將守護文件作為代碼數(shù)據(jù)寫入應用的殼程序文件中,所述殼程序文件還包括應用程序文件;
[0011]運行所述殼程序文件;
[0012]判斷所述應用是否發(fā)生崩潰;
[0013]若是,則通過所述守護文件獲取所述應用的崩潰信息。
[0014]在基于上述方法的另一個實施例中,所述應用程序文件包括dex文件和SO文件;所述SO文件為所述應用程序文件中dex文件進行加密保護的代碼或者應用程序文件中的dex文件核心代碼。
[0015]在基于上述方法的另一個實施例中,判斷所述應用是否發(fā)生崩潰包括:
[0016]啟動所述殼程序文件,并運行所述殼程序文件中的守護文件;
[0017]守護進程在主進程中注冊各類崩潰信息對應的信號,所述守護進程與所述守護程序文件對應,所述主進程與所述殼程序文件對應;
[0018]運行所述應用程序文件;
[0019]在所述主進程獲取所述信號時,確定所述應用發(fā)生崩潰。
[0020]在基于上述方法的另一個實施例中,通過所述守護文件獲取所述應用的崩潰信息包括:
[0021 ]所述守護進程與所述主進程進行信息交互;
[0022]所述守護進程根據(jù)所述主進程獲取的信號確定崩潰進程,獲取所述應用的崩潰信息。
[0023]在基于上述方法的另一個實施例中,所述守護進程通過handler與所述主進程進行信息交互。
[0024]在基于上述方法的另一個實施例中,所述SO文件包括debug代碼;所述守護進程根據(jù)所述主進程獲取的信號確定崩潰進程,獲取所述應用的崩潰信息包括:
[0025]所述守護進程與所述崩潰進程進行交互,利用所述SO文件中debug代碼通過系統(tǒng)調用棧逐步回溯,直至回溯失敗,確定崩潰函數(shù)的位置。
[0026]在基于上述方法的另一個實施例中,所述守護進程通過ptrace系統(tǒng)接口與所述崩潰進程進行交互。
[0027]在基于上述方法的另一個實施例中,在通過所述守護文件獲取所述應用的崩潰信息之后,所述應用崩潰日志的獲取方法還包括:將所獲取的崩潰信息發(fā)送至所述殼程序文件的開發(fā)方或者所述應用程序文件的開發(fā)方。
[0028]在基于上述方法的另一個實施例中,每隔預設時間,通過郵件將所獲取的崩潰信息發(fā)送至所述殼程序文件的開發(fā)方或者所述應用程序文件的開發(fā)方。
[0029]根據(jù)本發(fā)明實施例的另一個方面,提供一種應用崩潰日志的獲取裝置,包括:
[0030]寫入單元,用于將守護文件作為代碼數(shù)據(jù)寫入應用的殼程序文件中,所述殼程序文件還包括應用程序文件;
[0031 ]處理單元,用于運行所述殼程序文件,以及確定所述應用是否發(fā)生崩潰;
[0032]獲取單元,用于在所述應用發(fā)生崩潰時,通過所述守護文件獲取所述應用的崩潰
?目息O
[0033]在本申請實施例中,應用的殼程序文件中不僅包括應用程序文件,還將守護文件作為代碼數(shù)據(jù)寫入應用的殼程序文件中,從而在運行所述殼程序文件時,若應用發(fā)生崩潰,能夠通過守護文件獲取該應用的崩潰信息。在保護應用程序文件的基礎上,能夠快速準確的獲取文件的崩潰信息,定位發(fā)生崩潰的位置,方便后續(xù)對發(fā)生崩潰的文件中Bug進行清除,提高應用運行的穩(wěn)定性。
【附圖說明】
[0034]構成說明書的一部分的附圖描述了本發(fā)明的實施例,并且連同描述一起用于解釋本發(fā)明的原理。
[0035]參照附圖,根據(jù)下面的詳細描述,可以更加清楚地理解本發(fā)明,其中:
[0036]圖1為本發(fā)明一實施例中的應用崩潰日志的獲取方法的流程圖;
[0037]圖2為圖1中判斷應用是否發(fā)生崩潰的流程圖;
[0038]圖3為本發(fā)明另一實施例中的應用崩潰日志的獲取方法的流程圖;
[0039]圖4為本發(fā)明一實施例中的應用崩潰日志的獲取裝置的示意圖;
[0040]圖5為本發(fā)明圖4實施例中的處理單元的示意圖;
[0041]圖6為本發(fā)明圖4實施例中的獲取單元的示意圖;
[0042]圖7為本發(fā)明另一實施例中的應用崩潰日志的獲取裝置的示意圖;
[0043]圖8為本發(fā)明圖7實施例中的信息發(fā)送單元的示意圖。
【具體實施方式】
[0044]現(xiàn)在將參照附圖來詳細描述本發(fā)明的各種示例性實施例。應注意到:除非另外具體說明,否則在這些實施例中闡述的部件和步驟的相對布置、數(shù)字表達式和數(shù)值不限制本發(fā)明的范圍。
[0045]同時,應當明白,為了便于描述,附圖中所示出的每個部分的尺寸并不是按照實際的比例關系繪制的。
[0046]以下對至少一個示例性實施例的描述實際上僅僅是說明性的