Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Android Patch ·½°¸Óë³ÖÐø½»¸¶
 
×÷ÕߣºBugly_Tony ·¢²¼ÓÚ£º 2017-10-26
  2554  次浏览      27
 

Android ²»½öϵͳ°æ±¾Öڶ࣬»úÐÍÖڶ࣬¶øÇÒ¸÷¸öÊг¡¶¼¸÷Óи÷µÄÕþ²ßºÍÉóºËËÙ¶È£¬Ã¿´Î·¢²¼Ò»¸ö°æ±¾¶ÔÓÚ¿ª·¢Í¬Ñ§À´½²¶¼ÊÇÒ»ÖÖÂþ³¤µÄ¼å°¾¡£Ïà±ÈÓÚ iOS Á½ÈýÌì¾ÍÄÜ´ïµ½ 80% µÄ¸²¸ÇËٶȶøÑÔ£¬Android Ó¦Óð汾Éý¼¶ÖÁÉÙÐèÒªÁ½ÖܲÅÄÜ´ïµ½ 80% µÄÉý¼¶ÂÊ£¬ÑÏÖØ×è°­Á˰汾µü´úËÙ¶È¡£Ò²µ¼ÖÂÊг¡ÉÏ App °æ±¾·ÖÉ¢£¬´¦Àí bug ºÍͶËßµÈÒ²Ô½À´Ô½Âé·³¡£

  • ÐÞ¸´µÄ bug ÐèÒªµÈ´ýϸö°æ±¾·¢²¼´°¿Ú²ÅÄÜ·¢²¼£¿
  • ÒѾ­ ready µÄÐèÇóÅŶÓÉÏÏߣ¬ÐèÒªµÈ´ýÆäËû Feature Team ºÏÈë´úÂ룿
  • Àϰ汾Éý¼¶ËÙ¶ÈÂý£¿Æµ·±ÉÏÏß°æ±¾ÌáÐÑÓû§Éý¼¶£¬Ó°ÏìÓû§ÌåÑ飿

Õ⼸¸öÎÊÌâÊÇÿ¸ö App ¿ª·¢Í¬Ñ§¶¼±ØÈ»ÒªÃæ¶ÔµÄ¡£ÄÇôÓÐûÓз½·¨ÄÜÔÚÓû§ÎÞ¸ÐÖªµÄÇé¿öϼÓËÙ bug ´¦ÀíºÍ°æ±¾µü´úËÙ¶È£¿

ÔÚÕâ·½Ãæ PC ¶Ë Chrome ä¯ÀÀÆ÷µÄ patch Éý¼¶·½°¸¸øÎÒÃÇÁËÒ»¸öºÜºÃµÄ½è¼ø£ºµ± Chrome Óа汾Éý¼¶µÄʱºò»á×Ô¶¯ÏÂÔØ patch Îļþ¡£ÏÂ´ÎÆô¶¯ºó£¬Chrome ¾ÍÒѾ­ÊÇа汾¡£

Ëûɽ֮ʯ£¬¿ÉÒÔ¹¥Óñ

½üÒ»Á½Äê Android ÈȲ¹¶¡¿ò¼Ü·Ç³£ÈÈÃÅ¡£´Ó×î³õ 360 ¶¯Ì¬Ï·¢ lua ½Å±¾£¬µ½ºóÀ´³öÏֵĸ÷ÖÖ·½°¸£¬ÈçÓêºó´ºËñ°ã³öÏÖ¡£ÔçÆÚµÄ²¹¶¡¿ò¼ÜÆ«ÏòÓÚÒÔ´úÂëÐÞ¸´ÎªÖ÷£¬Ö÷Òª·ÖΪÁ½´óÀࣺnative hook ·½°¸ºÍ Multidex ·½°¸¡£

native hook ·½°¸Èç°¢Àï°Í°ÍµÄ AndFix ºÍ Dexposed¡£Multidex ·½°¸Èç Qzone¡£ÇÐÈëµã¶¼ÊÇÌæ»»µô½«ÒªÖ´ÐеĴúÂë¡£»ùÓÚ Qzone ·½°¸µÄ˼·£¬³öÏÖÁË nuwa Õâ¸ö±È½ÏÍêÉÆµÄ¿â£¬¹¤¾ßÁ´±È½ÏÍêÉÆ¡£

