±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚÍøÂç,±¾ÎÄÖ÷Òª½éÉÜÁËɳÏä¼¼ÊõÖ÷ÒªÓÃÓÚÆóÒµÓ¦ÓùÜÀíµÄ°²È«ÈÝÆ÷(°²È«×ÀÃæ)£¬MAM
ÖÐ×î¹Ø¼üµÄ¼¼Êõ¾ÍÊÇ APP Wrapping ºÍ Secure Container
²¿·Ö¡£ |
|
ǰÑÔ
ÒÆ¶¯»¥ÁªÍøµÄ·ÉËÙ·¢Õ¹, ¸Ä±äÁËÆóÒµ´«Í³µÄÒµÎñģʽ, Ìá¸ßÁ˹¤×÷ЧÂÊ. µ«Í¬Ê±Ò²¸øÆóÒµµÄÊý¾Ý°²È«´øÀ´Á˾޴óµÄÌôÕ½,
ÎÒÃÇÃæ¶Ô¸÷ÖÖ¹¥»÷µÄ¿ÉÄÜÐÔ»á´ó ´óÔö¼Ó, ÃæÁÙDZÔڵķçÏÕ:
1.ÒÆ¶¯É豸ÖеIJ»°²È«Ó¦ÓóÌÐò»áΣ¼°µ½ÆóÒµÍøÂçµÄ°²È«£»
2.ÒÆ¶¯É豸¿ÉÄÜÔÚ²»°²È«µÄÍøÂç(È繫¹² WiFi ÈÈ µã)ÖÐʹÓÃ,
ÈÝÒ×Ôì³É¶ñÒâÈí¼þ¸ÐȾºÍÊý¾Ýй©£»
3.Ô½Óü»ò»ñÈ¡ Root ȨÏÞÒÆ¶¯É豸»á´ø¸ü¶à·çÏÕ£»
4.ÒÆ¶¯É豸±»µÁ, ÔÚδ¾ÊÚȨµÄÇé¿öÏ·ÃÎʹ«Ë¾µÄÍøÂç»òÕßй©Ãô¸ÐÊý¾Ý¡£
ÆóÒµÒÆ¶¯Ó¦Óð²È«Æ½Ì¨ÓÉËIJ¿·Ö¹¦ÄÜ×é³É, °²×°ÔÚÊÖ»úÉ쵀 °²È«ÈÝÆ÷¡¢°²È«¼Ó¹Ì SDK, Web ¹ÜÀíÃÅ»§
ºÍ ͨÐÅ´úÀí, ¸÷²¿·ÖµÄ¹¦Äܼ°ÆäÏ໥¼äµÄ¹ØÏµÈçÏÂËùʾ:

Android °²È«¼Ü¹¹
Android ϵͳ²ÉÓ÷ֲãµÄÌåϵ½á¹¹£¬·Ö±ðΪ: Applications(ºËÐÄÓ¦ÓóÌÐò)¡¢Application
Framework(¿ª·¢¿ò¼Ü°ü)¡¢Libraries(ϵͳÔËÐпâ»òÕßÊÇ c/c++ ºËÐÄ¿â)¡¢Hardware
Abstraction Layer(Ó²¼þ³éÏó²ã)¡¢Linux Kernel(Linux ÄÚºË)¡£

