首页
社区
课程
招聘
[原创]手脱穿山甲1.xx-2.xx by Goblin Locksmith
发表于: 2012-6-20 15:51 5966

[原创]手脱穿山甲1.xx-2.xx by Goblin Locksmith

2012-6-20 15:51
5966
手脱穿山甲1.xx-2.xx by Goblin Locksmith

  前言:大家好,我是“地精锁匠”,是个破解菜鸟。昨天看了黑鹰破解教程第15课的视频(教程是用断GetModuleHandleA和GetCurrentThreadId的方法来破解的),对其中手脱穿山甲1.xx-2.xx壳的办法非常不理解,决定根据自己的理解来手脱此壳。经过1天的努力,目标程序终于告破。在此共享出来帮助破解新手理解脱此壳的原理。
  目标程序:黑鹰破解教程第15课的桌面天气秀
  目标马甲:穿山甲1.xx-2.xx
  脱壳思路:从无效指针指向的内存地址入手,对这些地址上硬件写入断点。断下后,分析代码,通过单步跟踪得出某个函数是加密IAT的函数,然后从该函数中修改Magic Jump,然后一步到OEP。
  操作步骤:
  1、根据2次内存断点法,直接到达OEP。忽略所有异常,打开内存镜像,在程序的.rsrc节按F2下断点,Shift+F9运行。断下来后,在程序的CODE节按F2下段,Shift+F9运行,直接到达OEP:004D12D4。
  2、打开ImportREC_fix,选中调试的进程,输入OEP,获取输入表,如下图。从输入表中的数据可以推出该程序是部分加密IAT,RVA:000DB190这项就是加密的IAT项目。所以从这个加密项入手开始调查Magic Jump。这里可以看出IAT的起始RVA是00DB168。
  3、重载程序,在左下角的数据窗口按Ctrl+G输入004DB190,按回车。Shitf+F9两次,这时断在00C2A96F处(记得删除硬件断点)。单步走,发现从00C2A6FD到00C2A97E的地址是在为程序的IAT进行修改。分析如下: [EBP-186C]里存储的是本次要取得入口地址的API函数的名称字符串。[EBP-136C]里存储的是下一次要取得入口地址的API函数的名称字符串。地址00C2A8FB---00C2A902这4条指令是利用本次要取得API函数入口地址的名称字符串指针计算出下一次要取得API函数入口地址的名称字符串指针。地址00C2A915处的函数是类似GetProcAddress的函数(注意看图片的堆栈你就懂了),它取得API函数入口地址或者是加密后地址。得到函数的入口地址或加密地址后,按顺序存在从IAT(地址:004DB168)上。综上所述,Magic Jump肯定在00C2A915这个函数里面。此时,对00C2A903下硬件执行断点,关闭OD程序。
  4、打开OD(第三步设置的硬件断点依然有效的),加载目标程序(此OD代号XX)。再打开个OD,再次加载目标程序(此OD代号YY)。双开OD是为了对比,以便找出Magic Jump。对XX按Shift+F9断在00C2A903,此时看到eax寄存器显示LeaveCriticalSection。对YY按Shift+F9断在00C2A903,再重复按Shift+F9键9次,可以看到eax寄存器显示GetVersion,单步走到地址00C2A96D处,看说明可以得知本次操作取得的入口地址写入了004DB18C中,那说明下一次就是写入004DB190了。所以再按Shift+F9,此时eax寄存器显示GetCurrentThreadId。
  5、XX和YY同时单步走(记得要F7进00C2A915处的函数哦!),一直跟踪,直到地址00C15C16处,XX在这里没有实现跳转,而YY在这里实现了跳转。所以可以肯定这里就是Magic Jump。
  6、关闭XX。把YY地址00C15C16处的代码用两个NOP来代替。记得要删除硬件断点哦!
  7、在反汇编窗口按Ctrl+G,输入第一步找到的OEP:004D12D4,按回车。对004D12D4下硬件执行断点,按Shift+F9,程序直接断在这里了。
  8、打开LordPE对程序进行脱壳,产生Unpack.exe
  9、打开ImportREC_fix,输入OEP,获取输入表,你会惊奇的发现,和第二步获取的输入表相比,无效指针只有16个了(这16个指针确实是无效指针)。直接剪切它们,然后转存修复Unpack.exe。
  10、运行程序,OHYE,大功告成。

  最后顺便请问下,我想插入图片,但是我看图片都是要链接的。。就不能从本地上传啊?
  附件是两部分组成的,需要减压出来放在同一个文件夹才能使用哦!

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 5047
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习一下...对于我来说,看到一切手脱的都是高玩...
2012-6-20 16:53
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
3
前排占座……
2012-6-20 18:07
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
4
最后顺便请问下,我想插入图片,但是我看图片都是要链接的。。就不能从本地上传啊?


你可以整理成word文档上传到附件。
2012-7-15 02:51
0
雪    币: 47147
活跃值: (20380)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
上传图片参考这帖:http://bbs.pediy.com/showpost.php?postid=292659

建议尽量将图片上传到论坛服务器,方便论坛精华集的制作。
2012-7-17 13:49
0
游客
登录 | 注册 方可回帖
返回
//