ÀàËÆ Chrome µÄ patch Éý¼¶·½°¸×ãÒÔÂú×ã¼ÓËÙ bug ´¦ÀíºÍ°æ±¾µü´úËٶȵÄÐèÇ󣬸øÁËÎÒÃǺܴóµÄ½è¼øÒâÒå¡£ÔÚ°²×¿ÏµÍ³ÉÏ£¬¿ÉÒÔͨ¹ý hotfix µÄ˼·À´´ïµ½ÕâһĿµÄ£ºÏ·¢²¹¶¡Îļþ£¬¸üРApp °æ±¾¡£

Õ¾ÔÚ¾ÞÈ˵ļç°òÉÏ

ÔÚ½ñÄê 3 Ô·ݿªÊ¼×ö¼¼ÊõÑ¡Ð͵Äʱºò°ÑÉÏÃæµÄ¼¸ÖÖ·½°¸ÊÔÁËÒ»ÂÖ¡£ÆäÖÐ AndFix ÉõÖÁ¸úÉÏÁËÏÖÍøµÄÒ»¸ö·¢²¼°æ±¾£¬µ«ÊÇÓÉÓÚÓ°ÏìÕýÏò¿ª·¢¹ý³Ì£¨Ö»ÄÜÐ޸ķ½·¨¡¢²»ÄÜÐÞ¸Ä field¡¢²»ÄÜÐÂÔöÀàµÈÎÊÌ⣩¡¢¿â±¾ÉíÄÑÓÚά»¤£¨ÐèÒªÒÀÀµÍⲿ¿ªÔ´Á¦Á¿½øÐÐά»¤£©ÒÔ¼°·¢ÏÖµÄĪÃûÆäÃîµÄ bug£¨µ¼ÖÂÎÒÃÇ App Ï·¢ patch ºó°×ÆÁ£©£¬ËùÒÔ¼´Ê¹¸úÉÏÁË·¢²¼°æ±¾Ò²Ã»ÓÐʹÓá£nuwa ½öÖ§³Ö¸üРJava ´úÂ룬²»ÄܸüÐÂ×ÊÔ´ºÍ so Îļþ£¬Âú×ã²»ÁËÎÒÃǵÄÐèÇó¡£

ûÓкÃÓõÄÂÖ×Ó£¬ÎÒÃǾö¶¨×Ô¼ºÔìÒ»¸ö£¬ÓÚÊÇÓÐÁËÏÖÔÚµÄ patch ·½°¸¡£

App Ö»ÊÇÒ»¸ö¼ÓÔØÆ÷

¼ÈÈ»×ö°²×¿ patch ·½°¸£¬×îºÃµÄ½á¹û¾ÍÊÇÄÜÖ§³Ö¸üРApp ËùÓеĴúÂëºÍ×ÊÔ´¡£µ«ÊÇ

  • Application ÀàÊÇ App Æô¶¯Ö®³õ¾Í±»°²×¿ÏµÍ³¼ÓÔØÆðÀ´£¬ËùÒÔÖÁÉÙ Application ÀàºÍËüÆô¶¯ÒÀÀµµÄÆäËûÒµÎñÀàÊDz»Äܱ»¸üеģ¿
  • ÐÞ¸´ bug »òÕß°æ±¾µü´ú¹ý³ÌÖÐÄÑÃâ»áÓöµ½ÐèÒªÐÞ¸Ä×ÊÔ´ÎļþµÄÇé¿ö¡£×ÊÔ´ÎļþÄܸüÐÂÂð£¿
  • native ʵÏÖµÄ so ÎļþÈçºÎ¸üУ¿

Õë¶ÔÉÏÃæÈý¸öÎÊÌ⣬ ÎÒÃǵÄÉè¼ÆÊÇ°Ñ App ½ö½öµ±×öÒ»¸ö¼ÓÔØÆ÷¡£ÏµÍ³Æô¶¯ App Ö®ºó£¬¼ÓÔØÆ÷¾ö¶¨½«ÒªÔËÐеĴúÂëºÍ×ÊÔ´µÄλÖᣵ±ÓÐй¦ÄÜ»òÕß bugfix ÐèÒªÍÆË͸øÓû§£¬Ìæ»»¼ÓÔØÆ÷ÄÚÈݼ´¿É¡£

