首页
社区
课程
招聘
[原创]分析XX助手获取Lua脚本明文
发表于: 2015-4-29 15:06 24656

[原创]分析XX助手获取Lua脚本明文

2015-4-29 15:06
24656

您可以直接下载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算法



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

3.        动态调试

手机端运行:

Mac端运行:


4.下断
       

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



5.继续分析


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



6.输出数据


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

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


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 3
支持
分享
最新回复 (19)
雪    币: 16468
活跃值: (2493)
能力值: ( LV9,RANK:147 )
在线值:
发帖
回帖
粉丝
2
mark.
2015-4-29 15:29
0
雪    币: 2323
活跃值: (4113)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
3
学习,赞一个,嘿嘿
2015-4-29 15:40
0
雪    币: 45
活跃值: (27)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
good job
2015-4-29 16:57
0
雪    币: 585
活跃值: (573)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
5
x23是什么东西
2015-4-29 17:09
0
雪    币: 2443
活跃值: (464)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
ARM64 的 寄存器
2015-4-29 17:13
0
雪    币: 839
活跃值: (2837)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
7
那个算法是公开的,直接windows解
2015-5-24 16:01
0
雪    币: 212
活跃值: (126)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
com.apple.backboardd 为什要hook这个进程?
2015-6-11 16:52
0
雪    币: 212
活跃值: (126)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
怎么才能动态调试DYLIB.一定要写TWEAK吗?
2015-6-16 11:44
0
雪    币: 507
活跃值: (130)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
10
然而,可以直接对程序中的so进行分析,动态调试直接dump明文lua脚本的。
2015-6-16 12:02
0
雪    币: 110
活跃值: (527)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
11
表示看不懂。
2015-6-16 13:18
0
雪    币: 2443
活跃值: (464)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
。。。。文章一直是在dylib中呢~~
写个tweak是为了实验一下
2015-6-17 17:29
0
雪    币: 8
活跃值: (219)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
有些游戏,我注入后,发现游戏就会自动退出。是因为游戏有对MSHookFunction有检测,还是因为我Tweak代码有错?
#import "substrate.h"

static int (*org_func)();

int replace_func()
{
    NSLog(@"this is the my hooked method");
    return org_func();
}

%ctor
{
  @autoreleasepool
  {

  // 此为Hook地址。能Hook住,但是游戏却打不开了
    unsigned long fuc_addr1 = 0x4AF840 | 0x01 ;
    MSHookFunction((void *)fuc_addr1,(void *)&replace_func,(void **)&org_func);
    }
}

这个Tweak能Hook,每打开游戏,在syslog里可以发现多输入了一行“this is the my hooked method”。但是游戏却会马上退出。
2015-9-12 14:40
0
雪    币: 2443
活跃值: (464)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
能进入 replace_func() 能初步说明没有anti-dylib
这个你只需lldb挂上去看看就知道了
2015-9-14 09:53
0
雪    币: 10
活跃值: (109)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
顶一个!!!!
2015-9-15 10:27
0
雪    币: 949
活跃值: (119)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
16
还看不懂,。。。。。。。。。
2015-9-20 20:54
0
雪    币: 573
活跃值: (1009)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
调用参数不正确或返回值不正确。
2015-12-10 17:22
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
赞,学习了
2015-12-16 13:19
0
雪    币: 27
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
太需要了 !!正在学这个呢。。。
2016-1-8 09:41
0
雪    币: 235
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
非常不错谢谢
2017-9-15 14:18
0
游客
登录 | 注册 方可回帖
返回
//