一个极其隐秘只有...吧 关注:2,376贴子:11,097
  • 5回复贴,共1

东方红魔乡脱壳

只看楼主收藏回复

既然都把永夜抄和妖妖梦的资源破解了我就把红魔乡也破解了吧
红魔乡是有壳的,用PEID看了下是ASProtect 1.23 RC4 - 1.3.08.24 -> Alexey Solodovnikov
虽然带壳也能调试但是每次要跳过前面那堆异常很麻烦而且不能用IDA
作为一个逆向爱好者就当脱壳练习把红魔乡的壳脱了吧


1楼2015-04-28 18:55回复
    接下来是修复IAT
    用ImportREC自动跟踪都失败了,所以我决定手动修复,改用Scylla
    然后就是看无效的指针,在OD里面跳过去看反汇编代码猜是哪个API,然后在Scylla里手动指定
    (有70多个无效指针,工程量不小啊/_\)


    3楼2015-04-28 19:05
    回复
      这个壳对IAT的保护就是自己偷掉(实现)API的代码然后添加些花指令
      举几个例子

      补充个知识,push后面跟retn相当于jmp到这个地址
      这个很容易看出是kernel32.GetOEMCP
      -----------------------------------------------------------------------------------------------

      这个就有点难度,你以为是kernel32.CreateRemoteThreadEx么
      注意前面有个push 77EFDD92,就是说执行完kernelba.CreateRemoteThreadEx后会返回到77EFDD92这个地址

      这个才是对应的真正的API,77EFDD72有个导出名称kernel32.CreateThread
      就是说这个壳是模拟kernel32.CreateThread调用了kernelba.CreateRemoteThreadEx
      --------------------------------------------------------------------------------------------

      这个更难了,自己看注释,不要以为是VirtualQuery


      就是相当于模拟SetUnhandledExceptionFilter调用77EFF670这个函数,而这个函数又调用了VirtualQuery
      -------------------------------------------------------------------------------------------------

      这个我实在看不出是什么。。。
      整个函数作用是返回输入的参数
      所以我直接把调用这个函数的地方改为mov eax了


      4楼2015-04-28 19:16
      回复
        还有几个是ntdll的API,但是一块IAT应该只对应一个库,而且我下了断点看程序也没有调用这几个API所以就用kernel32的功能相同的API代替了
        把无效指针都指定好对应API后用Scylla修复转储,运行成功,脱壳完毕


        来自Android客户端5楼2015-04-28 19:25
        回复
          脱好壳的红魔乡下载地址,附IAT表
          http://pan.baidu.com/s/1jG9sHBC
          为了方便调试我还去掉了防双开
          魔装少女就是本大爷!——相川步


          6楼2015-04-30 22:54
          回复
            吧主,有时间吗?帮我脱壳一个文件!


            IP属地:陕西7楼2017-05-09 17:48
            回复