Ö§³Ö¸üÐÂÈ«²¿´úÂë

ÉÏÃæÌáµ½ Application ÓÉÓÚÆô¶¯¾Í±»¼ÓÔØ¶ø²»Äܱ»¸üеÄÎÊÌ⣬ÎÒÃÇ´úÀíÁËÕæÊµ Application ÀàµÄ´´½¨¹ý³Ì¡£Í¨¹ý´úÀí Application£¬¿ØÖÆ Application ´ÓРdex ÎļþÖмÓÔØ¡£¼ÙÉèÕæÊµµÄ Application ÀàÊÇ MyApplication¡£ÎÒÃÇÔÚ±àÒëÆÚ¼ä×Ô¶¯ÐÞ¸Ä AndroidManifest.xml Îļþ£¬°Ñ MyApplication Ìæ»»Îª MoaiApplication£¨ÊÇ App µÄÈë¿Ú Application£©¡£App Æô¶¯ºóÓÉ MoaiApplication ¼ÓÔØÍêÏàÓ¦µÄÎļþ£¨dex/×ÊÔ´Îļþ/so Îļþ£©ºó£¬ÔÙ½«¿ØÖÆÈ¨½»»Ø¸ø MyApplication¡£

´úÀíÉúÃüÖÜÆÚ

½«¿ØÖÆÈ¨½»»Ø¸ø MyApplication£¬ÎÒÃÇ×î³õÊÇ´úÀí MyApplication µÄÉúÃüÖÜÆÚ¡£¾ßÌå×ö·¨ÊÇ£¬MoaiApplication ¾ö¶¨¼ÓÔØÄÄÀïµÄÒµÎñ´úÂë¡¢×ÊÔ´ÎļþÒÔ¼° so ÎļþÖ®ºóÒÀÈ»¸ºÔð½ÓÊÕ App µÄÈ«²¿ÉúÃüÖÜÆÚ£¬È»ºó°ÑÉúÃüÖÜÆÚ´úÀí¸ø MyApplication£¬¼òµ¥Àý×ÓÈçÏ£º

»¹ÓбȽ϶àÉúÃüÖÜÆÚº¯ÊýÉÏÃæ´úÂë¾ÍûһһÁо١£

´ÓÉÏÃæ´úÂëÈÝÒ×Ïëµ½´úÀí·½°¸µÄȱµã£º±ØÐëÒªÍêÕû´úÀíËùÓÐÉúÃüÖÜÆÚ½Ó¿Ú¡£·ñÔò MyApplication »áÓÉÓÚÉúÃüÖÜÆÚ²»ÍêÕû¶ø³öÏÖÆæ¹ÖµÄ bug¡£±ÈÈçÎÒÃÇ×î³õ°æ±¾ÔÚ²âÊÔ¹ý³ÌÖоͳöÏÖÁËûÓдúÀí registerActivityLifecycleCallbacks º¯Êý¶øµ¼ÖÂÄò»µ½ Activity ÉúÃüÖÜÆÚ onActivityCreated/onActivityDestroyed µÈ»Øµ÷¡£

·´Éä Application

²Èµ½ÉúÃüÖÜÆÚ»Øµ÷²»ÍêÕûµÄ¿ÓÖ®ºó£¬ÎÒÃÇ¿ªÊ¼¿¼ÂÇÄܲ»ÄÜ°Ñ App ÔËÐÐÆÚ¼ä Application µÄÒýÓÃÈ«²¿Ìæ»»³É MyApplication £¿ÕâÑù¾ÍÎÞÐè MoaiApplication °ÑÉúÃüÖÜÆÚ´úÀí¸ø MyApplication£¬¶øÊÇÓÉ MyApplication Ö±½Ó½ÓÊÕϵͳ»Øµ÷¡£°²×¿ÏµÍ³ ContextWrapper µÄʵÏÖÊǰü×°ÁËÒ»²ãÕæÕýµÄ mBase ÉÏÏÂÎÄ£¬App ÕæÕýʹÓõ½µÄ¾ÍÊÇÕâ¸ö mBase¡£Í¨¹ý·´Éä mBase ÒÔ¼°ÆäÖÐ×Ö¶Î¶Ô Application µÄÒýÓ㬡º³¹µ×¡»½â¾öÁËÐèÒªÊÖд´úÀí Application È«²¿ÉúÃüÖÜÆÚµÄ·½·¨¡£

