用好DEBUG是对那些开始学习CRACK的朋友的最基本要求。对于大部分的人采说,DEBUG的使用应该不成问题,但也有不少初学者并不会熟练使用 这个WindoWS自带的调试工具,看HELP吧,又是一大堆的E文。所以,在这里,我给那些不太熟悉此工具的朋友介绍一下各命令的用法,希望能 对朋友们有些HELP。 1.A(assemble):汇编命令 命令格式:a[<目标开始地址>] 功能:从address地址开始写入汇编命令,回车结束此行,进入下一内存地址的编译。如无address参数,则从默认从cs:ip下一址开始编译。 例:a 1000:1000 ;从1000:1000地址开始输入汇编指令。 2.C(compare):比较命令 命令格式:c<范围><地址范围> 功能:比较指定内存地址(range addtess)的值。 例:c 100:0 100 10:0 ;比较从100:0开始的下10()个地址与10:0开始的下100个地址。 3.D(dump):内存显示命令 命令格式:d[<目标开始地址1[标目范围>] 功能:显示指定地址范围的内存值。 例:d 100:100 ;显示100:100地址及下个内存的值。 d 100;显示ds:100地址及下个内存的值。 d;显示ds:ip地址及下个内存的值。 4.E(enter):内存修改命令 命令格式:e<目标地址>目标范围> 功能:修改指定内存的值。 使用:空格编辑下一内存地址值,减号回到上一内存地址进行重编辑,回车完成编辑。 例:e ;修改ds:ip内存的值。 e 100 ;修改ds:100内存的值。 5.F(fill):内存填充命令 命令格式:f目标范围填充值列表 功能:填充指定范围内存的指定值。 使用:range:内存地址范围。list:填充值列表,多个值用空格隔开。依次列入指定地址,地址数,填充值数,则填充值从头开始循环填入指 定内存。 例:f 100 1 100 \'ab\' \'cd\' ;在从ds:100开邕的下100个内存中分别填入\'ab\'和\'cd\'。 6.G(go):运行命令 命令格式:g{二开始地址1[断点地址]. 功能:从指定内存地址开始运行。可设定断点,DEBUG支持最多10个断点的设定。 例:g=100 200 300;从地址cs:100处开始执行,并分别在cs:200和cs:300处置断点。 7.H(hex):运算命令 命令格式:h 16进制值1 16进制值2 功能:16进制加减的计算,使用后打印的两个值(16进制数)分别为16制值1和16进制值2的和与差。 例:h ab cd ;分别求16进制数ab+cd与ab-cd的值。 8.I(input):端口命令 命令格式:i 目标端口值 功能:输入值(2byte)到指定端口。 例:i 10 ;从10号端中读人一字节值。 9.l(load):加载命令 命令格式:l[路径][磁盘号][扇区号][扇区 数] 功能:加载指定磁盘号、扇区号、和扇区数的磁盘内容到指定内存。 使用:address:指定要加载到的内存.drive:要加载的磁盘号,此处的磁盘号为:A:0号。B:l号,C:2号。依此类推。firstseetor:扇区 号。number:扇区数.并置EAX:EDX为文件的大小,此处的eax:edx是将大小值的高位放到EAX,低位放到edx,而非指向eax:edx的内存地址 。若加载的是*.exe或*.com文件未指定路径,则*.exe.会加载到CS:100(此值不可更改),而*.com文件会在CS:IP处。 例:l C:ktest.txt 2, 10.M(move):内存拷贝命令 命令格式:m地址范围目标地址开始地址 功能:拷贝指定内存值到指定内存地址。 使用:range address:两个地址范围.丛m 0000:1 1 20 0010:0 ;把从0:1内存地址开始的长度为20的内存值复制到地址10:0开头的内 存。此命令的目的地址与源地址有重叠也不会发生错误。 11.N(name):命名命令 命令格式:n[路径]\[参数列表] 功能:将指挥定文件存人DEBUG的FCB(文件控制模块)中,以备以后加载(L)和存盘(W)。 例:n C:\test.txt 将C:ktest.txt放入FCB中 l 将c:\\test。txt载入内存,使cs:ip指向该文件开头,并置bx:cx为文件大小值。 此两条命令相当于:debug C:ktest.txt。 12.o(output):端口命令 命令格式:o端口值 功能:从指定端口输入一字节值。 例:o 71 ;从71号端中输入一字节 13.P(proceed): 命令格式:p[=<地址>][<指令条数>] 功能:单步跟踪,执行指定的一条或多条指令,但遇到过程与中断不进入,而是继续下一条指令. 例:p=100 20 ;执行从cs:100开始的以下20条指令。 14.Q(quit)退出命令 命令格式:q 功能;没什么好说的了,就是退出DEBUG。 15.R(registry):寄存器命令 命令格式:r[寄存器名] 功能:显示当前各寄存器(16位)值、8个标志位的状态,并反汇编cs:ip所指的下一条指令。后跟寄存器名可修改其值。 例:r aX ;修改ax的值。 16.S(search):搜索命令 命令格式:s范围’搜索字符列表’ 功能:搜索指定的字符串。若找到则显示地址与值,若无则什么也不输出,等待下—条指令。必须指定全部参数。 例:s 0000:1111 l 20 \'32\' ;在0000:1111以后的20个地址中搜索字符串’32, 17.T(track):单步跟踪命令 命令格式:t[二地址][<指令条数>] 功能:单步跟踪,执行指定的一条或多条指令,遇到过程与中断进入到过程中去。每一步过程算一条指令。 18.V(unassemble):反汇编命令 命令格式:u[开始地址:1[范围] 19。W(write):写盘命令 命令格式:w[目标起始地址][目标磁盘][扇区号][扇区数] 功能:写从目标起始地址或cs:ip开始的,—长度为bx;cx的内存内容到指定的磁盘。此命令很危险,稍有不慎可能毁坏文件或分区表,故应 慎重使用,若造成硬件损坏。本人概不负责。 例:w 0:100 把从0:100开始的,长度为bx:cx的内存内容写入已用debug或n+l加载的:文件中,注意因为*.EXE文文件的写入方式很特殊 ,故此处的文件不可为*.EXE文件。 [范围]的说明: 范围有两种表示方式: (1)开始地址结束地址; (2)开始地址l(此处是L,非数字1)偏移量; 如:地址:123:0到期123:fff可表示为:123:0 ffff或123:456 l 65535 [默认地址]: (1)默认段地址:关于代码的命令,如:u,a,等的默认段地址一般为DS,而关于数据的命令所用的默认地址一般在CS中,如d,e,f等。 (2)默认偏移地址:一般为IP。 3.关于DEBUG (1)DEBUG所用的值均为16进制数值,且不跟后辍H,这一点要注意。 (2)DEBUG的命令与参数大小写均可,分隔符也只是在两个数字之间有必要打。当然,你若愿意,打上也不算错。 (3)不可用作32位的调试器。 (4)超越段地址应分两行,先写段地址,再写代码 即: mov ax,ds:[bx] 应写为: ds: mov ax,[bx] 至此,以前对此工具不太熟悉的朋友应该有一定的了解了吧?但是熟练应用还要靠你们自己。
上一篇:如何解释C语言中“==”的含义
下一篇:两面针vc口腔喷剂治疗口气口臭