系统断点在哪里&&如何断在TLS回调前

系统断点

Windows

当你调试一个程序时,系统给了我们一次机会在被调试前。
ntdll.dll-LdrpDoDebuggerBreak()
如图:
LdrpDoDebuggerBreak()
通过一个int3断点来实现应用程序启动前将控制权传递给调试器。该函数一般被映射在0x771E1CC8,如果不存在调试器或者,启动应用的调试器不理睬这个断点,该函数自己的异常处理程序。
有些壳程序的反调试也是采用类似的手法,一旦壳程序的异常处理程序没有被调用,则表明有调试程序接管了壳程序埋伏的异常。

由ntdll将调用权交给主线程的位置-如何断在TLS回调前

我真心想分享自己调试的内容给你。但是不同系统位置不同。

win7专业版64bit系统32bit程序:

断在:0x77479ED0,即ntdll.dll(32bit)是一条call eax,可以断下所有模块加载前,包括TLS回调前和主程序前。位于___RtlUserThreadStart(x,x)

win7家庭版64bit系统32bit程序:

断在TLS前:
kernel32.dll;offset:3388

jne
call edx;在这里。
push eax
call

你可以通过用VS编写一个TLS回调程序,用VS断在该代码,通过栈回溯,找到是谁调用了该代码。

如何找到dll模块的调用关键点呢?

它在ntdll.dll(32bit)的如下位置:
DLL模块的调用点

掌握自己系统中的常用断点位置,调试时候少很多周折。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值