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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÒÆ¶¯AppÈëÇÖÓëÄæÏòÆÆ½â¼¼Êõ£­iOSƪ

 
×÷Õߣº Bugly_Tony À´Ô´£ºDEV CLUB ·¢²¼ÓÚ 2016-9-13
  3869  次浏览      27
 

Èç¹ûÄúÓÐÄÍÐÄ¿´ÍêÕâÆªÎÄÕ£¬Äú½«¶®µÃÈçºÎ×ÅÊÖ½øÐÐappµÄ·ÖÎö¡¢×·×Ù¡¢×¢ÈëµÈʵÓÃµÄÆÆ½â¼¼Êõ£¬ÁíÍ⣬ͨ¹ý¡°ÈëÇÖ¡±£¬½«°ïÖúÄúÀí½âÈçºÎ¹æ±Ü³£¼ûµÄ°²È«Â©¶´£¬ÎÄÕ´ó¸Ù£º

¼òµ¥½éÉÜios¶þ½øÖÆÎļþ½á¹¹ÓëÈëÇÖµÄÔ­Àí

½éÉÜÈëÇÖ³£ÓõŤ¾ßºÍ·½·¨£¬°üÀ¨pc¶ËºÍÊÖ»ú¶Ë

½²½âºÚ¿Í¼¼ÊõÖеľ²Ì¬·ÖÎöºÍ¶¯Ì¬·ÖÎö·¨

ͨ¹ýÒ»¸ö¼òµ¥µÄʵÀý£¬À´½éÉÜÈçºÎ×ÛºÏÔËÓÃÔÒ¿Ç¡¢Ñ°ÕÒ×¢Èëµã¡¢lldbÔ¶³Ìµ÷ÊÔ¡¢×·×Ù¡¢·´»ã±à¼¼ÊõÀ´½øÐкڿÍʵս

½²½âÔ½ÓüÆÆ½â²¹¶¡ºÍ²»ÐèÔ½ÓüµÄÆÆ½â²¹¶¡ÖÆ×÷·½·¨ºÍ²î±ð

ºÚ¿ÍµÄËØÑø

ÃôÈñµÄÐá¾õ

ÓÐʱºòͨ¹ýÒ»¸öº¯ÊýÃû£¬Ò»¸öÀàÃû£¬¾ÍÄÜ´óÖµÄÅжϳöËüµÄ×÷Óã¬Õâ¾ÍÊÇÐá¾õ£»¹¦Á¦ÒÑÕ黯¾³Ê±£¬ÉõÖÁ¿ÉÒÔʹÓõÚÁù¸ÐÅжϳöһЩעÈëµã

Ãæ¶Ôʧ°ÜµÄÓÂÆø

ÆÆ½âÓÐʱºòºÜºÄʱ£¬ºÍ³ÌÐò¿ª·¢ÕýºÃÏà·´£¬ËüºÄʱ²»ÊǺÄÔÚд´úÂëÉÏ£¬¶øÊǺÄÔÚѰÕÒ×¢ÈëµãºÍÄæÏò¹¤³ÌÉÏ£¬ÓпÉÄÜÄ㻨ÁË3Ììʱ¼äÈ¥ÕÒ³ÌÐòµÄÆÆÕÀ£¬µ«ÊÇ×îÖÕµÄÆÆ½â´úÂë¿ÉÄܾÍ2ÐУ¬²»µ½Ò»·ÖÖӾ͸㶨ÁË£»µ«ÊÇÄãÒ²ÐèÒª×öºÃÃæ¶Ôʧ°ÜµÄ×¼±¸£¬Èç¹û·ѡ´íÁË£¬ÓпÉÄÜÄãÕâ3ÌìÍêÈ«ÊÇÔÚÀË·ÑÄÔϸ°û

ºé»ÄÖ®Á¦

ºé»ÄÖ®Á¦£­¼´ÈëÇÖ¹ý³ÌÖÐÐèÒª½èÖúµÄ¸÷ÖÖ¹¤¾ß£¬¹¤ÓûÉÆÆäÊ£¬±ØÏÈÀûÆäÆ÷£¬¹¤¾ß¶¼ÊÇǰÈËÖǻ۵Ľᾧ£¬ÄÜÓù¤¾ß½â¾öµÄ£¬¾ø²»ÒªÊÖ¶¯È¥¸ã

iOSºÚ¿Í¹Ø¼ü×Ö

iOSµÄÈëÇÖÀë²»¿ªÔ½Óü¿ª·¢£¬Ò»ÇÐµÄÆÆ½â¡¢ÈëÇÖ¶¼Êǽ¨Á¢ÔÚÔ½ÓüµÄ»ù´¡Éϵģ¬Èç¹ûûÓÐÄõ½ÏµÍ³¼¶È¨ÏÞ£¬Ò»ÇеÄÏë·¨¶¼ÊÇ¿Õ̸ÁË£¬µ±È»£¬ÊÐÃæÉÏ´æÔÚÃâÔ½ÓüµÄÆÆ½â²¹¶¡£¬µ«ÊÇËüµÄ¿ª·¢¹ý³Ì£¬Ò²ÊÇ»ùÓÚÔ½Óü»·¾³µÄ

tweak

ÔÚiOSµÄºÚ¿Í½ç£¬Òª×öÆÆ½â»òÔ½Óü¿ª·¢£¬¾Í±ØÐëÁ˽âtweak£¬ËüÊǸ÷ÖÖÆÆ½â²¹¶¡µÄͳ³Æ£¬ÔÚgoogleÉÏ£¬Èç¹ûÄãÏëËÑË÷һЩԽÓü¿ª·¢×ÊÁÏ»òÕß¿ªÔ´µÄÆÆ½â²¹¶¡´úÂ룬ËüÊÇ×îºÃµÄ¹Ø¼ü×Ö¡£

iOSµÄtweak´óÖ·ÖΪÁ½ÖÖ£º

µÚÒ»ÖÖÊÇÔÚcydiaÉÏ·¢²¼µÄ£¬ÐèÒªÔ½Óü²ÅÄܰ²×°£¬´ó²¿·ÖÊÇdeb¸ñʽµÄ°²×°°ü£¬iOSÔÚÔ½Óüºó£¬»áĬÈϰ²×°Ò»¸öÃû½ÐmobilesubstrateµÄ¶¯Ì¬¿â£¬ËüµÄ×÷ÓÃÊÇÌṩһ¸öϵͳ¼¶µÄÈëÇֹܵÀ£¬ËùÓеÄtweak¶¼¿ÉÒÔÒÀÀµËüÀ´½øÐпª·¢£¬Ä¿Ç°Ö÷Á÷µÄ¿ª·¢¹¤¾ßÓÐtheosºÍiOSOpenDev£¬Ç°ÕßÊDzÉÓÃmakefileµÄÒ»¸ö±àÒë¿ò¼Ü£¬ºóÕßÌṩÁËÒ»Ì×xcodeÏîĿģ°æ£¬¿ÉÒÔÖ±½ÓʹÓÃxcode¿ª·¢¿Éµ÷ÊÔ£¬µ«ÊÇÕâ¸öÏîÄ¿ÒѾ­Í£Ö¹¸üÐÂÁË£¬¶Ô¸ß°æ±¾µÄxcodeÖ§³Ö²»ºÃ£¬´ó¼Ò×ÃÇéÑ¡Ôñ£¨±¾ÎÄÖеÄÀý×ÓÈ«²¿²ÉÓÃtheos£©

µÚ¶þÖÖÊÇÖ±½Ó´ò°ü³Éipa°²×°°ü£¬²¢Ê¹ÓÃ×Ô¼ºµÄ¿ª·¢Ö¤Êé»òÕ߯óÒµÖ¤ÊéÇ©Ãû£¬²»ÐèÔ½ÓüÒ²¿ÉÒÔ°²×°£¬¿ÉÖ±½Ó·Åµ½×Ô¼ºµÄÍøÕ¾ÉÏ£¬¿ÉʵÏÖÔÚÏß°²×°£»¶ÔÓÚûÓÐÔ½ÓüµÄÊÖ»ú£¬ÓÉÓÚȨÏÞµÄÏÞÖÆ£¬ÎÒÃÇÊÇûÓа취дϵͳ¼¶µÄtweakµÄ£¬ÀýÈçspringboardµÄ²¹¶¡ÊÇû·¨ÔËÐеģ¬ÕâÖÖtweak´ó¶àÊÇÕë¶Ôij¸öapp£¬°ÑÄ¿±êapp½øÐÐÐÞ¸Ä×¢Èë´¦Àí£¬ÔÙÖØÐÂÇ©ÃûºÍ·¢²¼£¬ÓеãÀàËÆÓÚwindowsÈí¼þµÄxxxÆÆ½â°æ¡¢xxxÃâ×¢²á°æ