Android ϵͳ²ÉÓ÷ֲãµÄϵͳ¼Ü¹¹½øÐÐÉè¼Æ£¬Ã¿²ã¶¼ÓÐÆäÑϸñµÄ°²È«¹æ·¶ºÍÇ¿½¡µÄ°²È«¼Ü¹¹¡£Android
µÄÖ÷Òª°²È«»úÖÆÔÚÄں˲ãºÍϵͳ¿ò¼Ü²ã¡£ÔÚϵͳ¿ò¼Ü²ã£¬Android Ôò²ÉÓÃÁËȨÏÞ»úÖÆ¡¢Ç©Ãû»úÖÆºÍɳÏä»úÖÆ£¬À´±£»¤ÏµÍ³µÄ°²È«£¬¸ôÀ벻ͬ½ø³ÌÖ®¼äµÄ×ÊÔ´·ÃÎÊ£¬ÊÚȨ·ÃÎÊϵͳ×ÊÔ´ºÍ·þÎñ£¬½ûÖ¹·ÇÊÚȨ·ÃÎʵķ¢Éú¡£
ȨÏÞ»úÖÆÊÇ Android ϵͳ¿ò¼Ü²ãÌṩµÄ£¬ÊǶÔÓ¦Ó÷ÃÎʹ«¹²×ÊÔ´ºÍ·þÎñ½øÐÐÇ¿ÖÆ·ÃÎʵݲȫ²ßÂÔ¡£Ó¦ÓÃÈç¹ûҪʹÓù«¹²×ÊÔ´ºÍ·þÎñ£¬±ØÐëÒªÔÚÅäÖÃÎļþÖÐÉùÃ÷ÐèҪʹÓöÔÓ¦×ÊÔ´µÄȨÏÞ£¬·ñÔò½«ÎÞ·¨µÃµ½ÊÚȨ£¬ÖÂʹ²»ÄÜʹÓÃÆä×ÊÔ´£¬µ«ÊÇȨÏÞ»úÖÆ²ÉÓõÄÈ«²¿¿Ï¶¨ºÍÈ«²¿·ñ¶¨µÄ·½Ê½£¬°Ñ×îÖÕµÄÈ·¶¨È¨½»¸øÁËÓû§£¬Óû§ÔÚ²»¾ß±¸Ïà¹ØµÄ°²È«ÖªÊ¶µÄÇé¿öÏÂÊǺÜÄÑ×ö³öºÏÊʵÄÅжϵġ£
Ç©Ãû»úÖÆÊÇÓ¦ÓÃÖаüº¬Ò»¸ö²ÉÓ÷ǶԳƼÓÃÜ·½Ê½´æ´¢µÄÊý×ÖÖ¤Ê飬ÓÉÓÚ˽ԿÔÚ¿ª·¢ÈËÔ±ÊÖÖУ¬ËùÒÔÊý×ÖÖ¤ÊéÄܹ»±£Ö¤¿ª·¢ÈËÔ±¶ÔÆäÓ¦ÓõĺϷ¨ÓµÓÐȨ¡£ËäÈ»
Android ϵͳÌṩÁËÇ©Ãû»úÖÆÀ´±£»¤¿ª·¢ÈËÔ±µÄºÏ·¨ÓµÓÐȨ£¬µ«ÊDz¢Ã»ÓÐÌṩÑéÖ¤Ó¦ÓÃÊÇ·ñ±»¶ñÒâµÄ¶þ´ÎÖØ´ò°ü£¬ÕâʹµÃÓ¦Óñ»×¢ÈëһЩ¶ñÒâµÄ´úÂ룬À´»ñÈ¡·Ç·¨µÄÊÕÒæ»ò´ï³É¶ñÒâµÄÄ¿µÄ¡£
ɳÏäËäÈ»ÌṩÁ˽ø³Ì¸ôÀëµÄ»úÖÆ£¬±£Ö¤ÔËÐÐʱӦÓõĽø³Ì¿Õ¼ä²»»á±»¶ñÒâµÄÐ޸쬵«ÊÇɳÏ䲢ûÓÐÔÚÔËÐÐʱÑéÖ¤ÊÇ·ñÔËÐл·¾³ÊÇ·ñ°²È«£¬ÊÇ·ñϵͳµÄ¹Ø¼üº¯ÊýµÄµØÖ··¢ÉúÁ˸ı䣬һµ©ÏµÍ³µÄÔÚ½øÈëɳÏäǰ¾ÍÒѾ±»¶ñÒâÐ޸ģ¬É³ÏäÖеÄÓ¦ÓÃÒ²½«Êܵ½¶ñÒâµÄÍþв¡£
Ŀǰ»ùÓÚÈÝÆ÷µÄ Android ¼Ó¹Ì·½°¸ºÍɳÏä¼¼ÊõÃâ°²×°Ó¦ÓõĹÜÀí£¬±¾ÖÊÉ϶¼ÊÇ»ùÓÚ Android
ϵͳ²å¼þ»¯µÄ¼¼Êõ£¬APK ɳÏäÐèÒª½â¾öÒÔϼ¸¸öÎÊÌ⣺

