能力值:
( LV2,RANK:10 )
|
-
-
2 楼
小菜也回一贴
可能不是断点的问题吧,查查代段执行时间
内存断点可以通过判断内存块的属性检测
f2断点,是更改指令,这个一般是通过内存hash值较验
硬件断点,可以通过SEH的回调涵数中检测
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
我不知道要怎么做,比如你说的 判断内存块的属性检测;SEH的回调涵数中检测
能跟我说说吗
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
是不是没有隐藏好调试器??
或者试试不要在api函数入口下断点
|
能力值:
( LV9,RANK:250 )
|
-
-
5 楼
对,就不信他哪里都有刺儿
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
调试器隐藏好了的,没在API函数入口处下断点也一样
特别是下内存断点,一下就终止哦
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
俺也碰到过,就是没办法解决,玩了几天,头都大了,唉,真想放弃,又有点舍不得.望高手指教一二.
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
说明软件还是读到你的调试器了。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
经过9天的时间,终于知道了一点,就是自己太菜,现在想想像这样的问题高手只会一笑而过
只怪我自己基础太差啊,这种问题看似是在反断点,其实并不一定啊,今天总算找到真正原因
原来程序并没有做反断点保护,而是Themida 在作怪
|
能力值:
( LV9,RANK:850 )
|
-
-
10 楼
themida,现在有较新的od,专门为了themida壳更新的!呵呵`
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
如果真是断点保护,不要忘了回顾下断点原理:
1、普通断点原理
F2下断等效于bpx,他是在所执行的的代码的当前地址的一个字节修改为CC(int3)
当程序运行到int3的时候就会产生一个异常,而这个异常将交给OD处理
把这个异常的regEIP-1以后就正好停在了需要的中断的地方(这个根据系统不同而不同)
同时OD在把上面的int3修改回原来的代码
2、硬件断点原理
在寄存器中,有这么一些寄存器,它们用于调试。
人们把他们称为调试寄存器,调试寄存器一共有8个名字分别从Dr0-Dr7
Dr0-Dr3用于存放欲设置断点的线性地址。
Dr4和Dr5保留
Dr6保存了调试状态
Dr7是调试控制寄存器
Dr6,Dr7这两个寄存器的作用是用来记录你在Dr0-Dr3中下断的地址的属性
如:对地址401000是硬件读、写、执行,是对字、字节、双字
3、内存断点原理
1.将设置的内存断点的地址记录下来
2.对这个地址的内存页面修改其属性
如果是内存写断点,就修改为RE(可读,可执行)
如果是内存访问断点,就修改为NO ACCESS(不可访问)
3.只要访问到这个页面就会产生相应的异常,然后由OD来判断是否与记录的断点一致,从而是否中断下来
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
请问在哪下载呢?能否给个Link
|
能力值:
(RANK:570 )
|
-
-
13 楼
在EXITPROCESS下断,堆栈跟踪找出反调试的函数。多线程保护的,用排除法,用ICESWORD或者自己写工具,通过终止部分线程观察究竟是哪个线程出的问题
|
|
|