ûÓÐÔ½ÓüµÄ»úÆ÷ÓÉÓÚϵͳÖÐûÓÐmobilesubstrateÕâ¸ö¿â£¬ÎÒÃÇÓжþ¸öÑ¡Ôñ£¬µÚÒ»¸öÊÇÖ±½Ó°ÑÕâ¸ö¿â´ò°ü½øipaµ±ÖУ¬Ê¹ÓÃËüµÄapiʵÏÖ×¢È룬µÚ¶þ¸öÊÇÖ±½ÓÐ޸Ļã±à´úÂ룻µÚÒ»¸öÊÊÓÃÓÚ½ÏΪ¸´ÔÓµÄÆÆ½âÐÐΪ£¬¶øÇÒÔ½Óütweak´úÂë¿ÉÒÔ¸´Ó㬵ڶþÖÖÊÊÓÃÓÚÆÆ½âһЩif¡­else¡­Ö®ÀàµÄÌõ¼þÓï¾ä

Mobilesubstrate

ÏÂÃæµÄͼչʾµÄ¾ÍÊÇoc½ìÖøÃûµÄmethod swizzling¼¼Êõ£¬Ëû¾ÍÊÇiOSµÄ×¢ÈëÔ­Àí£¬ÀàËÆÓÚwindowsµÄ¹³×Ó£¬ËùÒÔÎÒÃÇ×¢ÈëÒ²³ÆÎªhook

MobilesubstrateΪÁË·½±ãtweak¿ª·¢£¬ÌṩÁËÈý¸öÖØÒªµÄÄ£¿é£º

MobileHooker ¾ÍÊÇÓÃÀ´×öÉÏÃæËù˵µÄÕâ¼þʵģ¬Ëü¶¨ÒåһϵÁеĺêºÍº¯Êý£¬µ×²ãµ÷ÓÃobjc£­runtimeºÍfishhookÀ´Ì滻ϵͳ»òÕßÄ¿±êÓ¦Óõĺ¯Êý

MobileLoader ÓÃÀ´ÔÚÄ¿±ê³ÌÐòÆô¶¯Ê±¸ù¾Ý¹æÔò°ÑÖ¸¶¨Ä¿Â¼µÄµÚÈý·½µÄ¶¯Ì¬¿â¼ÓÔØ½øÈ¥£¬µÚÈý·½µÄ¶¯Ì¬¿âÒ²¾ÍÊÇÎÒÃÇдµÄÆÆ½â³ÌÐò£¬ËûµÄÔ­ÀíÏÂÃæ»á¼òµ¥½²½âÒ»ÏÂ

Safe mode ÀàËÆÓÚwindowsµÄ°²È«Ä£Ê½£¬±ÈÈçÎÒÃÇдµÄһЩϵͳ¼¶µÄhook´úÂë·¢Éúcrashʱ£¬mobilesubstrate»á×Ô¶¯½øÈ밲ȫģʽ£¬°²È«Ä£Ê½Ï£¬»á½ûÓÃËùÓеĵÚÈý·½¶¯Ì¬¿â

app×¢ÈëÔ­Àí

ÉÏÃæ½²µ½ÁËmobileloader£¬ËûÊÇÔõô×öµ½°ÑµÚÈý·½µÄlib×¢Èë½øÄ¿±ê³ÌÐòµÄÄØ£¿Õâ¸öÎÒÃÇÒª´Ó¶þ½øÖÆÎļþµÄ½á¹¹ËµÆð£¬´ÓÏÂÃæµÄͼÀ´¿´£¬Mach-OÎļþµÄÊý¾ÝÖ÷Ìå¿É·ÖΪÈý´ó²¿·Ö£¬·Ö±ðÊÇÍ·²¿£¨Header£©¡¢¼ÓÔØÃüÁLoad commands£©¡¢ºÍ×îÖÕµÄÊý¾Ý£¨Data£©¡£mobileloader»áÔÚÄ¿±ê³ÌÐòÆô¶¯Ê±£¬»á¸ù¾ÝÖ¸¶¨µÄ¹æÔò¼ì²éÖ¸¶¨Ä¿Â¼ÊÇ·ñ´æÔÚµÚÈý·½¿â£¬Èç¹ûÓУ¬Ôò»áͨ¹ýÐ޸Ķþ½øÖƵÄloadCommands£¬À´°Ñ×Ô¼º×¢Èë½øËùÓеÄappµ±ÖУ¬È»ºó¼ÓÔØµÚÈý·½¿â¡£

ΪÁËÈôó¼Ò¿´µÄ¸üÇå³þ£¬ÏÂÃæÎÒÓÃmachoviewÀ´´ò¿ªÒ»¸öÕæÊµµÄ¶þ½øÖÆÎļþ¸ø´ó¼Ò¿´¿´£¬¿ÉÒÔ¿´³ö£¬¶þ½øÖƵ±ÖÐËùÓÐÒýÓõ½µÄ¶¯Ì¬¿â¶¼·ÅÔÚLoad commands¶Îµ±ÖУ¬ËùÒÔ£¬Í¨¹ý¸øÕâ¸ö¶ÎÔö¼Ó¼Ç¼£¬¾Í¿ÉÒÔ×¢ÈëÎÒÃÇ×Ô¼ºÐ´µÄ¶¯Ì¬¿âÁË

ÄÇôÎÊÌâÀ´ÁË£¬ÔÚÕâÀï²åÈëÎÒÃÇ×Ô¼ºµÄ¶¯Ì¬¿âÓÐʲôÓã¿ÎÒÃÇ×Ô¼ºÐ´µÄ´úÂëûÓÐÖ´ÐеÄÈë¿Ú£¬ÎÒÃÇÒ»Ñùû·¢¸É»µÊ£¬àÅ£¬¹§Ï²ÄãÎʵ½µã×ÓÉÏÁË£¬ÎÒÃÇ»¹ÐèÒªÒ»¸ö"main"º¯ÊýÀ´Ö´ÐÐÎÒÃÇ×Ô¼ºµÄ´úÂ룬Õâ¸ö"main"º¯ÊýÔÚocÀïÃæ³ÆÎª¹¹Ô캯Êý£¬Ö»ÒªÔÚº¯ÊýǰÉùÃ÷ ¡°attribute((constructor)) static¡± ¼´¿É£¬ÓÐÁËËüÎÒÃǾͿÉÒÔ·¢»ÓÏëÏóÁ¦£¬½øÐÐ͵Ìì»»Èոɵ㻵ÊÂÁË£º

#import <CaptainHook/CaptainHook.h>

CHDeclareClass(AnAppClass);

CHMethod(1, void, AnAppClass, say, id, arg1)

{

NSString* tmp=@"Hello, iOS!";

CHSuper(1, AnAppClass, say, tmp);

}

__attribute__((constructor)) static void entry()

{

NSLog(@"Hello, Ice And Fire!");

CHLoadLateClass(AnAppClass);

CHClassHook(1, AnAppClass,say);

}

µ½ÕâÀïΪֹ£¬ÎÒÃÇÒѾ­ÖªµÀÁËÔõôÔÚÄ¿±ê³ÌÐò×¢Èë×Ô¼ºµÄ´úÂ룬ÄÇôÎÒÃÇÔõô֪µÀÐèÒªhookÄÄЩ·½·¨£¿ÔõôÕÒµ½¹Ø¼üµã½øÐÐʵ¼ÊµÄÆÆ½âÄØ£¿ÏÂÃæ½²Ò»Ï³£¼ûµÄappÈëÇÖ·ÖÎö·½·¨

