本文章由AyamiKaze首发在论坛平台,转载请标明出处
最近拆一个椎名里緒(以下称RioShiina)的游戏。众所周知RioShiina是出了名的难拆,不仅有垃圾代码和硬编码数据来反IDA的还原伪代码的功能,加密也是不常见的浮点数加密。不过今天不说这些,今天主要讲在2.50版本下出现的一个RioShiina自己写的壳。
一、初探启动点。
我手上这个样本的入口点事这样的
可以看到,他压了一堆寄存器入栈,来保护现场,随后传入了text段的开始以及一些参数到一个函数里。然后把rdata段也传了进去。基本可以猜测,0x00EF2450是重要函数。
二、解密text段
基本上我们可以猜测,text段的解密就在0x00EF2450这里面。为了验证这一点,我们在text段下内存写入断点。
可以看到,这一段对dl做了一部分操作,再塞回去,应该是解密了。jne是循环解密。我们可以直接跳出。
这时候我们看text段,就是解密好的代码段了。
三、定位OEP
其实到这一步已经很简单了,再对text段下F2断点,跑起来就能执行。但你仔细分析下面的代码依然可以发现,他直接硬编码了jmp到oep。
下面指的那个就是硬跳转
四、总结
这是一个十分典型的加密壳,没有代码混淆,也没有复杂的算法,非常适合新手来练手来熟悉壳的操作和调试器的操作。
更多【 椎名里緒(RioShiina)2.50 脱壳教程】相关视频教程:www.yxfzedu.com