dex·Ö°ü

Qzone ·½°¸Ï·¢µÄ patch ÎļþÊDZä¸ü¹ýµÄ Java Àà×é³ÉµÄ patch.dex£¬ÔÚ dalvik ºÍ ART ÐéÄâ»úÏ·ֱðÐèÒª½â¾ö Class ref in pre-verified class resolved to unexpected implementation ºÍÄÚ´æµØÖ·´íÂÒÎÊÌâ¡£ÕâЩÎÊÌâ¸ùÔ´ÔÚÓڸıäÁËÀàÔ­±¾ËùÊôµÄ dex Îļþ¡£¼ÈÈ»¸Ä±äÀàËùÔÚµÄ dex »áµ¼Ö¸÷ÖÖ¸÷ÑùµÄÎÊÌ⣬ÄÇÖ±½ÓÌæ»»µôÕû¸ö dex ²»¾ÍºÃÁË£¿ÔÚµ÷ÑÐ JRebal for Android ºÍ Instant Run µÄʱºòÒ²·¢ÏÖÁËËûÃÇÓÐÀàËÆµÄ×ö·¨¡£

ÎÒÃÇ°Ñ App µÄ dex ·Ö³ÉÁ½²¿·Ö£º

  • patch ¿âµÄ dex Îļþ -> classes.dex
  • ÆäËûÒµÎñ´úÂëµÄ dex Îļþ -> classes[N].dex

ÆäÖÐ classes.dex Öнö°üº¬ÁË patch ¿âµÄÈ«²¿´úÂ룬²¢²»°üº¬ÈÎºÎÆäËûÒµÎñ´úÂë¡£

¼ÙÉè apk Öаüº¬Èý¸öÎļþ£ºclasses.dex¡¢classes2.dex¡¢classes3.dex¡£classes.dex ³äµ±µÄ½ÇÉ«¾ÍÊǼÓÔØÆ÷£¬¸ºÔðÆô¶¯ App ²¢ÇÒ¼ÓÔØºóÃæµÄÁ½¸ö dex¡£ÕâÑù×öµÄÄ¿µÄÊÇ£¬App Æô¶¯ÐèÒªÓõ½µÄËùÓÐÀà¶¼¼¯ÖÐÔÚ classes.dex ÖУ¬ËùÓÐÒµÎñ´úÂëµÄÀà¶¼¼¯ÖÐÔÚ classes[N].dex ÖС£Èç¹ûij´ÎÏ·¢ patch ´úÂë°Ñ classes2.dex ±ä¸üΪ classes2-1.dex£¬ÄÇôÓɼÓÔØÆ÷¼ÓÔØ classes2-1.dex ºÍ classes3.dex ¼´¿ÉʵÏÖ¸üаüº¬ MyApplication ÀàÔÚÄÚµÄËùÓдúÂë¡£

Ôõô¼ÓÔØ¸üкóµÄ´úÂ룿

Èç¹û dex ÎļþÓиüУ¬¼ÓÔØÆ÷»áÑ¡Ôñ¼ÓÔØ¸üкóµÄÎļþ¡£ÎÒÃÇ×î³õ²ÉÓÃÁË Google ¹Ù·½µÄ Multidex ·½°¸£¬À©Õ¹ DexPathList µÄ dexElements ×ֶΡ£

Multidex ·½°¸´æÔÚÎÊÌâ

