飘云 发表于 2015-4-29 14:10:35

逆向XX助手获取Lua脚本明文 -- By 飘云

今天来看看xx助手的lua脚本解密1.      找寻线索/Library/MobileSubstrate/DynamicLibraries下面看到 XXScreenShot.dylibXXScreenShot.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>
恩,明白了是hook了backboardd进程
2.      静态分析IDA 载入 XXScreenShot.dylib


分析了一下,x23寄存器是输出缓冲区
3.      动态调试手机端运行:
Mac端运行:
4.下断         此时在目标程序上点击“播放”,让脚本载入

5.继续分析

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

6.输出数据

此时lua脚本已经完整解密了!!!
7.编写tweak我们可以写个tweak来抓取脚本
/*
获取xx助手lua脚本
By 飘云/P.Y.G
2015-04-29
https://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 intmyXxteaDecrypt(const char *inBuf, size_t bufLen, const char *key, size_t a4, char *outBuf, int a6)
{
    signed intret = orig_XxteaDecrypt(inBuf, bufLen, key, a4, outBuf, a6);
    NSString *str = ;
   
    //NSLog(@"[++++]%s", outBuf);
    NSLog(@"[++++]%@", str);
    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()
{
    // 用线程来查找,以免xx的dylib后加载而找不到函数
    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!!!!");
}

8.Tweak演示


题后话:当然你也可以自己写个程序静态解密lua脚本,我不太喜欢折腾,就直接tweak了。。

PDF文档下载:



Dxer 发表于 2015-4-29 14:55:02

xy苹果助手?羡慕飘哥IOS等各方面的实力,mark一份学习

熊猫正正 发表于 2015-4-29 16:09:22

{:lol:}吊炸天,嘿嘿

erui 发表于 2015-4-29 19:33:11

经验之谈,学无止境呀!

0xcb 发表于 2015-4-29 23:21:16

本帖最后由 wx_f1Jji177 于 2015-4-29 23:24 编辑

运行时的Method Swizzling,很方便的就拿到方法参数,赞,玩coc的时候用过叉叉助手,

stucky 发表于 2015-5-2 22:22:10

太牛逼了。可以拿电脑上的lua脚本吗?

Michaelz 发表于 2015-6-9 08:48:37

这个tweak咋写呀,我写的咋打印不出来内容呢!

Michaelz 发表于 2015-6-9 08:49:08

谁有现成的编译完的分享下?

tree 发表于 2015-7-6 09:13:15

顶顶更健康{:soso_e102:}

倪美 发表于 2015-11-13 16:56:27

食我大雕{:soso_e104:}
页: [1] 2
查看完整版本: 逆向XX助手获取Lua脚本明文 -- By 飘云