首页
社区
课程
招聘
[旧帖] 怎样设断才能跟踪查看寄存器AL的值? 0.00雪花
发表于: 2013-3-10 16:33 6448

[旧帖] 怎样设断才能跟踪查看寄存器AL的值? 0.00雪花

2013-3-10 16:33
6448
收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 608
活跃值: (643)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
EAX的低8位就是AL
2013-3-10 16:48
0
雪    币: 16159
活跃值: (1340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
怎么表达,怎么写呢,或者截图说明,咋个看法,关键性问题是如何动态观看敌情?

实质性问题还是没有奖明,谢谢。再次感谢。
2013-3-10 17:54
0
雪    币: 608
活跃值: (643)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
我不知道你想做什么........
如果你用调试器动态调试,中断在代码间某个位置,这个时候通过寄存器窗口观察到的
EAX = 0x12345678
那么AL = 0x78 AX = 0x5678
也就是说
AL =  EAX and 0x000000FF
2013-3-10 18:04
0
雪    币: 16159
活跃值: (1340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我知道你说的是OD中间的那个信息输出窗口,
我就想知道,如何才能知道寄存器中何时al变成0或变成1的,找到它变化时的那个地址,用肉眼动态的看出来。
2013-3-10 18:09
0
雪    币: 608
活跃值: (643)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
我不都告诉你了,F7/F8单步,看着EAX的低八位什么时候从0变成1不就完了,怎么说到这种程度还不明白...
2013-3-10 21:05
0
雪    币: 496
活跃值: (286)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
7
楼主是想像下断点一样,让程序跑起来,但是又需要在每次写eax之前段下来,貌似没有寄存器断点这一功能。
2013-3-10 21:58
0
雪    币: 608
活跃值: (643)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
如果想要自动判断 if(EAX & 0xFF == 1) {}这样的功能的话, 可以自己实现一个小的调试机制,然后自己自动调试,每次断下的时候取ThreadContext 就行了
2013-3-10 22:09
0
雪    币: 817
活跃值: (2063)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
楼主的思维方式有问题,所谓的断点,关键是那个点字,也就是说,你设置的断点一定是落在程序的一个确定的位置上,你只能在这个位置上“蹲守”,看看当程序运行到这个位置的时候,你要监视的寄存器是否符合条件。你想凭空根据寄存器的值来下断点?谢天谢地,幸好调试器的编写者没有你这种想法,要知道,调试器不仅监视你的程序领空,还会频繁进入系统领空,如果AL一等于确定的值就断下,你还想这样找到关键点,设想一下吧,其可能性不会比大海捞针的一亿次方分之一高!举个例子,50+50=100,但是,并不意味着得到100只有50+50这一种途径,只能说这是无数种途径中的一种!或者说得再具体一点,你只知道程序到达关键点时AL=0或者AL=1,要知道,如果全局地看,在整个程序运行期间,AL=0或AL=1的次数完全就是天文数字,而你所希望了解的那次可以肯定地说,只是其中最普通的一次,绝不会因任何不同可以把一个近乎或者已经麻木熟睡的人唤醒。
2013-3-10 23:12
0
雪    币: 16159
活跃值: (1340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
之所以问这个问题,因为近期破解了一个去水印的软件。
该软件未注册时弹出个框,从此可以作为切入点NOP之后,功能限制就解了。
开始吧,我从网上找同版的破解补丁研究人家破解之中的不同点,
由此推测人家的判断注册标志的思路,结果研究中发现有很多东西看起来的破解未必是真破解(有的只不过是伪破解,某些东西不显示而已。比方很多PS的DEMO版的滤镜)再有一直对看雪论坛精华中的文章mov eax,754EF这种直接赋值语句不太明白,不是不明白语句本身的涵义,而是不知此值是从何而来。怎么就看出内存中数值的变化,由此给符合条件的值。我知道一是动态跟出来的,更重要的是通过跟的方式得到上下文衔接走势的依据。

就拿这个图来说吧,它修改先后eax中寄存器的值,也没有写着是0还是1啊。可它改完就管用,再往下走,会走到一些公共运行的地方,错误输入码的地方,但thank you的地方不会再去了,那该用何种更高的手段来判定呢。
上传的附件:
2013-3-10 23:54
0
雪    币: 16159
活跃值: (1340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我再把那的值改回去,它又变了,也跟原来不一样啊,是不是必须得找一个相对不变的地方才说的通呢。
2013-3-11 00:05
0
雪    币: 16159
活跃值: (1340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
多谢列位的帮助,我总算彻底明白,为什么到那的原因了。
这次真是知其所以然了~~~~~~~~~~~
开心啊,睡觉了,各位晚安吧。
2013-3-11 00:37
0
游客
登录 | 注册 方可回帖
返回
//