Multidex ·½°¸ÉÏÏߺó·¢ÏÖijЩ»úÐÍ£¨±ÈÈçÈýÐÇs6 5.0.2 ROM£©²¢²»ÄܼÓÔØÀ©Õ¹½øÈ¥µÄ dex ÖеĴúÂë¡£debug ½×¶ÎÈ´ÄÜ˳Àû¼ÓÔØ£¨debugger ÍÏÂý´úÂëÖ´ÐÐËÙ¶È£©¡£Ä¿Ç°µÄ²Â²âÊÇijЩ³§ÉÌÔÚ 5.x ÒÔÉϰ汾¸Ä¶¯ ROM µ¼Ö App Æô¶¯Âß¼­ÓжàÏ̲߳¢·¢Ö´ÐС£

×îÖÕÎÒÃÇÆúÓÃÁË Multidex ·½°¸£¬×ª¶ø Hack ϵͳ ClassLoader¡£

ClassLoader Hack ·½°¸

ËùÓÐÏß³ÌʹÓõÄÊÇͬһ¸ö ClassLoader ¶ÔÏó¡£ËùÒÔÒ»µ© Hack ÁËÕâ¸ö¶ÔÏó£¬ËùÓÐÏ̶߳¼¿ªÊ¼Ê¹Óà Hack ¹ýµÄ¶ÔÏ󣬴ӶøÄܹ»½â¾ö¶àÏ̵߳¼Ö¼ÓÔØ²»µ½À©Õ¹µÄ dex ÎļþÖдúÂëµÄÎÊÌâ¡£

°²×¿ÏµÍ³¼ÓÔØ´úÂëµÄ ClassLoader ÊÇ PathClassLoader ºÍ BootClassLoader¡£ÎÒÃÇ×î³õÉè¼ÆµÄ·½°¸ÊÇÔÚ PathClassLoader ºÍ BootClassLoader Ö®¼ä²åÈëÒ»¸ö BaseDexClassLoader£¬ÈÃËùÓÐÒµÎñ´úÂë¶¼ÔÚÕâ¸ö²åÈëµÄ BaseDexClassLoader ÖмÓÔØ¡£µ«ÊÇÕâÑùµÄÉè¼Æ´æÔÚȱÏÝ£ºÒµÎñ´úÂëµÄ ClassLoader »á±ä³É BaseDexClassLoader£¬Èç¹ûÒµÎñ´úÂëÒÀÀµÁË patch ¿âµÄ´úÂ루ÔÚ classes.dex ÖУ©£¬»á³öÏÖ ClassNotFoundException¡£

ÔÚÕâ·½Ãæ Instant Run µÄÉè¼ÆºÜ¾«ÇÉ¡£ËüÈà PathClassLoader ²åÈëµÄ¸¸ loader £¨IncrementalClassLoader£©°ü×°ÁË DelegateClassLoader£¬²¢ÇÒ°Ñ DelegateClassLoader µÄ¸¸ loader ÉèÖÃΪ PathClassLoader£¬Ê¹µÃÀà¼ÓÔØµÄ·¾¶±ä³É£º

ÔÚ DelegateClassLoader ¼ÓÔØÒµÎñ´úÂëµÄʱºò£¨ÒµÎñ´úÂëÔÚ classesN.dex ÖУ©£¬Á÷³Ì»áÑØ×űê¼ÇµÄ˳Ðò×îÖÕµÚ 5 ²½³É¹¦¼ÓÔØµ½ÒµÎñ´úÂë¡£ÒµÎñ´úÂëÈç¹ûÒÀÀµ patch ¿âµÄ´úÂ룬»áÔÚ PathClassLoader ¼ÓÔØ¡£ÕâÑùËùÓдúÂë¶¼¿ÉÒÔ±»¼ÓÔØµ½¡£

Ôõô¸üÐÂ×ÊÔ´£¿

µ¥´¿¸üРJava ´úÂëµÄ patch ¿ò¼Ü£¬ÊµÓÃÐÔ»áÊܵ½ºÜ´óµÄ¾ÖÏÞ¡£¿ª·¢Í¬Ñ§ÐèÒª×ÐϸÑéÖ¤Ìá½»ÄÚÈÝ£¬È·±£Ìá½»Öв»°üº¬×ÊÔ´ÎļþµÄ±ä¸üÒÔ¼° native so µÄ¸Ä¶¯£¬»áµ¼Ö±¾¾Í¸´ÔӵĿª·¢Á÷³Ì±äµÃ¸ü¼Ó·±Ëö¡£ËùÒÔÎÒÃÇÔÚÖ§³Ö¸üРJava ´úÂëµÄ»ù´¡Ö®ÉÏ£¬Ò²Ö§³Ö¸üÐÂ×ÊÔ´ºÍ native so Îļþ¡£

