能力值:
( LV2,RANK:10 )
|
-
-
26 楼
感谢楼主,讲的很清晰,让初学者能有学习的兴趣
|
能力值:
(RANK:260 )
|
-
-
27 楼
1.算法,请看我在8楼的回复说明。你那个改EDI,是爆破。
2.发布软件注册机,论坛明令禁止。发布破解文章可以,但需要有一些注意事项,比如隐去软件的名称等。请阅读版规。
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
先帮你顶,再慢慢看!
|
能力值:
(RANK:10 )
|
-
-
29 楼
现在虽然没时间玩电脑,但偶尔还是得来逛逛的.
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
"下面我来讲今天的第3个技巧:RUN跟踪。不熟悉的人先去看看OD的说明书,照着说明书将相关选项设置好,否则可能不起作用。"
请教:我按照OD说明书上的设置好,仍然不能向你说的那样断下。
PS:设置完中断条件后需要取消GetWindowTextA的断点么?
如果不取消,我会一直在这个地方断下,无论用crtl+f11还是crtl+f12.
如果取消,程序就会跑来。
|
能力值:
(RANK:260 )
|
-
-
31 楼
请再仔细看看原文。
条件断点生效后,先返回到krnln模块当中,然后再用Run跟踪走到EXE模块。
这里面的原理,虽然很简单,但没有一定基础的还是不太好理解,以后慢慢就懂了。
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
认真看了一下,可能理解能力差,有些问题要问一下
问1:原文:我们希望只有在读取用户输入内容时才中断,先来到OD的“窗口”窗口
这是GetWindowTextW断了几次后再看windows窗口?我第四次断后还是没有运行,我这里所谓的运行是指程序界面正常显示,能写入东东,而事实是第一次断时程序就运行了,任务栏上能看见,只是界面无法正常显示.而且我一直F9也没用,界面还是无法正常显示.
问2:原文:再回到反汇编窗口,在GetWindowTextW这行按Shift+F2,弹出如下条件断点对话框
"这行"是应该是反汇编窗口第一行了,写成"在GetWindowTextW这行"令人有些疑惑,还有一个问题,就是我恁个人理解,在第四次断下后,按文中意思下好断点后运行没有断下来,直接就弹出错误提示框了.
望能解释一二.
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
中于,你比我还菜。我问的就够笨的了。你比我强不了多少。
问一、不用管他运行了几次。
问二、“这行”就是在堆栈里中断的这行GetWindowTextW,在反汇编窗口里可没有这行显示。他只是停在一个高亮的地方,就是在这个高亮的位置处Shift+F2.确定,在运行后,返回,在向上找。
书呆子老大,你写的只有会汇编的人才能看懂。俺看不大明白。还是不详细。不会汇编的看不了。象我,就那个ESP+4,我想了好长时间,注明怎么的来的就好了。
所谓一个笨蛋提问。三个高手都不一定能回答清楚。
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
谢谢你回答,
你在堆栈这一行shift+F2?不知你试过了没有?而我在堆栈shift+F2是没反应的,难道是我od的问题?以前也没听说过在堆栈下断的.
|
能力值:
(RANK:260 )
|
-
-
35 楼
楼上几位,原文已经改正,并用蓝字标出。
我的意思是断点要下在GetWindowTextW这个函数的代码当中,只是我说得不太清楚。
回toufyqin:
“窗口”窗口,就是点一下OD工具栏中的带 “W”字样的按钮,或者在菜单上点 “查看”->“窗口”。打开这个界面的目的是看一下编辑框(Edit)的句柄是多少。请注意我原文中给的代码中红字部分。有了这个句柄值,我们才好用这个值下条件断点。
我们要下条件断点,代替刚开始试验的普通无条件断点,所以下断点是位置是在代码中。因为之前下断点只是试探性的,是为了看看这个断点有没有用,所以不用管它中断几次。
断点条件中的[esp+4]=XXXXXXXX,其中XXXXXXXX的值就是我们在“窗口”界面中看到的Edit控件的句柄值,这个值每次运行都不一样,我给的那个值只是个例子,不要照抄。
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
新人很热衷对大牛们文章的膜拜,自然把这样他们认为“没有深度”的文章略过了。
|
能力值:
( LV2,RANK:10 )
|
-
-
37 楼
终于理清了,又学到了新的一招,非常感谢!以往太沉溺于"字串参考"了.
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
看完再顶,顶完还要看,包括兄弟们的回贴.
脱壳难,VM难,找关键代码也难.郁闷ing...
现在unpacker cracker门槛越来越高了.
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
明白了,谢谢
|
能力值:
( LV3,RANK:30 )
|
-
-
40 楼
看不懂, 收藏。。。。。。。。。。。。。。。。。。。。。。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
认真看完了帖子,更加理解了条件断点,但对于run跟踪,有点点迷惑,因为OD实在用得不是很熟悉,没有大量的例子练习过。虽然也看了中文帮助文档,说明上有这么一句:可以通过按Ctrl+F11(Run跟踪步入,进入子函数)或者Ctrl+F12(Run跟踪步过,一次执行完子函数)开始Run跟踪,并用F12或者Esc键停止跟踪。
本来想多看看run跟踪来看看它到底是用在哪些方面,但在坛子里搜索了下“run 跟踪”,提示找不到帖子,只好自己琢磨了。
对于run跟踪,我的理解是这样的,如果不对,请大家指正:假设我们从程序的某个地方开始按F7/F8键跟踪程序,每按一次键,程序走一步,我们在纸上面做一次记录,这些记录包括当前执行的指令、指令的地址、寄存器的变化等等(甚至更进一步:内存数据段内哪个地址的值发生了变化),按一次F7/F8键,我们就做一次记录,相当于填表格一样的填下来,一直到我们想要的地方(比如关键地方、或者OEP)停止下来,然后在我们停下来的地方下一次F2断点或者硬件断点等,这个断点等待下一次备用。但是人工跟踪和记录这些信息非常慢,于是就有了run跟踪,设置了run跟踪,它会自动的帮我们记录这些信息,Ctrl+F11/F12就相当于我们不停的按F7/F8,如果我们用Ctrl+T设置了条件,就相当于没有用run跟踪时设置的一个断点。
大概的理解就这么多,不知道还有没有其他的功能。
还有个问题:设置了run 跟踪后按下F9,它是否自动的记录跟踪的结果呢,跟踪的效果跟Ctrl+F11/F12是否一样?或者是否只能用Ctrl+F11/F12才能run跟踪到记录?
对于第三个例子,设置好条件断点后,当程序到达krnln模块内,我采用内存断点,在exe模块的所有段上面都设置了内存访问断点,也能到达同一个地方。
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
蛮有用的,感谢啊
|
能力值:
(RANK:260 )
|
-
-
43 楼
基本上跟我理解得差不多,OD1.1的RUN 跟踪似乎就是通过自动单步来实现的。不过OD2.0使用了另一种方法来实现RUN跟踪,就是虚拟执行。
关于在.text下内存断点的方法,确实是一种很好的方法,你提得很好,想来跟脱壳时的“二次内存镜像断点”法的思路有异曲同工之妙。
补充一点,F9是不启动Run跟踪的。
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
谢谢了很适合我,收藏了.
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
牛人一位~
很不错的文章~
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
学习了,run跟踪没用过。得学习下
|
能力值:
( LV2,RANK:10 )
|
-
-
47 楼
看来还是积累不够!还得狠啃汇编基础及各种工具的使用说明书,楼主的好贴子应该顶一下!
|
能力值:
( LV2,RANK:10 )
|
-
-
48 楼
非常好,非常好.
学西了
|
能力值:
( LV2,RANK:10 )
|
-
-
49 楼
谢谢 好好看看
|
能力值:
( LV2,RANK:10 )
|
-
-
50 楼
同意楼上的.'
|
|
|