###iOSÄæÏò·ÖÎö·½·¨

ÄæÏò·ÖÎö×î³£ÓõÄÓÐÈýÖÖ·½·¨£º

ÍøÂç·ÖÎö

ͨ¹ý·ÖÎöºÍ´Û¸Ä½Ó¿ÚÊý¾Ý£¬¿ÉÒÔÓÐЧµÄÆÆ½âͨ¹ý½Ó¿ÚÊý¾ÝÀ´¿ØÖƿͻ§¶ËÐÐΪµÄapp£¬³£ÓõÄ×¥°ü¹¤¾ßÓÐTcpdump, WireShark, CharlesµÈ£¬windowsƽ̨ÓÐfidller

¾²Ì¬·ÖÎö

ͨ¹ýÔÒ¿Ç¡¢·´»ã±à¡¢classdumpÍ·ÎļþµÈ¼¼ÊõÀ´·ÖÎöappÐÐΪ£¬Í¨¹ýÕâÖÖ·½Ê½¿ÉÒÔÓÐЧµÄ·ÖÎö³öappʵÓõÄһЩµÚÈý·½¿â£¬ÉõÖÁ·ÖÎö³öappµÄ¼Ü¹¹µÈÄÚÈÝ£¬³£ÓõŤ¾ßÓÐdumpdecrypted£¨ÔÒ¿Ç£©¡¢hopper disassembler£¨·´»ã±à£©¡¢class_dump£¨µ¼Í·Îļþ£©

¶¯Ì¬·ÖÎö

Óо²¾ÍÓж¯£¬ÍòÎï¶¼ÊÇÏàÉúÏà¿ËµÄ£¬¶¯Ì¬·ÖÎöÖ¸µÄÊÇͨ¹ý·ÖÎöappµÄÔËÐÐʱÊý¾Ý£¬À´¶¨Î»×¢Èëµã»òÕß»ñÈ¡¹Ø¼üÊý¾Ý£¬³£ÓõŤ¾ßÓÐcycript£¨ÔËÐÐʱ¿ØÖÆÌ¨£©¡¢ lldb+debugserver£¨Ô¶³Ì¶Ïµãµ÷ÊÔ£©¡¢logify£¨×·×Ù£©

demo:΢ÐÅÇÀºì°ü²å¼þ

ÉÏÃæ½²Á˺ܶàÔ­ÀíÐԵĶ«Î÷£¬ÏàÐÅ´ó¼ÒÒѾ­¿´µÄ²»ÄÍ·³ÁË£¬ÏÂÃæÎÒÃÇÒ»Æð¶¯µãÕæ¸ñµÄ£¬ÎÒÃÇ´ÓÍ·¿ªÊ¼£¬Ò»²½Ò»²½µÄ×öÒ»¸ö΢ÐŵÄ×Ô¶¯ÇÀºì°ü²å¼þ£¬µ±È»£¬ÍøÉÏ¿ÉÄÜÒѾ­ÓÐÏà¹ØµÄ¿ªÔ´´úÂëÁË£¬µ«ÊÇÎÒÕâÀïÒª½²µÄÊÇ£¬ÕâЩ´úÂëÊÇÔõôµÃ³öÀ´µÄ£¬ÎÒÃ´ÖØµã½²Ò»½²·ÖÎö¹ý³Ì

¹¤ÓûÉÆÆäÊ£¬±ØÏÈÀûÆäÆ÷

һ̨ԽÓüµÄÊÖ»ú£¬²¢×°ÓÐÒÔÏÂÈí¼þ

cycript

dumpdecrypted

debug server

openssh

һ̨ƻ¹ûµçÄÔ£¬²¢×°ÓÐÒÔÏÂÈí¼þ

class_dump

Theos

Hopper Disassembler v3

xcode

insert_dylib

ppÖúÊÖ

###ѰÕÒ×¢Èëµã

ÔÒ¿Ç

Ê×ÏÈÎÒÃÇÒª×öµÄ¾ÍÊǰÑ΢ÐŵĿÇÔÒµô£¬ÔÒ¿ÇÆäʵÊÇΪÁ˰ÑËüµÄÍ·Îļþclassdump³öÀ´£¬ÒòΪ´ÓappstoreÏÂÔØµÄapp¶þ½øÖƶ¼ÊǾ­¹ý¼ÓÃܵģ¬Ö±½Ó½øÐÐclassdump²Ù×÷ÊÇɶҲ¿´²»³öÀ´µÄ

ÓÃppÖúÊÖ°Ñdumpdecrypted.dylibÎļþcopyµ½Î¢ÐŵÄdocumentsĿ¼

sshµ½ÊÖ»úµÄÖÕ¶Ë£¬cdµ½documentsĿ¼ÖУ¬Ö´ÐÐÏÂÃæµÄÃüÁî½øÐÐÔҿDzÙ×÷

xxx$ cp /usr/lib/dumpdecrypted.dylib /path/to/app/document

xxx$ DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /path/to/WeChat

×îºóÔÒ¿ÇÍê³Éºó»áÔÚdocumentsĿ¼Éú³ÉÔÒÁ˿ǺóµÄ¶þ½øÖÆÎļþ£¬ÓÃppÖúÊÖcopy³öÀ´²¢class-dumpËûµÄÍ·Îļþ±¸ÓÃ

Ö´ÐÐÍêÕ⼸ÐÐÃüÁîºó£¬»áÔÚ΢ÐŵÄdocumentsĿ¼Éú³ÉÒ»¸öWeChat.decryptedÎļþ£¬Õâ¾ÍÊÇÔҿǺóµÄ¶þ½øÖÆÎļþ£»µ±È»ÁË£¬ÕâÒ»²½²»ÊDZØÐëµÄ£¬ÎÒÃÇ¿ÉÒÔÖ±½Ó´Ó91»òÕßppÖúÊÖÏÂÔØÒ»¸öÒѾ­ÔÒ¹ý¿ÇµÄ°æ±¾

¶¯Ì¬·ÖÎö£­cycript

ÒªÏëʵÏÖ×Ô¶¯ÇÀºì°ü£¬ÎÒÃDZØÐëÕÒµ½ÊÕµ½ºì°üÏûÏ¢µÄhandler·½·¨£¬ÔõôÈëÊÖÄØ£¿ÎÒÃÇÏÈ´Ó½çÃæ³ö·¢£¬½øÈë΢ÐŵÄÏûÏ¢Ê×·¢´°¿Ú:

ssh½øÊÖ»úµÄÖÕ¶Ë£¬ÊäÈëpsÃüÁ²éÕÒµ½Î¢ÐŵĽø³Ìid

ps aux | grep WeChat

¼ÀÆðÉñÆ÷cycript£¬¸ù¾ÝÉÏÒ»²½ÕÒµ½µÄpid×¢È뵽΢ÐŵĽø³Ì

cycript -p pidxxx

ÔÚcycriptµÄÖÕ¶ËÊäÈëÕâÒ»´®·½·¨£¬×÷ÓþÍÊÇ´òÓ¡³öµ±Ç°½çÃæµÄview²ã¼¶£¬£¨cycript»¹ÓкܶàÃîÓ㬴ó¼Ò¿ÉÒÔÉϹÙÍø¿´Îĵµ£¬ÕâÀï²»Ïêϸ½éÉÜ£©

UIApp.keyWindow.recursiveDescription().toString()

×îÖÕµÄÊä³öÈçÏ£¬ÄÚÈÝÌ«¶à£¬´ó¼Ò¿Ï¶¨¿´²»Çå³þ£¬²»¹ýû¹ØÏµ£¬Õâ¸ö²»ÊÇÖØµã£¬ÕâÀïÖ»ÊÇչʾһÏ´òÓ¡µÄ½á¹ûÐÎʽ£º