App ¼ÓÔØ×ÊÔ´ÊÇÒÀÀµ Context#getResources º¯Êý·µ»ØµÄ Resources ¶ÔÏó¡£Resources ÄÚ²¿°ü×°ÁË AssetManager£¬×îÖÕÓÉ AssetManager ´Ó apk ÎļþÖмÓÔØ×ÊÔ´¡£ËùÒÔÎÒÃÇ·´ÉäÁËÌæ»»ÏµÍ³Ä¬È쵀 Resources£¬Èà AssetManager ´ÓÎÒÃǸüкóµÄ apk ÖмÓÔØ×ÊÔ´¡£Ïֽ׶εÄʵÏÖÖ§³Ö±ÈÈç string/anim/drawable/color/layout µÈ×ÊÔ´ÎļþµÄ±ä¸ü¡£ÓÉÓÚ Android ϵͳÔÚ°²×° apk ʱºòÒѾ­°Ñ AndroidManifest.xml Îļþ½âÎö²¢Ð´È뵽ϵͳÖУ¬Ä¿Ç°»¹²»Ö§³ÖÐÞ¸ÄËÄ´ó×é¼þ£¬±ÈÈçÔö¼Ó Activity¡£ºóÐø»á¼ÌÐøÑо¿ÈçºÎ×öµ½ÎÞ·ìÐÞ¸ÄËÄ´ó×é¼þ¡£

Ôõô¸üРso Îļþ£¿

ÔÚ Android ÏîÄ¿ÖÐʹÓà native º¯ÊýǰÐèÒªÏȵ÷Óà System.loadLibrary(libName)¡£

µ± lib ÎļþÐèÒª¸üлòÕßÓÐ bug ʱºòÔõô°ì£¿Ê×ÏÈÏëµ½µÄÊÇÔÚ´úÂëÖаѼÓÔØ so ÎļþµÄ´úÂë¸Ä³ÉSystem.load(libFilePath)£¬ÈÃϵͳ¼ÓÔØ×Ô¼ºÖ¸¶¨µÄ libFilePath Îļþ¡£È»¶øÕâÑùµÄ¸Ä¶¯ÐèÒª

  • ÔÚÔ´´úÂëÖÐÐ޸ĻòÕßʹÓù¤¾ßÔÚ±àÒëÆÚ°Ñ loadLibrary ½Ó¿Ú¸ÄΪ load
  • patch ¿â°Ñ so Îļþ´Ó patch ÎļþÖи´ÖƵ½Ìض¨Ä¿Â¼

ÕâÑùÔÚÔËÐÐÆÚ²ÅÓпÉÄܼÓÔØ¸üкóµÄ so Îļþ¡£

ͨ¹ý·ÖÎöϵͳ¼ÓÔØ so ÎļþµÄ·½Ê½ºó£¬ÎÒÃÇʹÓÃÁ˸ü¼òµ¥µÄ´¦Àí·½·¨¡£²éÕÒ lib ÎļþÊÇͨ¹ýµ÷Óà PathClassLoader µÄ findLibrary£¬×îÖÕµ÷Óõ½ DexPathList µÄ findLibrary¡£DexPathList »áÔÚ×Ô¼ºÎ¬»¤µÄÁбíĿ¼ÖвéÕÒ¶ÔÓ¦µÄ lib ÎļþÊÇ·ñ´æÔÚ¡£ËùÒÔÎÒÃÇÔÚ·¢ÏÖ patch ÎļþÖÐÓÐ so Îļþ±ä¸üµÄʱºò£¬»áÔÚ PathClassLoader µÄ nativeLibraryDirectories£¨Android6.0ÒÔÏ£©»òÕßnativeLibraryPathElements £¨Android 6.0¼°ÒÔÉÏ£©µÄ×îÇ°Ãæ²åÈë×Ô¶¨ÒåµÄlibÎļþĿ¼¡£ÕâÑù ClassLoader ÔÚ findLibrary µÄʱºò»áÏÈÔÚ×Ô¶¨ÒåµÄ lib Ŀ¼ÖвéÕÒ£¬ÓÅÏȼÓÔØ±ä¸ü¹ýµÄ so Îļþ¡£