VirtualApp ɳÏäÔÀí
VirtualApp ÊÇÒ»¸ö¿ªÔ´µÄ Android App ÐéÄ⻯ÒýÇæ£¬ÔÊÐíÔÚÆäÖд´½¨ÐéÄâ¿Õ¼ä£¬²¢ÔÚÕâ¸öÐéÄâ¿Õ¼äÖÐÔËÐÐÆäËûÓ¦Óá£Android
Ó¦ÓøôÀëÊÇ»ùÓÚ Linux ϵͳµÄ¶àÓû§»úÖÆÊµÏֵ쬼´Ã¿¸öÓ¦ÓÃÔÚ°²×°Ê±±»·ÖÅäÁ˲»Í¬µÄ Linux Óû§
uid/gid¡£¶øÔÚ VirtualApp ÖУ¬client Ó¦Óã¨Í¨¹ý VirtualApp °²×°µÄÓ¦Óã©Óë
host Ó¦Ó㨼´ VirtualApp ±¾Éí£©ÊǾßÓÐÏàͬÓû§ uid µÄ¡£
Òò´Ë£¬VirtualApp ÔÚÔËÐÐʱ£¬°üº¬ÒÔÏÂÈý²¿·Ö£º

Main Process£¬½ø³ÌÃû io.virtualapp£¬Ö÷Òª¸ºÔð VirtualApp Óû§½çÃæ¼°Ó¦ÓùÜÀí
VA Server Process£¬½ø³ÌÃû io.virtualapp:x£¬Ö÷Òª¸ºÔðϵͳ·þÎñµÄ´úÀí£¬ÊÇͨ¹ý
Content Provider Æô¶¯µÄ
Client App Process£¬½ø³ÌÃû io.virtualapp:p[0-¡]£¬×÷Ϊ½«À´ÔËÐÐ
client Ó¦ÓõĽø³Ì£¬µ± client Ó¦ÓÃÆô¶¯ºó£¬Æä½ø³ÌÃû»á¸üÐÂΪ client Ó¦ÓõİüÃû
ÏÂÃæÊÇÔÚ VirtualApp ÖÐÔËÐÐÓ¦Óúóͨ¹ý ps ÃüÁîµÃµ½µÄ½á¹û£º

¸÷ÁвÎÊýÒâÒ壺
USER: ½ø³Ìµ±Ç°Óû§£»
PID: Process ID£¬½ø³Ì ID£»
PPID: Process Parent ID£¬½ø³ÌµÄ¸¸½ø³Ì ID£»
VSIZE: Virtual Size£¬½ø³ÌµÄÐéÄâÄÚ´æ´óС£»
RSS: Resident Set Size£¬Êµ¼ÊפÁô"ÔÚÄÚ´æÖÐ"µÄÄÚ´æ´óС£»
WCHAN: ÐÝÃß½ø³ÌÔÚÄÚºËÖеĵØÖ·£»
PC: Program Counter£»
NAME: ½ø³ÌÃû.
¿ÉÒÔ¿´µ½£¬ÒÔÉϽø³Ì£¬¾ùÊÇÒÔ VirtualApp µÄÓû§ uid ÔËÐеġ£Òò´Ë£¬Android Ó¦ÓøôÀë´Ëʱ²»ÔÙÊÊÓã¬ÎÒÃÇ¿ÉÒÔ¶Ô
client Ó¦ÓýøÐÐ hook ¶øÎÞÐè root ȨÏÞ¡£
VirtualApp Ô´Âë½á¹¹

