iVocaloid论坛
标题:
【反工】【又是水表文= =】对V3job插件lua解释器的初步解析
[打印本页]
作者:
Zleepwalking
时间:
2013/6/2 17:30
标题:
【反工】【又是水表文= =】对V3job插件lua解释器的初步解析
我觉得V3的lua解释器挺好玩,就是api太少了不过瘾,于是:
我拿上次写的那个批量调教洛天依的job开刀。
把定义挪到前面,开头改成:
function main(processParam, envParam)
local msgboxret
local LyricNum
local LyricCycle
local Interval
local Lyric1
local Lyric2
local PitchCycle
local LengthChange1
local LengthChange2
local CyclePatterns = {60, 60, 60, 60}
local temppattern
msgboxret = VSMessageBox("abc", 0)
msgboxret = VSMessageBox(msgboxret, 0)
ret, temppattern = VSDlgGetStringValue("CyclePattern1")
VSMessageBox(ret, 0)
复制代码
正常运行的话会出来一个abc的msgbox,然后又出来一个1的msgbox(运行成功的返回值),然后再出来一个0的返回值。
Vocaloid3实在太庞大了,我在DSCL3里半天找不到可疑的导出函数名,干脆在user32的MessageBoxW下断点。
运行job,成功停在了MessageBoxW,几步跟出,找到了这个地方:
2013/6/2 17:09 上传
下载附件
(21.4 KB)
这貌似是lua解释器的函数调用器。通过ECX的值取得被调用函数的地址然后Call。
在Msgbox的时候,call的地址是VOCALOID.004FCED0
在GetStringValue的时候,call的地址是VOCALOID.004FCD70
我跟入004FCD70,
2013/6/2 17:14 上传
下载附件
(39.6 KB)
跑到这里的时候,EAX指向了"CyclePattern1",这是传入的参数。
继续跑……
好吧。。。玩脱了。。。没找到什么有价值的东西,因为我还没有初始化对话框,这个函数执行应该会失败。。。
反正我后面还调用了好几次这个东西。。我把调用器的断点去掉,给GetStrVal加了断点,继续……
2013/6/2 17:17 上传
下载附件
(11.58 KB)
好嘞。。恶心的对话框出来了,叫我给它填参数。。。我就把Lyric1随便填了个东西,继续……
2013/6/2 17:19 上传
下载附件
(36.15 KB)
好嘞。。中断卡住了,单步,到这里又遇见了传入参数,继续单步……
2013/6/2 17:20 上传
下载附件
(41.66 KB)
跑到这一步,eax变成了刚才输入的东西,说明真正的函数可能在红框内执行完毕,我转到EAX的地址,把eawfewfw改掉:
2013/6/2 17:22 上传
下载附件
(5.74 KB)
水表。。。。
我把中断去掉,运行:
2013/6/2 17:25 上传
下载附件
(24.73 KB)
于是就出来十个水表,不是十个eaw什么东西的……
这只是个很简单的演示,找到了改变解释器GetStringVal函数的方法。
我的想法是在两个字符串出现的地方跳出去,
执行我们自己的函数,然后改掉return的值。
这样就可以用原有的api实现更多的功能了……
我们甚至可以开发一种语法,让job可以调用windows api什么的,像这样:
ret, voidvar = VSDlgGetIntValue(".push 1000")
ret, ptr = VSDlgGetIntValue(".invoke kernel32.malloc')
然后我们自己的怪异的迷你的不完善的解释器,往内存里压了1000这个参数,去申请了1000个字节大的内存。。。。。
↑先记下来,有空继续研究吧。
图片附件:
GSV2.png
(2013/6/2 17:19, 36.15 KB) / 下载次数 4
http://bbs.ivocaloid.com/forum.php?mod=attachment&aid=NzIxMDJ8MzAwYzUwMjB8MTc0OTUwNTA0NHwwfDA%3D
图片附件:
NGS.png
(2013/6/2 17:17, 11.58 KB) / 下载次数 5
http://bbs.ivocaloid.com/forum.php?mod=attachment&aid=NzIxMDF8NGUwZmI0YTl8MTc0OTUwNTA0NHwwfDA%3D
图片附件:
GSV.png
(2013/6/2 17:14, 39.6 KB) / 下载次数 3
http://bbs.ivocaloid.com/forum.php?mod=attachment&aid=NzIxMDB8YjFiYTlmMTV8MTc0OTUwNTA0NHwwfDA%3D
图片附件:
Caller.png
(2013/6/2 17:09, 21.4 KB) / 下载次数 4
http://bbs.ivocaloid.com/forum.php?mod=attachment&aid=NzIwOTl8MTBlOTAzN2F8MTc0OTUwNTA0NHwwfDA%3D
图片附件:
EAWFEWFW.png
(2013/6/2 17:20, 41.66 KB) / 下载次数 3
http://bbs.ivocaloid.com/forum.php?mod=attachment&aid=NzIxMDN8NGFkZDViNjN8MTc0OTUwNTA0NHwwfDA%3D
图片附件:
sb.png
(2013/6/2 17:22, 5.74 KB) / 下载次数 4
http://bbs.ivocaloid.com/forum.php?mod=attachment&aid=NzIxMDR8YTAxOTM2MTF8MTc0OTUwNTA0NHwwfDA%3D
图片附件:
shuibiao....png
(2013/6/2 17:25, 24.73 KB) / 下载次数 5
http://bbs.ivocaloid.com/forum.php?mod=attachment&aid=NzIxMDV8MjliZTlmNTJ8MTc0OTUwNTA0NHwwfDA%3D
作者:
rgwan
时间:
2013/6/2 17:47
V3各种漏洞。
作者:
vIp.禁區
时间:
2013/6/3 01:15
哦这个想法不错!对了你是计算机专业吗?
作者:
Zleepwalking
时间:
2013/6/3 08:40
vIp.禁區 发表于 2013/6/3 01:15
哦这个想法不错!对了你是计算机专业吗?
高一狗。。。
v3只是天然呆而已。。。反编不难
作者:
Zleepwalking
时间:
2013/6/3 17:23
发现此项技术没啥用= =
整了半天总算会用os.execute了……也会给它加命令行参数了……只要把路径中的/替换成//就可以
如果不是很注重效率,调api完全可以执行外部程序
欢迎光临 iVocaloid论坛 (http://bbs.ivocaloid.com/)
Powered by Discuz! X2