patch °üµÄÉú³ÉÓëÓ¦ÓÃ

»Øµ½ÎÒÃÇ×î³õµÄÄ¿±ê£ºpatch ²»Ó¦¸ÃÓ°ÏìÕýÏò¿ª·¢Á÷³Ì¡£ÎÒÃÇÉú³É patch ÎļþÊÇÕë¶Ô apk ½øÐеģ¬¿ª·¢Í¬Ñ§ÎÞÐè¹ØÐĴ˴η¢²¼ÊÇ patch °æ±¾»¹ÊÇÕý³£°æ±¾£¬Ö»ÐèÒªÕý³£¿ª·¢²¢ÇÒ´ò°üÒª·¢²¼µÄ apk ¼´¿É£¬²»»á¶ÔÕýÏò¿ª·¢Á÷³Ì²úÉúÈκÎÓ°Ïì¡£

ÎÒÃÇÌṩ python ½Å±¾Éú³ÉÁ½¸ö apk µÄ£º¶Ô±ÈÁ½¸ö apk ÖеÄËùÓÐÎļþ£¬ÕÒ³öÓбä¸üµÄÎļþ½øÐÐ diff£¬°Ñ diff ½á¹ûдÈë patch Îļþ¡£ÏßÉÏÓû§ÏÂÔØ patch Îļþµ½±¾µØÖ®ºó£¬Æô¶¯Ò»ÌõеĽø³ÌʹÓà context.getApplicationInfo().sourceDir ·¾¶µÄ apk Óë patch ÎļþºÏ²¢£¬µÃµ½Ð嵀 apk£¨°üº¬×ÊÔ´Îļþ£¬²»°üº¬ dex Îļþ£©ÒÔ¼° dex Îļþ¡¢native so Îļþ£¬²¢ÔÚÕâÌõ½ø³ÌÖÐÌáǰ×ö dex ÓÅ»¯£¨dex2oat/dexopt£©¡£Õë¶Ô dex ÓÅ»¯¹ý³ÌÌ«ÂýµÄÎÊÌ⣨ÓÅ»¯¹ý³ÌÂý»áµ¼Ö½ø³Ì¿ÉÄÜ»áϵͳkill£¬½µµÍ patch ³É¹¦ÂÊ£©ÎÒÃDz¢·¢ÁË dex ÓÅ»¯¹ý³Ì£¬Ê¹ patch ¹ý³ÌºÄʱÏà¶Ô¼õС¡£Ð apk¡¢dexÎļþ¡¢so Îļþ¾Í¿ÉÒÔÔÚÏÂ´ÎÆô¶¯ App µÄʱºòÓɼÓÔØÆ÷¼ÓÔØ¡£

ÓÅÊÆºÍ²»×ã

ÕýËùνûÓÐÍêÃÀµÄ¼Ü¹¹£¬Ö»ÓÐÊʺÏ×Ô¼ºµÄ¼Ü¹¹¡£µ±Ç°µÄ¿ªÔ´·½°¸²¢²»ÄÜÂú×ãÎÒÃǼÓËÙ bug´¦ÀíºÍ°æ±¾µü´úËٶȵÄÐèÇó£¬ÓÚÊÇÓÐÁËÕ¾ÔÚ¾ÞÈ˼ç°òÉϵÄ˼¿¼ºÍÎÒÃÇÏÖÔÚµÄ patch ·½°¸¡£ÎÒÃÇĿǰµÄÓÅÊÆ£º

  • È«ÃæÖ§³Ö patch Java ´úÂë¡¢×ÊÔ´Îļþ ºÍ native so Îļþ¡£°æ±¾Ö»ÐèÒªÕý³£¹ö¶¯£¬¿ª·¢Í¬Ñ§ÎÞÐè¹ØÐÄÊÇ·¢²¼ patch °æ±¾»¹ÊÇÕý³£°æ±¾
  • ʹÓÃÏà¶Ô¼òµ¥£¨¼õÉÙ½ÓÈë³É±¾Ò²ÊÇÎÒÃǵÄ×î³õ˼¿¼µãÖ®Ò»£©£¬Ö»ÐèÒªÔÚ build.gradle ÖмÓÈëÈýÐдúÂë¼´¿É£¬ÎÞÐè¸ü¶àÅäÖá£