1. java/android: ¸²¸ÇÁËϵͳµÄÒþ²ØÀà
content/pm/PackageParser: Ö÷Òª¶ÔÓ¦ android.content.pm.PackageParser£¬Ö÷Òª×÷ÓÃÊǽâÎö
APK;
location/LocationRequest: ¶ÔÓ¦ÓÚ android.location.LocationRequest£¬¸ÃÀàÊÇÒ»¸ö¿É³Ö¾Ã»¯µÄ
Parcelable£¬Ö÷Òª×÷ÓÃÊÇÉèÖà LocationManagerService µÄ²ÎÊý¡£
2. com.lody.virtual: ¿ò¼ÜµÄÖ÷Ìå´úÂë
client: ÔËÐÐÔÚ¿Í»§¶ËµÄ´úÂ룬ָ¼ÓÔØµ½ VA ÖеÄ×Ó³ÌÐòÔÚ±» VA ´úÀí(hook)Ö®ºó,ËùÔËÐеĴúÂë;
server: server ¶Ë´úÂ룬VA αÔìÁËÒ»Ì× framework ²ãϵͳ service
µÄ´úÂ룬ËûÔÚÒ»¸ö¶ÀÁ¢µÄ·þÎñÖмǼ¹ÜÀí×é¼þµÄ¸÷ÖÖ Recorder£¬ÆäÂß¼ÆäʵÓëϵͳÔÉúµÄÏà½ü£¬Í¨¹ý
Binder Óë client ¶ËµÄ ipc °üÖÐµÄ VXXXXManager ͨѶ¡£ÖîÈç AMS(VAMS),PMS(VPMS);
remote: һЩ¿ÉÐòÁл¯ Model£¬¼Ì³ÐÓÚ Parcelable;
os: ´¦Àíϵͳ»·¾³£¬Èç¶àÓû§;
helper: ¿ò¼Ü¹¤¾ßÀà¡£
3. mirror£ºÏµÍ³ framework µÄ¾µÏñ
ʵÏÖÁËÓë framework ²ãÏà¶ÔÓ¦µÄ½á¹¹£¬·â×°ÁË·´Éä»ñȡϵͳÒþ²Ø×ֶκͷ½·¨µÄ£¬±ãÓÚÖ±½Óµ÷ÓûñÈ¡»òÕ߸³ÖµÒÔ¼°µ÷Ó÷½·¨¡£
MAM ·¢Õ¹µÄÏÖ×´
ÒÆ¶¯Ó¦ÓóÌÐò¹ÜÀí£¨MAM£©±³ºóµÄÏë·¨ÊÇÎÒÃǽ«°²È«²ßÂÔÓ¦ÓÃÓÚµ¥¸öÓ¦ÓóÌÐò¶ø²»ÊÇÕû¸öÉ豸¡£ÕâÒâζן÷ÖÖÓ¦ÓóÌÐò¿ÉÒÔÓ¦ÓöÀÌØµÄ²ßÂÔ£¬²¢ÇÒÎÞÂÛÉ豸µÄ¹ÜÀí״̬ÈçºÎ£¬ËüÃǶ¼½«Êܵ½±£»¤ºÍ¹ÜÀí¡£»ù±¾µÄÓ¦ÓóÌÐò¹ÜÀí¹¦ÄÜͨ³£°üÀ¨Éí·ÝÑéÖ¤£¬VPN£¬¼ÓÃܺÍÔ¶³Ì²Á³ý¡£Ó¦ÓóÌÐò»¹Á¬½Óµ½¿ÉÒÔ¿ØÖÆÉí·ÝÑéÖ¤£¬·¢³öÔ¶³Ì²Á³ýÃüÁî»òʹÓÃ
IT ´´½¨µÄ²ßÂÔ¿ØÖÆÓ¦ÓóÌÐòµÄ·þÎñÆ÷¡£
ǰÑÔ²¿·ÖÎÒÃÇÎÒÃÇÖªµÀɳÏä¼¼ÊõÖ÷ÒªÓÃÓÚÆóÒµÓ¦ÓùÜÀíµÄ°²È«ÈÝÆ÷(°²È«×ÀÃæ)£¬MAM ÖÐ×î¹Ø¼üµÄ¼¼Êõ¾ÍÊÇ
APP Wrapping ºÍ Secure Container ²¿·Ö£¬Ëü°ÑÒ»¸öÒÆ¶¯É豸»®·Ö³öÁ½¸ö¹¤×÷Çø£¬´Ó¶øÊµÏÖ¸öÈ˿ռäÓëÆóÒµ¹¤×÷¿Õ¼äµÄ¸ôÀë¡£ÕâЩ¹Ø¼ü¼¼ÊõͨË×Àí½â¾ÍÊÇ
iOS¡¢Android£¬WinPhone ÉϵÄÓ¦ÓÃÐéÄ⻯£¬ËüûÓÐÒ»¸ö±ê×¼½Ó¿Ú¿É×ñÑ£¬ÍêÈ«¿¿¸÷ MAM
³§ÉÌ×Ô¼ºµÄ¼¼Êõ¹¦Á¦À´ÊµÏÖ¡£
APP Wrapping (·â×°»òÕß´ò°ü) ¡ª¡ª ͸¹ý¶ÔÓ¦Ó÷â×°´ò°ü»òͨ¹ý¼¯³É SDK ·½·¨£¬¿ØÖÆ·þÎñºÍ°²È«¹ÜÀí£¬¶ÔÓÚÓ¦Óõķַ¢£¬·ÃÎʺͲßÂÔ¹ÜÀíÖÁ¹ØÖØÒª¡£
Secure container (ÈÝÆ÷»òɳºÐ) ¡ª¡ª Ó¦Óü¶±ðµÄÊú¾®£¬¼ÓÃÜ´æ´¢ºÍ´«Êä״̬µÄÊý¾Ý£¬¶ÔÏûÏ¢ºÍÓ¦ÓÃÊý¾ÝÌṩ¸ôÀë±£»¤£¬É豸ÆäËû²¿·ÖÎÞ·¨·ÃÎÊ¡£ |