Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3261
  • 博文数量: 2
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-25 17:07
文章分类
文章存档

2014年(1)

2013年(1)

我的朋友
最近访客

分类: 其他平台

2014-06-06 16:42:45

如何用OllyDBG跟踪EXECryptor v1.53





EXECryptor v1.53是泛亚娱乐|应用SEH反跟踪最完善的一个壳,在SEH处理中对DR0DR7等调试存放器进行清零并修正EIP寄存器来实现跳转。如果对SEH缺少完整的懂得,跟踪起来几乎是一头雾水。
一、SEH温习
1、树立SEH的框架
ASSUME FS:NOTHING ;否则Masm编译报错
push offset SEH_Handler
push fs:.0.
mov fs:.0.,esp

2、传递给异常处理例程的参数
传递给final型的参数,只有一个即指向EXCEPTION_POINTERS构造的指针, EXCEPTION_POINTERS定义如下:
EXCEPTION_POINTERS STRUCT
pExceptionRecord DWORD
ContextRecord DWORD
EXCEPTION_POINTERS ENDS
执行时堆栈结构如下:
esp ptEXCEPTION_POINTERS
而后履行call _Final_Handler

留神堆栈中的参数是指向EXCEPTION_POINTERS 的指针,而不是指向pExceptionRecord的指针
以下是EXCEPTION_POINTERS两个成员的具体结构
EXCEPTION_RECORD STRUCT
ExceptionCode DWORD ;异常码
ExceptionFlags DWORD ;异常标记
PExceptionRecord DWORD ;指向另外一个EXCEPTION_RECORD的指针
ExceptionAddress DWORD ;异常产生的地址
NumberParameters DWORD ;下面ExceptionInformation所含有的dword数量
ExceptionInformation DWORD EXCEPTION_MAXIMUM_PARAMETERS dup()
EXCEPTION_RECORD ENDS
;EXCEPTION_MAXIMUM_PARAMETERS 15

详细参数说明:
ExceptionCode 异常类型,SDK里面有良多类型,但你最可能碰到的多少品种型如下:
C0000005h读写内存抵触
C0000094h非法除0
C00000FDh堆栈溢出或者说越界
80000001h由Virtual Alloc建破起来的属性页矛盾
C0000025h不可连续异常,程序无奈恢复执行,异常处理例程不应处置这个异常
C0000026h在异常处理进程中体系应用的代码,假如系统从某个例程莫名巧妙的返回,则呈现此代码,例如调用RtlUnwind时不Exception Record参数时发生的异常填入的就是这个代码
80000003h调试时因代码中int3中止
80000004h处于被单步调试状况
注:也能够本人定义异样代码,遵守如下规矩:

位: 31~30 29~28 27~16 15~0

阅读(330) | 评论(0) | 转发(0) |
0

上一篇:Windows Server 2012 简体中文正式版微软官

下一篇:没有了

给主人留下些什么吧!~~