您所在的位置: 首页>>网络安全>>专家专栏>>子明>>

黑客老鸟讲逆向分析:逆向分析技术全揭秘(3)

http://netsecurity.51cto.com  2008-02-25 15:23  子明  51CTO.com  我要评论(0)
  • 摘要:讲到逆向,更多的人都是考虑到既然是逆向那就应该反着来推或者相反,其实则不然,这里我们要讲的是为了更深入的研究windows编写机制,更好的研究他们的安全,谁让微软这么保守虽然曾经流出过windows的部分代码.....
  • 标签:逆向分析  黑客  老鸟
结构化异常处理

结构化异常处理(Structured Exception Handling ,简称SEH)是Windows操作系统处理程序错误或异常的技术。

两种类型的异常处理句柄:

一种是final型的,这是在异常未能得到线程相关处理例程处理操作系统在即将关闭程序之前会回调的例程,这个例程是进程相关而不是线程相关的,因此无论是哪个线程发生异常未能被处理都会调用这个例程.

另一种是per_Thread Exception Handler->线程相关的异常处理,通常每个线程初始化准备好运行时fs指向一个TIB结构 (THREAD INFORMATION BLOCK),这个结构的第一个元素fs:[0]指向一个_EXCEPTION_REGISTRATION结构 。

当Windows检测到异常时,执行线程立即被中断 ,处理从用户模式转向了内核模式,控制权交给了异常调试程序,它负责查找处理新异常的方法。

反调试技术

检测内核模式调试器
利用NT的ZwQuerySystemInformation()或NtQuerySystemInformation()检测内核模式调试器。

检测用户模式调试器
利用NT的ZwQueryInformationProcess()或NtQueryInformationProcess()检测使用Win32 Debug API的用户模式调试器。

检测API断点
对于比较关键的API,可以检测其是否被设置了断点,即检查该API的入口的第一个字节是否为Int 3指令。

花指令

花指令是一堆汇编指令组成,对于程序来说,是一堆废话,加不加花指令都不影响程序的正常运行.编写的花指令要终始保持堆栈的平衡。花指令的作用是干扰反汇编。

花指令的指令含意:
push ebp ----把基址指针寄存器压入堆栈
pop  ebp ----把基址指针寄存器弹出堆栈

push eax ----把数据寄存器压入堆栈
pop  eax ----把数据寄存器弹出堆栈

nop      -----不执行
mov edi,edi-----和nop效果一样

add esp,1-----指针寄存器加1
sub esp,1-----指针寄存器减1

inc ecx  -----计数器加1
dec ecx  -----计数器减1

子明最近一直在研究有关逆向分析的技术。上面的就是我的一点研究,不知道大家是否还能够满意。我以后还会为大家服务,写出更加通俗易懂的文章来。

【51CTO.COM 独家特稿,转载请注明出处及作者!】

【相关文章】

【责任编辑:于捷 TEL:(010)68476606】


共3页: 上一页 [1] [2] 3
【内容导航】
 第 1 页:函数调用  第 2 页:静态分析/OD动态分析
 第 3 页:结构化异常处理
新网百度黑客事件
我是黑客我怕谁——讲述黑客的故事
Web安全云时代
NAC安全访问控制
安全防范与策略
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有