飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2639|回复: 1

[提问] 12章小程序格式分析WeChat版本问题,分析之二

[复制链接]

该用户从未签到

发表于 2023-1-7 15:37:14 | 显示全部楼层 |阅读模式
本帖最后由 ningkong 于 2023-1-7 15:41 编辑

鉴于得到坛主的肯定, 所以继续分析, 运用前面几章学到的知识,继续巩固分析

环境:

MacOS Ventura 13.1
WeChat  7.0.2
IDA Pro  7.0 for Mac


经过对比发现,
WeChat 6.7, 7.0, 7.1, 7.2, 和书中截图的代码绝对一致,  代码从 line 54--line 98 完全一致, 细微差别已经从后面注释进行了说明
WeChat 7.3, 7.4,7.5, 7.7, 7.8, 7,9 结构基本保持一致,个别行数有差异, 所以为了还原书中调用, 从结构的最后一个版本进行!  Wechat 7.2 用来分析。
  
埋坑:
1, 可能的 官方的自定义的文件结构在 6.7 到 7.9 之间并没有做太大的改变。 需要证明。

Wechat 7.0.2  WAPackageInfoCacheLogic unpackPkgWithFilePath:unpackLib 的F5代码 Line54-- Line98

[C] 纯文本查看 复制代码
  v10 = objc_msgSend(&OBJC_CLASS___NSData, "dataWithContentsOfFile:", v5);    //读取文件, 书中的 v5位置出现的filePath 并没出现在当中!  可能是系统环境不同导致的
  v11 = objc_retainAutoreleasedReturnValue(v10);
  objc_release(v7);
  v7 = (void *)v11;
LABEL_5:
  if ( objc_msgSend(v7, "length") )
  {
    sub_1030E8470(&v18);
    v12 = (void *)objc_retainAutorelease(v7);    
    v13 = objc_msgSend(v12, "bytes");    
    v14 = objc_msgSend(v12, "length");     
    sub_1030E85E0(&v18, v13, v14);        // 就是这里不一样,  AutoBuffer::Write(&a1, v13, (_int64)v14);
    v15 = 1;                                 
    v16 = sub_1005A4DEC(v4, &v18, 1LL);     //解压操作
    if ( (_DWORD)v16 )                                  
    {                                                             
      +[iConsole logWithLevel:module:errorCode:file:line:func:format:](                        
        &OBJC_CLASS___iConsole,                       
        "logWithLevel:module:errorCode:file:line:func:format:",                     
        4LL,                       
        "WeAppError",                      
        0LL,
        "WAPackageInfoCacheLogic.mm",                           
        126LL,                               
        "-[WAPackageInfoCacheLogic unpackPkgWithFilePath:unpackLib:]",   
        CFSTR("unpack error:%d"),              
        v16);                     
      v15 = 0;                       
    }                               
    sub_1030E8520(&v18);               
  }           
  else      
  {   //
    +[iConsole logWithLevel:module:errorCode:file:line:func:format:](      
      &OBJC_CLASS___iConsole,                
      "logWithLevel:module:errorCode:file:line:func:format:",  
      4LL,                       
      "WeAppError",              
      0LL,                    
      "WAPackageInfoCacheLogic.mm",  
      117LL,              
      "-[WAPackageInfoCacheLogic unpackPkgWithFilePath:unpackLib:]", 
      CFSTR("pkgData is empty")); 
    v15 = 0;  
  }


和书中Line 54 ---Line 98 的对比





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

x
PYG19周年生日快乐!
  • TA的每日心情
    无聊
    昨天 06:10
  • 签到天数: 591 天

    [LV.9]以坛为家II

    发表于 2023-1-7 23:50:56 | 显示全部楼层
    谢谢楼主的分享
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表