通過strace和monkey測試安卓應用的系統調用

配置adb

1.    下載android studio

2.    增加系統變量https://blog.csdn.net/lxzmmd/article/details/50455671

 

配置x86安卓虛擬機

1.    http://www.noobyard.com/article/p-mbalbjvk-bw.html

2. 通過ip地址連接虛擬機(爲了保證虛擬機能上網,並且可以被實體機連接)https://blog.csdn.net/listener_ri/article/details/45922539

 

Monkey的使用

http://www.noobyard.com/article/p-uiegazko-cv.html

 

strace的使用

https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html

 

strace在android中的使用:

linux上,strace一般有兩種用法:

1. strace <elf_file>    啓動程序的同時,用strace跟蹤;

2. strace -p pid    對於已經啓動的程序,通過-p參數可以attach上去跟蹤之後的執行流程;

android上使用strace有一點特殊,android上所有android application都是通過zygote fork出來的,所有android application進程的父親都是zygote。strace不能用來跟蹤androidapplication,而是跟蹤zygote和它的兒子。做法是先得到zygote的pid,再執行strace -f -p <pid_of_zygote>,然後啓動要跟蹤調試的程序;其中-f 代表跟蹤子進程;而且是之後生成的子進程,之前已經運行起來的android application不會被跟蹤到;


測試過程:

1. 打開虛擬機

2. 打開一個終端A連接虛擬機

adb connect 127.0.0.1//連接

adb devices//查看連接的安卓虛擬機

3.   終端A進入安卓apk的文件夾

4.   打開另一個終端B進入虛擬機的命令行界面

adb shell

su 獲得超級用戶權限

5. 通過終端A安裝一個應用

例如:adb install u-an.osintsev.usaeurocoins.apk


6.  找到這個應用 並打開


7.   通過終端B查看這個應用的包名和父進程是64位還是32位的zygote 以及zygote pid。

輸入ps 

它的包名是an.osintsev.usaeurocoins 父親進程是1033

然後一定要關閉這個程序。


8.   終端B輸入strace –c –f –e trace=all –p 1033。跟蹤父進程。


9.    終端A啓動monkey。adb shell monkey –p an.osintsev.usaeurocoins2000 //2000是模擬次數等待模擬結束,關閉程序。

10.    在終端B上按下control+c,得出結果