OllyDBG 入门系列(四)-内存断点
2010-09-30 16:54:11 来源:WEB开发网核心提示: 通过上面的分析,我们知道基本算法是这样的:先用GetDriveTypeA函数获取磁盘类型参数,OllyDBG 入门系列(四)-内存断点(7),再用GetVolumeInformationA函数获取这个crackme程序所在分区的卷标,如我把这个Crackme程序放在F:\OD教程\crackhe
通过上面的分析,我们知道基本算法是这样的:先用 GetDriveTypeA 函数获取磁盘类型参数,再用 GetVolumeInformationA 函数获取这个 crackme 程序所在分区的卷标。如我把这个 Crackme 程序放在 F:\OD教程\crackhead\ 目录下,而我 F 盘设置的卷标是 GAME,则这里获取的就是 GAME,ASCII 码为 “47414D45”。但我们发现一个问题:假如原来我们在数据窗口中看到的地址 40339C 处的 16 进制代码是“47414D45”,即 “GAME”,但经过地址 00401442 处的那条 MOV EBX,DWORD PTR DS:[ESI] 指令后,我们却发现 EBX 中的值是 “454D4147”,正好把我们上面那个“47414D45”反过来了。为什么会这样呢?如果大家对 x86系列 CPU 的存储方式了解的话,这里就容易理解了。我们知道“GAME”有四个字节,即 ASCII 码为“47414D45”。我们看一下数据窗口中的情况:
0040339C 47 41 4D 45 00 00 00 00 00 00 00 00 00 00 00 00 GAME............
大家可以看出来内存地址 40339CH 到 40339FH 分别按顺序存放的是 47 41 4D 45。
如下图:
编缉推荐阅读以下文章
- OllyDBG 入门系列(五)-消息断点及 RUN 跟踪
- OllyDBG 入门系列(三)-函数参考
- OllyDBG 入门系列(二)-字串参考
- OllyDBG 入门系列(一)-认识OllyDBG
[]
赞助商链接