论坛风格切换
正版合作和侵权请联系 sd173@foxmail.com
 
  • 帖子
  • 日志
  • 用户
  • 版块
  • 群组
帖子
购买邀请后未收到邀请联系sdbeta@qq.com
  • 3799阅读
  • 1回复

[教程资料]逆向XX助手获取Lua脚本明文 [复制链接]

上一主题 下一主题
离线pony8000
 

发帖
53251
今日发帖
最后登录
2024-05-04
只看楼主 倒序阅读 使用道具 楼主  发表于: 2015-04-29 22:01:10



您可以直接下载PDF文档:
逆向XX助手获取Lua脚本明文.zip.

==========================================================
今天来看看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>

恩,明白了是hook了backboardd进程

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

[attachment=207336]

分析了一下,X23寄存器指向输出缓冲区

3.  动态调试

手机端运行:
[attachment=207337]
Mac端运行:
[attachment=207338]

4.下断
  
[attachment=207339]
此时在目标程序上点击“播放”,让脚本载入

[attachment=207340]

5.继续分析
[attachment=207341]

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

[attachment=207342]

6.输出数据
[attachment=207343]

此时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);    NSString *str = [NSString stringWithCString:outBuf encoding:NSUTF8StringEncoding];        //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了。。
[ 此帖被pony8000在2015-04-29 22:01重新编辑 ]
精品软件:百度搜闪电软件园  最新软件百度搜:闪电下载吧
有问题联系 sdbeta@qq.com
离线power3

发帖
1469
今日发帖
最后登录
2024-05-04
只看该作者 沙发  发表于: 2021-09-13 07:53:30
先收蒧下,谢谢分享。