ningkong 发表于 2023-1-7 15:37:14

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

本帖最后由 ningkong 于 2023-1-7 15:41 编辑

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

环境:

MacOS Ventura 13.1
WeChat7.0.2
IDA Pro7.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.2WAPackageInfoCacheLogic unpackPkgWithFilePath:unpackLib 的F5代码 Line54-- Line98

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 )                                 
    {                                                            
      +(                        
      &OBJC_CLASS___iConsole,                     
      "logWithLevel:module:errorCode:file:line:func:format:",                     
      4LL,                     
      "WeAppError",                     
      0LL,
      "WAPackageInfoCacheLogic.mm",                           
      126LL,                              
      "-",   
      CFSTR("unpack error:%d"),            
      v16);                     
      v15 = 0;                     
    }                              
    sub_1030E8520(&v18);               
}         
else      
{   //
    +(      
      &OBJC_CLASS___iConsole,               
      "logWithLevel:module:errorCode:file:line:func:format:",
      4LL,                     
      "WeAppError",            
      0LL,                  
      "WAPackageInfoCacheLogic.mm",
      117LL,            
      "-",
      CFSTR("pkgData is empty"));
    v15 = 0;
}

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





飞天梦 发表于 2023-1-7 23:50:56

谢谢楼主的分享
页: [1]
查看完整版本: 12章小程序格式分析WeChat版本问题,分析之二