´ÓÎÒÃÇÍŶӷ¢²¼µÄ¶à¸ö patch °æ±¾À´¿´£¬Ï·¢µÄ diff ½á¹ûÎļþÉÔ´ó¡£´óÎļþÏÂÔØ¹ý³Ì¿ÉÄܳöÏֵĴíÎóÒ²»á¼ä½ÓÓ°Ïìµ½ patch ÆÌ¿ªµÄËÙ¶È£¬ËùÒÔÎÒÃÇÒ²ÔÚ³¢ÊÔ¸üºÃµÄ diff ·½°¸¡£Chrome ×î³õÉý¼¶·½°¸Ò²ÊÇ bsdiff£¬¶øºóÂýÂýÑݱä³ö Courgette Ëã·¨¡£

ÑݽøÓë˼¿¼

ÎÒÃǶÔÓÚ²¹¶¡¿ò¼ÜµÄ¶¨Òå²»½ö½öÊÇ¡ºÐÞ¸´bug¡»¾Í×ã¹»£¬³ý´ËÖ®Í⣬ÈçºÎ¿ìËÙ½ÓÈ룬ÈçºÎ×öµ½²»Ó°ÏìÏÖÓÐÁ÷³Ì£¬Õâ¶ÔÓںܶàÓ¦ÓÃÀ´ËµÖÁ¹ØÖØÒª¡£ÔÚ´ËÖ®ÉÏ£¬¸ãÇå³þ¿ò¼ÜµÄ¶¨Î»£¬Êʵ±ÉáÆúһЩ²»ÖØÒª·½ÃæµÄʱºò£¬¿ìËÙµü´ú£¬ÔÚµü´úÖгÖÐøÓÅ»¯£¬ÊÂÇéÍùÍù±ÈÏëÏóµÄ¸ü¼Ó¼òµ¥¡£

³ÖÐø½»¸¶Ò»Ö±¶¼ÊÇ¿ìËÙµü´ú˼ÏëµÄÒ»ÖÖ¼ùÐз½Ê½£¬¶ÔÓÚ App ¿ª·¢¶øÑÔ£¬Èç¹ûÎÒÃÇͨ¹ý¹¹Ôì²¹¶¡¿ò¼ÜÕâÑùÒ»¸öÇþµÀ£¬¿ÉÒÔͨ¹ý×Ô¶¯»¯ÏµÍ³°Ñ²¹¶¡¿ìËٵذÑй¦ÄÜÍÆË͸øÓû§£¬ÄÇÕâ¸öÊÂÇéµÄÒâÒå¾Í²»½ö½öÊÇ¡ºÐÞ¸´ bug¡»Õâô¼òµ¥¡£¼õÉÙÏßÉÏ crash ÂʺͼÓËÙ°æ±¾µü´ú¡¢ÈÃй¦Äܾ¡ÔçÓëÓû§¼ûÃæ£¬´Ó¶ø¿ÉÒÔÔÚ¸ü¶ÌµÄʱ¼äÄÚ²»¶ÏÊÕ¼¯Óû§·´À¡ÐÅÏ¢¶Ô²úÆ·½øÐдòÄ¥¡£

ĿǰÎÒÃÇÒѾ­ÔÚ΢ÐŶÁÊéÏßÉÏÈý¸ö°æ±¾¿ªÊ¼ÊÔÐÐÁËÓò¹¶¡´úÌæ°æ±¾·¢²¼»òÕß¼ÓËÙÀϰ汾Éý¼¶µÄ×ö·¨£¬ÆÚ´ý½«À´ÄÜͨ¹ýÕâ¸öÇþµÀ£¬Îª°²×¿¿ª·¢Í¬Ñ§ÃÇ×öµ½ÎÞ¸ÐÖªµÄ³ÖÐø½»¸¶¹ý³Ì ¡£

   
2554 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì