|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 iscpp 于 2016-5-11 20:38 编辑
原帖在这里——>http://bbs.fishc.com/thread-35817-1-1.html
废话不说,我先把他的源代码贴上
这里我只能说作者很会装逼(毕竟是比赛,如果不装逼怎么拿第一)
当然也侧面反映了他对debug程序非常的熟悉
事实上,我们用debug这个命令时候通常的格式是
- C:\>debug //这里我们进入debug模式,当然它的后面可以跟程序的名称
- - //这里我们已经进入了debug模式,程序等待我们输入对应的指令,一般来说我们会在它的指令后面加一个空格然后在加上对应的参数
复制代码
但是呢
这个作者他使用这些指令的时候,他是直接加的参数,省去了中间的空格,直接加的参数
我们先不看前面的一堆数据,先来看看后面的几个指令
g //这个命令是debug的-g命令,它的作用就是执行从现在CS:IP指向的指令开始执行,直到遇到程序结束的指令也就是 "mov ah,4ch int 21"
rcx //这个命令试试上是-r cx命令它的作用是读取CX的值
fff //这个是接上面的那个命令的,它的作用是将CX的值修改为0FFF
n1.com //这个命令是-n 1.com它的作用是将准备写入磁盘的程序命名为1.com,而这个程序就是上面的一堆数据
w //这里是-w,将程序写入到debug程序执行的目录中,变成1.com
q //这里是-q命令,退出debug
这里我做了一下初略的解释,具体的命令细节和命令作用请参考http://baike.baidu.com/link?url=HNnaofLOJRAoCtI2wOV4soBNZ0I0RyHwyaalmtHkeXZVZ4T8gLjggmnaN55Hn8Of
我们再看第一行
e100 33 f6 bf 0 20 b5 10 f3 a5 8c c8 5 0 2 50 68 13 1 cb e 1f be a1 1 bf 0 1
事实上我们应该这样来看这个程序
-e 100 33 f6 bf 0 20 b5 10 f3 a5 8c c8 5 0 2 50 68 13 1 cb e 1f be a1 1 bf 0 1
这里e命令是用来修改DS:0100位置的数据,修改该的数据,就跟在100的后面
分析道这里我想大家已经知道得差不多了,如果想知道上面的程序的汇编指令是怎么样的请用-u命令,如果还有问题,可以发帖问我
ps:我是小菜鸟,高手请无视我
|
|