ÎÒÃÇ¿ÉÒÔËæ»úµÄѡȡһ¸ö½Úµã²»ÒªÌ«¿¿Ê÷Ò¶£¬Ò²²»ÒªÌ«¿¿Ê÷¸ù£¬ÀýÈçÎÒÑ¡µÄÊDZêºìµÄ²¿·Ö£¬°ÑÕâ¸ö½ÚµãµÄÄÚ´æµØÖ·copy³öÀ´£¬Õâ¸öÄÚ´æµØÖ·£¬¾Í´ú±íÁËÕâ¸ö½ÚµãµÄview¶ÔÏó£¬ios¿ª·¢µÄÀÏÓÍÌõÃǶ¼ÖªµÀ£¬Í¨¹ýviewµÄnextResponder·½·¨£¬¿ÉÒÔÕÒ³öËüËùÊôµÄÊÓͼ¿ØÖÆÆ÷ViewController£¬ËùÒÔÎÒôÔÚcycriptµÄ¿ØÖÆÌ¨ÖгÖÐøÊäÈëÈçϵÄÃüÁ

¿´µ½Ã»ÓУ¬Í¨¹ýËĸönextResponder·½·¨µ÷Óã¬ÎÒôÕÒµ½Á˵±Ç°ÁÄÌì´°¿ÚµÄViewControllerÀàÃû£¬Ëû¾ÍÊÇBaseMsgContentViewController£¬ÏÖÔÚÎÒÃÇËõСÁËÄ¿±ê·¶Î§£¬ÏÂÃæÎÒÃÇ»¹ÐèÒª¼ÌÐøËõС·¶Î§£¬ÒªÕÒµ½¾ßÌåµÄÏûÏ¢´¦Àíº¯Êý²ÅÐС£

¶¯Ì¬·ÖÎö£­Logify

Òª¼ÌÐøËõС·¶Î§£¬¾ÍµÃ¼ÀÆðÉñÆ÷LogifyÁË£¬ËüÊÇtheosµÄÒ»¸öÄ£¿é£¬×÷ÓþÍÊǸù¾ÝÍ·Îļþ×Ô¶¯Éú³Étweak£¬Éú³ÉµÄtweak»áÔÚÍ·ÎļþµÄËùÓз½·¨ÖÐ×¢ÈëNSLogÀ´´òÓ¡·½·¨µÄÈë²ÎºÍ³ö²Î£¬·Ç³£ÊʺÏ×·×Ù·½·¨µÄµ÷ÓúÍÊý¾Ý´«µÝ

ÏÖÔÚÎÒÃǸù¾Ý´ËǰÔҿǺóclass_dump³öÀ´µÄÍ·Îļþ£¬ÕÒµ½BaseMsgContentViewControllerÔÚpcÖÕ¶ËÖ´ÐÐÈçÏÂÃüÁ

logify.pl /path/to/BaseMsgContentViewController.h > /out/to/Tweak.xm

Êä³öµÄtweakÎļþ´ó¸ÅÊÇÕâ¸öÑù×ӵģº

ÕâÀï´ø°Ù·ÖºÅµÄ¹Ø¼ü×Ö£¬ÀýÈç %hook¡¢%log¡¢%orig ¶¼ÊÇmobilesubstrateµÄMobileHookerÄ£¿éÌṩµÄºê£¬ÆäʵҲ¾ÍÊǰÑmethod swizzlingÏà¹ØµÄ·½·¨·â×°³ÉÁ˸÷ÖÖºê±ê¼Ç£¬Ê¹ÓÃÆðÀ´¸ü¼òµ¥£¬´ó¼ÒÏëÒª¸üÉîÈëÁ˽â¸÷ÖÖ±ê¼Ç£¬¿ÉÒÔgoogleÒ»ÏÂlogosÓïÑÔ

theos´´½¨tweak

ÉÏÃæÎÒÃÇÓÃlogifyÉú³ÉÁËÒ»¸ötweak´úÂ룬ÎÒÃÇÒª°ÑËü°²×°µ½ÊÖ»úÉÏ£¬Ê×ÏÈÐèҪʹÓÃtheos½øÐбàÒ룬°²×°ÁËtheosÖ®ºó£¬ÔÚpcÖÕ¶ËÊäÈënic.pl£º

Ê×ÏÈÑ¡ÔñÏîĿģ°æµ±È»ÊÇtweakÀ²£¬È»ºóÊÇÏîÄ¿Ãû³Æ¡¢×÷Õߣ¬ºóÃæÁ½¸öÑ¡ÏîҪעÒ⣺

Ê×ÏÈÊÇbundle filter£¬Õâ¸öÐèÒªÌîÄãÐèҪעÈëµÄÄ¿±êappµÄbundle id£¬MobileLoaderÄ£¿é»á¸ù¾ÝËüÀ´Ñ°ÕÒÄãµÄtweakµÄ×¢ÈëÄ¿±ê

×îºóÊÇlist id applications to terminate upon installation£¬ÕâÀïÖ¸¶¨µ±tweak°²×°³É¹¦Ö®ºó£¬ÐèÒªkillµÄ½ø³Ì£¬ÎÒÃÇÒªhook΢ÐÅ£¬ÕâÀï¾ÍÌî΢ÐŵĶþ½øÖÆÎļþÃû¾Í¿ÉÒÔÁË£¬ÎªÊ²Ã´Òªkill£¿ ÒòΪÎÒôµÄ²å¼þÊÇÐèÒªÔÚappÆô¶¯Ê±¼ÓÔØ½øÈ¥µÄ£¬Èç¹û²»ÖØÆôapp£¬²å¼þÊDz»»áÉúЧµÄ

×îºóÒ»Çж¼Íê³Éºó£¬ÔÚµ±Ç°Ä¿Â¼»áÉú³ÉÏÂÁÐÎļþ£º

°ÑÉÏÃælogifyÉú³ÉµÄtweakÎļþ¸²¸Çµ½µ±Ç°Ä¿Â¼£¬²¢ÓÃÎı¾±à¼­Æ÷´ò¿ªmakefileÎļþ£¬ÔÚÎļþµÄ¿ªÍ·Ôö¼ÓÄãµÄiosÉ豸µÄipµØÖ·ºÍssh¶Ë¿Ú£º

×îºóÔÚpcÖն˽øÈëÏîĿĿ¼£¬ÊäÈë make package install ÃüÁ

ÆÚ¼ä»áÈÃÄãÊäÈëÉ豸µÄsshÃÜÂ룬ԽÓü»úÆ÷µÄĬÈÏsshÃÜÂëÊÇalpine£¬makeÃüÁî»áÉú³Édeb°²×°°ü£¬·ÅÔÚdebsĿ¼£¬ÎÒÃÇÈç¹ûÏë¶ÔÍâ·¢²¼×Ô¼ºµÄ²å¼þ£¬¿ÉÒÔ°ÑÉú³ÉµÄ°²×°°üÉÏ´«µ½cydia¼´¿É

°²×°³É¹¦ºóÔٴνøÈë΢ÐŵÄÁÄÌì½çÃæ£¬²¢Ê¹ÓÃÁíÍâÒ»¸ö΢ÐÅÔÚȺÀï·¢¸öÆÕͨÏûÏ¢£¬Á¬½Óxcode´ò¿ªÔ½Óü»úÆ÷¿ØÖÆÌ¨£¬²é¿´Êä³ö£¬»á·¢ÏÖÓÐÀàËÆÏÂÃæµÄÊä³ö£º

