注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

分析XX助手获取Lua脚本明文  

2015-09-08 13:25:49|  分类: ios开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

链接:http://www.dllhook.com/post/76.html

今天来看看xx助手的lua脚本解密

1.       找寻线索

/Library/MobileSubstrate/DynamicLibraries下面看到 XXScreenShot.dylib XXScreenShot.plist

 

Plist内容如下

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

         <key>Filter</key>

         <dict>

                   <key>Bundles</key>

                   <array>

                            <string>com.apple.backboardd</string>

                   </array>

         </dict>

</dict>

</plist>

 

恩,明白了是hookbackboardd进程

 

2.       静态分析

IDA 载入 XXScreenShot.dylib   --- 找到loadLuaData函数,分析发现是 tea算法

 分析XX助手获取Lua脚本明文 - 熊猫正正 - 熊猫正正的博客

 

分析了一下,x23寄存器是输出缓冲区

 

3.       动态调试

手机端运行:


分析XX助手获取Lua脚本明文 - 熊猫正正 - 熊猫正正的博客

Mac端运行:

分析XX助手获取Lua脚本明文 - 熊猫正正 - 熊猫正正的博客

4.下断



分析XX助手获取Lua脚本明文 - 熊猫正正 - 熊猫正正的博客

此时在目标程序上点击播放,让脚本载入

分析XX助手获取Lua脚本明文 - 熊猫正正 - 熊猫正正的博客

 

5.继续分析



分析XX助手获取Lua脚本明文 - 熊猫正正 - 熊猫正正的博客


 

由于前面用IDA分析过x23寄存器保存了输出数据,那么我们直接在0x103d12cdc下断点,此时x23已经得到了数据,下好断点后,继续运行,如下图,顺利中断


分析XX助手获取Lua脚本明文 - 熊猫正正 - 熊猫正正的博客



6.输出数据

分析XX助手获取Lua脚本明文 - 熊猫正正 - 熊猫正正的博客

 

此时lua脚本已经完整解密了!!!

 

7.编写tweak

我们可以写个tweak来抓取脚本

 

/*

 获取xx助手lua脚本

 By 飘云/P.Y.G

 2015-04-29

  http://www.chinapyg.com

*/

 

#import <substrate.h>

#import <pthread.h>

 

 

// 原始函数

signed int (*orig_XxteaDecrypt)(const char *inBuf, size_t bufLen, const char *key, size_t a4, char *outBuf, int a6);

 

signed int  myXxteaDecrypt(const char *inBuf, size_t bufLen, const char *key, size_t a4, char *outBuf, int a6)

{

    signed int  ret = orig_XxteaDecrypt(inBuf, bufLen, key, a4, outBuf, a6);

    NSLog(@"[++++]%s", outBuf);

    return ret;

}

 

void *threadFun(void*)

{

    while (true)

    {

        void *lpFun = ((void*)MSFindSymbol(NULL, "__Z12XxteaDecryptPKciS0_iPci"));

        if (lpFun)

        {

            NSLog(@"[++++]lpFun = %p", lpFun);

            MSHookFunction(lpFun, (void*)myXxteaDecrypt, (void**)&orig_XxteaDecrypt);

            NSLog(@"[++++]orig_XxteaDecrypt = %p", orig_XxteaDecrypt);

            break;

        }

    }

    return NULL;

}

 

static __attribute__((constructor)) void piaoyun()

{

    // 用线程来查找,以免xxdylib后加载而找不到函数

    pthread_t th;

    int err = pthread_create(&th, NULL, threadFun, NULL);

    if (err != 0)

        printf("[++++]pthread_create error: %s\n", strerror(err));

   

    NSLog(@"[++++]inject success!!!!");

}

 

 

8Tweak演示

分析XX助手获取Lua脚本明文 - 熊猫正正 - 熊猫正正的博客

 


除非特别注明,本站所有文字均为原创文章,作者:piaoyun

  评论这张
 
阅读(84)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017