[AGE引擎] Eushully ASProtect 脱壳
AGE引擎的ASProtect
主要在2013年左右的版本上,2017年的天結いキャッスルマイスター
已经采用了PlayDRM
。
ASProtect
主要加在 AGE.EXE
和 AGERC.DLL
上,前者为游戏主程序,后者为游戏的资源DLL(标题菜单,模态窗口),
AGERC.DLL
容易被加壳软件识别为ASPack
,其实内部的IAT
是加密的。
网上大多数讲解ASProtect
脱壳的教程都是老的1.xx
版本,其IAT
没有什么特殊的处理,
AGE
的加的是2.xx
的版本,FF15
的Call
被VM了,其它代码段未见特殊处理,未见OEP
虚拟化或被偷。
ASProtect
由于比较古老,很多人研究,存在大量的脚本,接下来我们利用脚本对AGE的主程序和资源DLL进行脱壳即可。
准备工作
目标游戏
魔導巧殻
(1.03更新补丁,AP,都无所谓,不改变原本的EXE和DLL)
环境
Windows XP Pro SP3
Ollydbg
(这里选用吾爱破解的版本,其它版本可能需要自行添加 ODbgScript
,OllyDump
插件)
Scylla x86 v0.9.8
ASProtect unpaker script by VolX 1.15E
(1.15F也可以,注意Asprvm8s.bin
这个文件必须要有)
比较懒的可以直接下,吾爱破解工具包,除了脚本都有。
脚本和脱壳/未脱壳的文件在此处
修改脚本
由于脚本需要用到 Asprvm8s.bin
文件,里面的路径是固定的,要么把文件放到脚本默认的路径中,要么自行修改路径,总共两处,在Aspr2.XX_unpacker_v1.15E.osc
里搜索 Asprvm8s.bin
字段就可以找到
此处我修改到C盘根目录,同时把 Asprvm8s.bin
放到C盘根目录下。
开脱
脚本文件
和游戏EXE
和DLL
拽入虚拟机中
打开Ollydbg
把EXE
拽进去,提示代码压缩加密,点否即可。
如果没停在同样的窗口,点一下菜单栏边上的C按钮即可
在菜单栏,选择插件,选择ODbgScript
,选择运行脚本,打开
打开后会自动运行,请确认脚本中的路径已经修改,或 Asprvm8s.bin
文件已经放置在对应的路径下,否则在运行脚本的过程中,会直接卡住。
如果脚本没有运行,可以点窗口界面内的缩小窗口,在刚刚的ODbgScript
插件里找到脚本运行窗口,在脚本窗口按下空格,或右键--继续来运行脚本
运行结束后,如图所示,提示没有被偷代码,和让我们检查Log窗口
的IAT信息
,点确认即可。
按下菜单栏下边的的 l 按钮
,来打开Log窗口
,查看OEP
和IAT
的相关详细,如果没有则脚本无效,或者有别的问题
确认存在OEP
和IAT
信息,然后,选择菜单栏,插件
--->OllyDump
--->脱壳在当前调试的进程
在OllyDump
窗口,确认OEP的地址
和OEP的RVA
,然后点击获取EIP作为OEP
,再次确认地址,和Log窗口
的信息对应,则点击脱壳
,然后输入新的文件名保存即可。在保存之前可以看到,多出来个de_AGE.exe
的文件,不必理会这个文件,稍后可以自行删除。保存途径可能会卡住几秒,等待即可。
把脱壳后的EXE
复制回物理机,运行查看效果。
如果出现在物理机无法运行,虚拟机正常运行的情况,请尝试以下步骤。
重新操作到脚本运行完成和打开Log窗口
查看OEP和IAT信息
的步骤
打开Scylla x86
,选择当前需要脱壳的进程,并再次确认OEP和RVA信息
填入OEP地址
,IAT地址
,IAT大小
,然后点击获取输入表,可以看到下图输入表全部绿色勾,表示正常获取。
此时点击 显示无效函数
和显示可疑函数
,如果只有一个IsDialogMessageA
为可疑,则无需理会,如果有大量可疑和无效,则脚本不成功。
然后点击转储到文件
,默认命名不必修改,直接保存即可
接着点击修复转储后的文件
,找到刚刚转储的文件打开即可
此时转储文件同目录下会多出一个后缀为_SCY.exe
的新文件,复制到物理机运行查看效果
至此,基本Eushully ASProtect 的主程序都可以正常脱壳,如不行,就换Import REConstructor
继续尝试。
AGERC.DLL
的脱壳和上面一样,区别在于,DLL是无法直接运行,所以DLL在OD里其实是挂在一个loader
上的,如果用Scylla x86
脱壳,需要选择loaddl.exe
程序,然后选取DLL
,然后 修复转储后的文件
应该选择de_AGERC.DLL
,而不是直接修复Scylla的转储,之后操作一样。