首页
社区
课程
招聘
[求助]请问alexprotect这个壳的开始部分是怎么反调试的
发表于: 2013-5-29 18:55 3711

[求助]请问alexprotect这个壳的开始部分是怎么反调试的

2013-5-29 18:55
3711
想跟着别人的脚本学脱壳,然后选alexprotect来学习。但是碰到了一些问题。
  第一个不是很重要。就是有的版本od载入就直接运行了,加壳后的程序没有tls,不知道为何。但是在入口下断点还是能断下来。另外一个版本od载入能停在入口点。
  第二个问题是这个壳入口的地方就设置了seh,在seh的处理程序中,只是简单的让eip+2,这是壳的第一次seh处理程序。
  
00438029    8380 B8000000 0>add dword ptr ds:[eax+B8],2
00438030    33C0            xor eax,eax
00438032    EB 01           jmp short alexprot.00438035
前面后面都有花指令,主要就是[eax+b8]增加2,这是context里面的eip,然后把eax置0返回。

执行完seh的处理程序,就返回到ntdll的代码中去了,然后我alt+f9,返回用户领空。
这是返回的位置。
0043805F   /EB 03           jmp short alexprot.00438064
00438061   |EB 03           jmp short alexprot.00438066
00438063   |C7              ???                                      ; 未知命令
00438064  ^\EB FB           jmp short alexprot.00438061


发现多了一个一次性的硬件断点,地址是771D7005,显示是一次性断点,同时单步的时候直接再次返回系统领空去。之后的程序就是反复的这样进行SEH。
还有一点就是,如果把异常指令nop掉是能执行的,一旦nop,之后的一连串seh都没有了,而且接着就是rdtsc来检测调试器,应该是壳的正确流程了。不过,如果不用调试器,那么加壳后的程序还是会进行一大堆seh吧。这一点我不是很理解。
如果nop是不能运行的,后面应该有完整性的校验,因为前面没弄懂,所以还没看到后面去。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 135
活跃值: (63)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
随便找了一个crackme的程序加壳发现也是直接运行,好像win7的记事本加壳有点问题,空闲的大神可以来看看。不是cm啊,是这个壳,因为找的程序加壳都出问题了,就找了个cm加壳。
上传的附件:
2013-5-29 19:23
0
游客
登录 | 注册 方可回帖
返回
//