Jun  7 09:56:13 Administratorde-iPhone WeChat[85972] <Notice>:
 [1;36m[WxMsgPreview] [m[0;36mTweak.xm:308[m [0;30;46mDEBUG:[m -[<BaseMsgContentViewController: 
0x15e0c9a00> addMessageNode:{m_uiMesLocalID=2, m_ui64MesSvrID=0, m_nsFromUsr=ccg*675~9,
 m_nsToUsr=1037957572@chatroom, m_uiStatus=1, type=1, msgSource="(null)"}  layout:1 addMoreMsg:0]

¿´³öÀ´Á˰ɣ¬ÏûÏ¢´¦Àíº¯ÊýÊÇBaseMsgContentViewControllerµÄ**addMessageNode:layout:addMoreMsg:**·½·¨£¬´ó¼Ò¿ÉÒÔ¿´³ö£¬·½·¨µÄ²ÎÊýÄÚÈÝÒ²´òÓ¡³öÀ´ÁË

¶¯Ì¬·ÖÎö£­lldb

µ½Ä¿Ç°ÎªÖ¹£¬ÎÒôÒѾ­°Ñ·¶Î§ËõСµ½Á˾ßÌåµÄº¯Êý£¬¿´ÆðÀ´×¢ÈëµãÒѾ­ÕÒµ½ÁË£¬µ«ÊÇÇë´ó¼Ò˼¿¼Ò»Ï£¬Èç¹ûÎÒÃÇÔÚÕâ¸öº¯ÊýÖÐ×¢ÈëÇÀºì°üÂß¼­£¬ÄÇÎÒÃǵÄtweak»á²»»áÓÐʲôÖÂÃüµÄȱÏÝ£¿

Êǵģ¬ÒòΪBaseMsgContentViewControllerÕâ¸öÀàÊÇ΢ÐÅȺÁÄÌì´°¿Ú¶ÔÓ¦µÄcontroller£¬ÎÒô±ØÐë½øÈ뵽ȺµÄÁÄÌì½çÃæ£¬Õâ¸öÀà²Å»á´´½¨£¬Èç¹û²»½øÈëÁÄÌì´°¿Ú£¬ÎÒÃǵIJå¼þ¾Í²»ÉúЧÁË£¬¶øÇÒ£¬¼´Ê¹½øÈëÁÄÌì´°¿Ú£¬Ò²Ö»ÊÇÄÜ×Ô¶¯Ç¹µ±Ç°ÈºµÄºì°ü¶øÒÑ£¬ÆäËûȺ¾ÍÎÞÄÜΪÁ¦ÁË£¬ÊDz»ÊÇÓеãlow£¿

ËùÒÔΪÁËʹÎÒÃǵIJå¼þÏÔµÃÉÏÁ÷һЩ£¬ÎÒô»¹Òª¼ÌÐø×·¸ùËÝÔ´£¬Ñ°ÕÒÏûÏ¢µÄÔ´Í·£¬ÕâÀï¾ÍÓõ½ÁËlldbÔ¶³Ìµ÷ÊÔ£¬Ê¹ÓÃlldb´ò¶ÏµãµÄ·½Ê½£¬Í¨¹ýµ÷ÓÃÕ»£¬ÎÒÃÇ¿ÉÒԾͿÉÒÔ¿´µ½µ±ÏûÏ¢À´µ½Ê±£¬·½·¨µÄµ÷ÓÃ˳Ðò£¬ÕÒµ½×îÏÈÖ´ÐеÄÏûÏ¢´¦Àíº¯Êý¡£

ÒªÔÚ¸Õ¸Õ×·×Ùµ½µÄ**addMessageNode:layout:addMoreMsg:**·½·¨Öдò¶Ïµã£¬Ê×ÏÈÎÒÃǵÃÖªµÀËüÔÚÔËÐÐʱµÄÄÚ´æµØÖ·£¬ÄÇôÄÚ´æµØÖ·ÔõôÀ´ÄØ£¿ÓÐÕâôһ¸ö¹«Ê½£º

ÄÚ´æµØÖ·£½½ø³ÌÄÚ´æ»ùµØÖ·£«º¯ÊýÔÚ¶þ½øÖÆÖÐµÄÆ«ÒÆÁ¿

Ê×ÏÈÆ«ÒÆÁ¿ÎÒÃÇ¿ÉÒÔͨ¹ý·´»ã±à¹¤¾ßhooperÀ´²é£¬ÔÚpcÉÏÓÃhooper´ò¿ªÎ¢ÐŵĶþ½øÖÆÎļþ£¨×¢Ò⣬´ò¿ªÊ±»áÈÃÄãÑ¡Ôñarmv7»òÕßarm64£¬ÕâÐèÒª¸ù¾ÝÄãÔ½ÓüÊÖ»úµÄcpuÀàÐÍÀ´Ñ¡£¬Ò»¶¨ÒªºÍÄãµÄÊÖ»úÒ»Ö£©£¬hooperµÄ½çÃæ·Ç³£¼ò½à£¬×ó²àÓиöËÑË÷¿ò£¬¿ÉÒÔÊäÈ뺯ÊýÃû£¬Ö±½ÓÕÒµ½º¯ÊýÔÚ¶þ½øÖÆÖеÄλÖÃ

ͨ¹ý×ó²àµÄËÑË÷¿òËÑaddMessageNode¹Ø¼ü×Ö£¬ÕÒµ½ËüµÄÆ«ÒÆÁ¿ÊÇ0x00000001017d7c6c£º

ÕÒµ½ÁËÆ«ÒÆÁ¿£¬»¹ÐèÒª½ø³ÌµÄ»ùµØÖ·£¬Õâ¸öµØÖ·ÐèÒªÁ¬lldb£¬ËùÒÔÏÂÃæ½²Ò»ÏÂÈçºÎÁ¬½Ólldb½øÐÐÔ¶³Ìµ÷ÊÔ£¬ÏÈssh½øÔ½ÓüÊÖ»úµÄÖÕ¶Ë£¬ÔÚÖÕ¶ËÊäÈëÈçÏÂÃüÁעÒ⣬ÄãµÄÊÖ»ú±ØÐëÁ¬xcodeµ÷ÊÔ¹ý²Å»áÓÐÕâ¸öÃüÁ£º

debugserver *:19999 -a WeChat

È»ºóÔÚpc¶ËÐÂÆðÒ»¸öÖÕ¶Ë´°¿Ú£¬ÊäÈëÈçÏÂÃüÁîÀ´Á¬½ÓÊÖ»ú¶Ë½øÐе÷ÊÔ£º

lldb  ->  process connect connect://deviceIP:19999

Èç¹ûÁ¬½Ó³É¹¦£¬»á½øÈëlldbµÄ¿ØÖÆÌ¨£¬ÎÒÃÇÔÚlldbµÄ¿ØÖÆÌ¨ÊäÈëÈçÏÂÃüÁîÀ´»ñȡ΢ÐŽø³ÌµÄ»ùµØÖ·£º

image list -o -f

Ö´ÐÐÕâ¸öÃüÁî»á´òÓ¡ºÜ¶àÐÐÊý¾Ý£¬ÏñÏÂÃæÍ¼ÖÐÕâÑù£¬ÎÒôҪÕÒµ½Î¢ÐŵĶþ½øÖÆÎļþËùÔÚµÄÐУ¬¼Ç¼ËüµÄÄÚ´æµØÖ·0X00000000000E800£º

µ½ÕâÀïÎÒÃÇÁ½¸öµØÖ·¶¼ÕÒµ½ÁË£¬ÔÙͨ¹ýbrÃüÁî´ò¶Ïµã£º

br s -a '0X00000000000E800+0x00000001017d7c6c'

´òºÃ¶Ïµãºó¼ÌÐøÏòȺÀïÃæ·¢ÏûÏ¢£¬ÎÒÃǻᷢÏÖ½ø³Ì±»¶ÏµôÁË£¬ÕâʱÊäÈëbtÖ¸Á¾Í¿ÉÒÔ¿´µ½µ±Ç°µÄµ÷ÓÃÕ»£¬¾ÍÏñÏÂͼÕâÑù£º

·ÖÎö¶ÑÕ»µÄʱºò£¬ÖصãÕÒ³öÄ£¿éʱWeChatµÄÏÕâЩ¶¼ÊÇ΢ÐÅÄ£¿éµÄ·½·¨µ÷Óã¬ÓÐÁ˶ÑÕ»£¬ÎÒÃÇÐèÒª¸ù¾Ý¶ÑÕ»µÄÄÚ´æµØÖ·ÕÒ³öËüµÄ¾ßÌ庯ÊýÃû£¬Ë¼Â·»¹ÊÇÏȸù¾ÝÉÏÃæ½²µ½µÄ¹«Ê½À´¼ÆËã³öÕ»µØÖ·ÔÚ¶þ½øÖÆÖÐµÄÆ«ÒÆÁ¿£¬È»ºóÓÃhooperÕÒµ½Æ«ÒÆÁ¿¶ÔÓ¦µÄº¯ÊýÃû

º¯ÊýÔÚ¶þ½øÖÆÖÐµÄÆ«ÒÆÁ¿£½ÄÚ´æµØÖ· - ½ø³ÌÄÚ´æ»ùµØÖ·

ÀýÈç¸ù¾Ý¼ýÍ·ËùÖ¸µÄÄÚ´æµØÖ·ºÍ¸Õ¸ÕµÃµ½µÄ½ø³Ì»ùµØÖ·£¬¼ÆËãÆ«ÒÆÁ¿£º

0x0000000101ad02f4 ¨C 0x00000000000e8000 = 1019E82F4

È»ºóÔÚhooperÖÐËÑË÷Õâ¸öµØÖ·£¬µÃµ½½á¹ûÈçÏ£º

×îÖÕ°ÑËùÓеÄÕ»¶¼½øÐл¹Ô­£¬µÃ³öµ÷ÓÃÕ»ÊÇÕâ¸öÑù×ӵģº

-[CMessageMgr MainThreadNotifyToExt:]:
¨C>
-[BaseMsgContentLogicController OnAddMsg:MsgWrap:]:
¡ª¡ª>
-[RoomContentLogicController DidAddMsg:]
¡ª¡ª¡ª->
-[BaseMsgContentLogicController DidAddMsg:]
¡ª¡ª¡ª¡ª¡ª->
-[BaseMsgContentViewController addMessageNode:layout:addMoreMsg:]:

CMessageMgrÕâ¸öÀม³öË®ÃæÁË£¬ÊÇʱºò·¢»ÓºÚ¿ÍµÄÐá¾õÁË£¬¸ù¾Ý·½·¨ÃûÎÒÃÇÄÜÅжϳöMainThreadNotifyToExt:Õâ¸ö·½·¨½ö½öÊÇÓÃÀ´·¢ËÍ֪ͨµÄ£¬Èç¹ûhookÕâ¸ö·½·¨£¬ÎÒÃÇÊÇÄò»µ½ÏûÏ¢ÄÚÈݵÄ

ÓÉÓÚÕâÀï¿ÉÄÜÊÇÒ»¸öÒì²½µ÷Óã¬ÓöϵãµÄ·½Ê½£¬¿ÉÄÜÒѾ­´òÓ¡²»³öÀ´Õ»ÐÅÏ¢ÁË£¬ËùÒÔ»¹µÃʹÓÃlogifyÀ´¼ÌÐø×·×ÙCMessageMgrÕâ¸öÀ࣬½²¹ýµÄÄÚÈÝÎҾͲ»Öظ´ÁË£¬Ö±½ÓµÃµ½×îÖÕµÄÏûÏ¢´¦Àíº¯Êý£º

-(void)AsyncOnAddMsg:(id)message MsgWrap:(CMessageWrap* )msgWrap 

ʵÏÖ¡°ÇÀ¡±µÄ¶¯×÷

ÉÏÒ»½ÚÎÒÃÇÒѾ­ÕÒµ½ÁËhookµÄ¹Ø¼üµã£¬ÄÇô¸ÃÈçºÎȥʵÏÖÇÀµÄ¶¯×÷£¿Í¬ÑùÎÒÃÇÐèÒª½áºÏ¶¯Ì¬·ÖÎöºÍ¾²Ì¬·ÖÎö£¬Ê×Ïȵõ½ºì°üÏûÏ¢ÌåµÄÊý¾ÝÌØÕ÷£¬È»ºóÔÙ·ÖÎö´¦ÀíÏûÏ¢µÄ¹Ø¼üµã

Êý¾Ý°ü·ÖÎö

Ê×ÏÈÎÒÃǵĴúÂëÐèÒª·Ö±æÄÄЩ²ÅÊǺì°üÏûÏ¢£¬·½·¨ºÜ¼òµ¥£¬ÓÃlogify×·×ÙBaseMsgContentViewController£¬È»ºóÏò΢ÐÅȺ·¢Ò»¸öºì°ü£¬¹Û²ìÊÖ»úÈÕÖ¾Êä³ö£¬ÎÒÃÇ¿ÉÒÔ¿´³öÏûÏ¢µÄÊý¾Ý½á¹¹ÖÐÓиötype×ֶΣ¬ÖµÊÇ49£¬Õâ¸ötypeÓ¦¸Ã¾ÍÊDZê¼ÇÏûÏ¢ÀàÐ͵ģ¬Èç¹û²»È·¶¨£¬¿ÉÒÔÔÙ·¢¸öͼƬ»òÕßÎı¾Ö®ÀàµÄÏûÏ¢£¬Õâ¸öÖµÊDz»Í¬µÄ£º

Administratorde-iPhone WeChat[47410] <Notice>: [1;36m[WxMsgPreview] [m[0;36mTweak.xm:308[m [0;30;46mDEBUG:[m -[<BaseMsgContentViewController: 0x15e0c9a00> addMessageNode:{m_uiMesLocalID=16, m_ui64MesSvrID=1452438635530425509, m_nsFromUsr=1037957572@chatroom, m_nsToUsr=ccg*675~9, m_uiStatus=4, type=49, msgSource="<msgsource>

<silence>0</silence>

<membercount>3</membercount>

</msgsource>

"} layout:1 addMoreMsg:0]

 

ÏÖÔÚÎÒÃÇÄÜ·Ö±æÏûÏ¢ÀàÐÍÁË£¬ÖصãÀ´ÁË£¬ÔõôʵÏÖÇÀÕâ¸öÊÂÄØ£¬¿ÉÄÜ´ÏÃ÷ÈËÒѾ­²Âµ½ÁË£¬´ÓuiÈëÊÖ£¬ÏÈÕÒµ½Î¢Ðű¾ÉíµÄÇÀºì°üº¯Êý£¬ÎÒÃÇ×Ô¼ºÀ´¸øËü¹¹Ôì²ÎÊý²¢µ÷ÓÃËû²»¾ÍÐÐÁË£¿

°Ñºì°üµã¿ªºó£¬ÓÃcycript´òÓ¡³öµ±Ç°viewµÄ²ã´Î£¬¾ÍÏñÏÂÃæÕâ¸ö£¬Ò»Ñ۾ͿÉÒÔ¿´µ½Öص㣬WCRedEnvelopesReceiveHomeView¾ÍÊÇ¿ªºì°üµ¯¿òµÄÀàÃû

ÖªµÀÀàÃûºó£¬ÓÃcycript×·×ÙËü£¬µã»÷¿ªºì°ü£¬ÔÚÈÕÖ¾ÖÐÕÒµ½ÁËÏÂͼÖеÄÄÚÈÝ£¬´ÓÃû×ÖÀ´¿´£¬ÕâÊÇÒ»¸öʼþ´¦Àíº¯Êý£¬ÎÒÃÇÏÖÔÚÒª×öµÄ£¬¾ÍÊǰÑËû»¹Ô­³Éoc´úÂë£¬ÕæÕýʵÏÖÇÀºì°ü¹¦ÄÜ

Administratorde-iPhone WeChat[91173] <Notice>:

[1;36m[WxMsgPreview] [m[0;36mTweak.xm:8[m [0;30;46mDEBUG:

[m -[<WCRedEnvelopesReceiveHomeView: 0x13cdda8c0> OnOpenRedEnvelopes]

¾²Ì¬·ÖÎö·¨

Ôõô°ÑËû»¹Ô­³Éoc´úÂë£¬ÕæÕýʵÏÖÇÀºì°ü¹¦ÄÜÄØ£¿»¹µÃ½èÖúÒ»µãµã»ã±à¼¼ÄÜ£¬Ö»ÊÇÒ»µãµã¶øÒÑ£¬ÒòΪÏÖÔڵķ´»ã±à¹¤¾ßÒѾ­ºÜÇ¿´óÁË£¬ÎÒÃDz»ÐèÒª°¤¸öÈ¥¿´¼Ä´æÆ÷ÁË

ÔÚpcÉÏÓÃhooper´ò¿ªÎ¢ÐŵĶþ½øÖÆÎļþ£¬ËÑË÷OnOpenRedEnvelopes£¬²é¿´»ã±à´úÂ룬עÒâÔÚͼƬÖÐ×îºóÒ»Ðе÷ÓÃÁËÒ»¸öWCRedEnvelopesReceiveHomeViewOpenRedEnvelopesº¯Êý

¼ÌÐøËÑË÷WCRedEnvelopesReceiveHomeViewOpenRedEnvelopesÕâ¸ö·½·¨£¬ÕÒµ½ËüµÄ»ã±à´úÂë

Ê×ÏÈËû²»ÖªµÀ´ÓÄÄÀï»ñÈ¡ÁËÒ»¸öpayinfoitem

È»ºóÓÖ»ñÈ¡ÁËpayinfoµÄm_c2cNativeUrlÊôÐÔ

È»ºóµ÷ÓÃsubstringfromindex°ÉnavtiveurlµÄǰ׺½Ø¶Ï£¬²¢µ÷ÓÃbizutilµÄÒ»¸ö·½·¨°Ñurl²ÎÊýת»»³ÉÁËÒ»¸ö×Öµä

×îÖÕ·´½â³öµÄ´úÂëÈçÏ£¬ÊDz»ÊǺܼòµ¥£¿

NSString *nativeUrl = [[msgWrap m_oWCPayInfoItem] m_c2cNativeUrl];
nativeUrl = [nativeUrl substringFromIndex:[@"wxpay://c2cbizmessagehandler/hongbao/receivehongbao?" length]];
NSDictionary *nativeUrlDict = [%c(WCBizUtil) dictionaryWithDecodedComponets:nativeUrl separator:@"&"];

¼ÌÐøÍùÏ¿´, ÔÚÕâÀïÇ°ÃæÈýÐд´½¨ÁËÒ»¸ömutable dictionary£º

½ô½Ó×ÅÏÂÃæÈý¸ö¿ò¿ò´¦¶¼Êǵ÷ÓÃÁËsetobject£ºforkey£ºÏòÀïÃæÌî¶«Î÷£¬ÄÇÌîµÄ¶«Î÷ÊÇɶĨ£¿

ÆäʵÕâÀïÒѾ­¿ÉÒÔ¿´µÄºÜÇå³þÁË£¬µÚÒ»¸ökeyÊÇmsgtype£¬ÖµÊÇ×Ö·û´®1£¬µÚ¶þ¸ösendid£¬ÖµÊǵ÷ÓÃÁËÒ»¸öobjectforkey´ÓÁíÒ»¸ö×ÖµäÖÐÈ¡³öÀ´µÄ£¬ºÜÏÔÈ»£¬ÁíÒ»¸ö×Öµä¾ÍÊÇÉÏÃæ´Óurl½âÎöµÃµ½µÄ£¬ºóÃæµÄchannelidÒ²ÊÇͬÑùµÄµÀÀí

×îÖյõ½µÄ´úÂëÈçÏ£º

NSMutableDictionary *args = [[%c(NSMutableDictionary) alloc] init];
[args setObject:nativeUrlDict[@"msgtype"] forKey:@"msgType"];
[args setObject:nativeUrlDict[@"sendid"] forKey:@"sendId"];
[args setObject:nativeUrlDict[@"channelid"] forKey:@"channelId"];

¼ÌÐøÍùÏ¿´´Ó¼ýÍ·ËùÖ¸µÄ¼¸´¦£¬ÎÒÃÇ¿ÉÒÔ¿´¼û£¬ËüµÄ´úÂëÊÇÕâÑùµÄ£¬¹²·ÖΪËIJ½

µÚÒ»¸ö¼ýÍ·µ÷ÓÃÁËmmservicecenterµÄdefaultcenter·½·¨À´»ñÈ¡mmservicecenterʵÀý

µÚ¶þ¸ö¼ýÍ·µ÷ÓÃÁËCContactMgrµÄclass·½·¨

µÚÈý¸ö¼ýÍ·µ÷ÓÃÁ˵ÚÒ»²½»ñÈ¡µÄmmservicecenterʵÀýµÄgetservice·½·¨£¬¶øÕâ¸ö·½·¨Êǰѵڶþ²½µÃµ½µÄclass×÷Ϊ²ÎÊý

µÚËĸö¼ýÍ·ºÜÃ÷°×Á˰ɣ¬µÚÈý²½µÃµ½ÁËCContactMgrʵÀý£¬ÕâÀï¾ÍÊǵ÷ÓÃCContactMgrʵÀýµÄgetselfcontact·½·¨»ñÈ¡×Ô¼ºµÄÕË»§×ÊÁÏ

×îÖÕ»¹Ô­µÄµ½µÄ´úÂëÈçÏ£º

CContactMgr *contactManager = [[%c(MMServiceCenter) defaultCenter] getService:[%c(CContactMgr) class]];

CContact *selfContact = [contactManager getSelfContact];

 

¼ÌÐøÍùÏ¿´£¬ÕâÀïʹÓøոյõ½µÄselfcontactÀ´»ñÈ¡displaynameºÍheadimgurl£¬²¢°ÑËüÃÇÉèÖõ½¸Õ¸ÕµÄ×ÖµäÀïÃæÁË£¬key·Ö±ðÊÇnicknameºÍheadimg

×îÖյĴúÂ룺

[args setObject:[selfContact getContactDisplayName] forKey:@"nickName"];

[args setObject:[selfContact m_nsHeadImgUrl] forKey:@"headImg"];

½Ó×Å¿´£¬½ÓÏÂÀ´ÕâÁ½¶Î¾Í±È½Ïµ°ÌÛÁË£¬ÍêÈ«ÊÇ´ÓÄÚ´æµØÖ·ÀïÃæÈ¡µÄÖµ£¬ÎÒÒ²²»ÖªµÀËû´ÓÄÄÀïÀ´£¬Ôõô°ìÄØ£¿ÓÐûÓв»¶®»ã±à¾ÍÄܸ㶨ËüµÄ½Ý¾¶ÄØ£¬´ð°¸ÊÇÓУ¡

¶ÔÓÚµÚÒ»¸ö£¬ÎÒ¿ÉÒÔͨ¹ýËüµÄkey²Â³öÀ´£¬»¹¼ÇµÃ×ʼµÄʱºòÎÒÃÇÈ¡¹ýpayinfoµÄÒ»¸önativeurlÊôÐÔ°É£¬ÎÒÃǹÃÇÒ°ÑËû´«½øÈ¥

¶ÔÓÚµÚ¶þ¸ö£¬ÎÒÃÇ¿ÉÒԲ²âsessionUserName´ó¸ÅÊǻỰÃû³Æ£¬Ò²¾ÍÊÇȺÃû³ÆµÄÒâ˼£¬´ÓÄÄÀïÈ¡Õâ¸öֵĨ£¿ÎÒÃÇÏȰÑÒ²ÉèÖóÉα´úÂë

×îÖյĽá¹ûÈçÏ£º

[args setObject:nativeUrl forKey:@"nativeUrl"];

[args setObject:xxx forKey:@"sessionUserName"];

¼ÌÐøÍùÏ¿´£¬½ÓÏÂÀ´ÕâÒ»¶Î»¹ÊÇÓÃmmservicecenterÀ´»ñÈ¡WCRedLogicMgr¶ÔÏó£¬È»ºóµ÷ÓÃWCRedLogicMgrµÄopen·½·¨À´²ðºì°ü£¬¿ÉÒÔÏëÏóopen·½·¨µÄ²ÎÊý¾ÍÊÇÉÏÃæÎÒÃÇÐÁ¿à×é×°µÄ×Öµä

´úÂëÈçÏ£º

[[[%c(MMServiceCenter) defaultCenter] getService:[%c(WCRedEnvelopesLogicMgr) 
                          class]] OpenRedEnvelopesRequest:args];

Áìºì°üÂß¼­

µ½ÕâÀÎÒÃÇÔÙ×ܽáÒ»ÏÂÎÒÃÇÉÏÃæ·ÖÎöµÄ¹ý³Ì¡­

µÃµ½m_oWCPayInfoItemÊôÐÔ

½âÎöm_oWCPayInfoItemµÄm_c2cNativeUrlÊôÐÔ

µÃµ½selfcontact

×é×°Ïà¹Ø²ÎÊý

µ÷ÓÃOpenRedEnvelopesRequest:ÁìÈ¡ºì°ü

×îÖÕµÄÇÀºì°ü´úÂëºÏ²¢ÆðÀ´ÈçÏ£º

#import "WxMsgPreview.h"

%hook CMessageMgr

-(void)AsyncOnAddMsg:(id)message MsgWrap:(CMessageWrap* )msgWrap {

%log;

%orig;

if(msgWrap.m_uiMessageType == 49){

CContactMgr *contactManager = [[%c(MMServiceCenter) defaultCenter] getService:[%c(CContactMgr) class]];

CContact *selfContact = [contactManager getSelfContact];

if ([msgWrap.m_nsContent rangeOfString:@"wxpay://c2cbizmessagehandler/hongbao/receivehongbao"].location != NSNotFound) { // ºì°ü

NSString *nativeUrl = [[msgWrap m_oWCPayInfoItem] m_c2cNativeUrl];

nativeUrl = [nativeUrl substringFromIndex:[@"wxpay://c2cbizmessagehandler/hongbao/receivehongbao?" length]];

NSDictionary *nativeUrlDict = [%c(WCBizUtil) dictionaryWithDecodedComponets:nativeUrl separator:@"&"];

NSMutableDictionary *args = [[%c(NSMutableDictionary) alloc] init];

[args setObject:nativeUrlDict[@"msgtype"] forKey:@"msgType"];

[args setObject:nativeUrlDict[@"sendid"] forKey:@"sendId"];

[args setObject:nativeUrlDict[@"channelid"] forKey:@"channelId"];

[args setObject:[selfContact getContactDisplayName] forKey:@"nickName"];

[args setObject:[selfContact m_nsHeadImgUrl] forKey:@"headImg"];

[args setObject:nativeUrl forKey:@"nativeUrl"];

[args setObject:msgWrap.m_nsFromUsr forKey:@"sessionUserName"];

[[[%c(MMServiceCenter) defaultCenter] getService:[%c(WCRedEnvelopesLogicMgr) class]] OpenRedEnvelopesRequest:args];

}

}

}

%end

 

¸Õ²Å˵ÁË£¬ÓÐÁ½¸öÒÉÄѵãûÓнâ¾ö:

µÚÒ»£ºÎÒÃDz»ÖªµÀpayinfoÊÇÄÄÀïÀ´µÄ£¬

µÚ¶þ£ºsessionusernameÎÒÃÇÒ²²»ÖªµÀÊÇÄÄÀïÀ´µÄ

ÕâʱºòÎÒÃÇ¿ÉÒÔ´ÓÎÒÃÇ×¢ÈëµãµÄ²ÎÊýÈëÊÖ£¬Ê×ÏÈÓÃlogify´òÓ¡³öaddmsg·½·¨µÄ²ÎÊýÐÅÏ¢£¬»á·¢ÏÖ£¬ËüµÄµÚ¶þ¸ö²ÎÊý¸ÕºÃÓÐÒ»¸öpayinfoµÄÊôÐÔ£¬ÕâÑùµÚÒ»¸öÎÊÌâÓ­Èжø½âÁË

µÚ¶þ¸öÎÒÃÇÒѾ­²Â²âµ½Ëü´ú±íȺÃû³Æ£¬ËùÒÔÎÒÃÇ´ÓÐ޸ÎȺÃû³Æ£¬È»ºóÔÙ¹Û²ìlogify´òÓ¡³öµÄ²ÎÊýÖµµÄ±ä»¯£¬¾Í¿ÉÒÔÈ·Èϳö´ÓÄÄÀïÈ¡ÁË

ͨ¹ýÒ»·¬ÕÛÌÚ£¬µÃ³öÁËÇÀºì°üµÄºËÐÄ´úÂ룬ÔÙ½áºÏÉÏÃæÕ½ÚËù½²µÄtheosÖÆ×÷tweak°üµÄ·½·¨£¬´ò°ü²¢°²×°µ½ÊÖ»ú£¬·¢¸öºì°üÊÔÊÔ£¬ÊDz»ÊÇÃëÇÀ£¿

ÃâÔ½Óü²å¼þ

¼ì²éÒÀÀµÏî

Èç¹ûÉ豸ûÓÐÔ½Óü£¬ÊÇûÓÐmobilesubstrateµÈ»·¾³µÄ£¬¶øÇÒһЩϵͳĿ¼ÊÇûÓжÁдȨÏ޵ģ¬ÕâʱÎÒôֻÄÜ´ÓÄ¿±êappµÄ¶þ½øÖÆÎļþÈëÊÖ£¬Í¨¹ýÊÖ¶¯ÐÞ¸Äload commandsÀ´¼ÓÔØ×Ô¼ºµÄdylib£¬ÄÇôÉÏÃæÎÒÃǵIJå¼þÓÖÊÇʹÓÃtheos»ùÓÚmobilesubstrate±àÒëµÄ£¬ÓÐûÓа취ȷ¶¨ÎÒÃǵÄdylibÓÐûÓÐÒÀÀµÆäËûµÄ¿âÄØ£¿

ʹÓÃosx×Ô´øµÄotool¹¤¾ß¼´¿É£¬¿ÉÒÔ¿´³ö£¬ÎÒÃǵÄlibÊÇÒÀÀµÓÚsubstrate¿âµÄ£¬ÆäËûµÄ¶¼ÊÇϵͳ¿â£¬ËùÒÔÎÒÃÇ´ÓÔ½ÓüÉ豸ÖаÑcydiasubstrateÎļþcopy³öÀ´ÖØÃüÃûΪlibsunstrate.dylib£¬ºÍÎÒÃǵÄdylibÒ»Æð·ÅÈëwechat.appĿ¼ÖÐ

×îºóʹÓÃinstall_name_toolÃüÁîÐ޸Ķ¯Ì¬¿âµÄ·¾¶°ÑËüÖ¸Ïòapp¶þ½øÖÆÎļþµÄͬ¼¶Ä¿Â¼

ÖÆ×÷°²×°°ü

½â¾öÁËÒÀÀµÎÊÌ⣬ȻºóÒª°ÑÎÒÃǵĿâ×¢Èëµ½¶þ½øÖÆweixinµÄ¶þ½øÖÆÎļþ£¬ÕâÒ»²½Ê¹ÓÿªÔ´µÄinsert_dylib¼´¿É £¨@executable_pathÊÇÒ»¸ö»·¾³±äÁ¿£¬Ö¸µÄÊǶþ½øÖÆÎļþËùÔڵķ¾¶£©

insert_dylibÃüÁî¸ñʽ£º
./insert_dylib ¶¯Ì¬¿â·¾¶ Ä¿±ê¶þ½øÖÆÎļþ

//×¢È붯̬¿â
./insert_dylib [@executable_path](/user/name/executable_path)/wxmsgpreview.dylib WeChat
//´ò°ü³Éipa
xcrun -sdk iphoneos PackageApplication -v WeChat.app -o ~/WeChat.ipa

×îºóʹÓÃÓÃÆóÒµÖ¤Êé»òÕß¿ª·¢Ö¤ÊéÇ©Ãû¶ÔipaÖØÐÂÇ©Ãû£¬¾Í¿ÉÒԷŵ½×Ô¼ºµÄÇþµÀ½øÐз¢²¼ÁË£¡

½áÓï

ͨ¹ý×ÛºÏÔËÓø÷ÖÖ¹¤¾ß£¬½øÐо²Ì¬ºÍ¶¯Ì¬·ÖÎö£¬ÎÒÃÇͨ¹ýÊµÕ½ÆÆ½âÁË΢ÐŵÄÇÀºì°üÂß¼­£¬Ã÷°×ÁËÈëÇÖ³£ÓõŤ¾ß£¬ÉÏÃæµÄÇÀºì°ü´úÂ뻹Óкܶà¸Ä½øÖ®´¦£¬±ÈÈçûÓÐÅжϺì°üµÄ·¢ËÍÕßÊDz»ÊÇ×Ô¼º¡¢Ò²Ã»ÓÐÅжϺì°üÀïÃæµÄÎÄ×ÖÊDz»ÊÇÇÀ´íÈý±¶£¬ÓÐÐËȤµÄͯЬ¿ÉÒÔ³¢ÊÔÓÅ»¯Ò»Ï£¡

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

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ

ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