纠结了几天的一个问题,关于读内存地址的!!
时间:2010-12-23
来源:互联网
.model small
.386
.stack 512
.data
string0 db'RSD PTR :$'
RSD_PTR1 equ 52534420h
RSD_PTR2 equ 50545220h
.code
show_char macro string
pusha
lea dx,string
mov ah,09h
int 21h
popa
endm
start:
mov ax,@data
mov ds,ax
mov ebx,000e0000h ;起始地址
lookfor:
cmp dword ptr fs:[ebx],RSD_PTR1 ;比较前四位
jnz X1 ;不相等则跳转到X1继续查找
add ebx,4
cmp dword ptr fs:[ebx],RSD_PTR2 ;比较后四位
jz yy ;相等在跳转yy输出
X1:
inc ebx
cmp ebx,000fffffh ;终止地址
jz exit
loop lookfor
yy:
show_char string0
xor eax,eax
mov eax,ebx ;把找到的32位地址传给eax
mov cl,24 ;按字节输出地址共8位
ror eax,cl
call zhuanhuan
mov dl,al
call display_
ror eax,cl
call zhuanhuan
mov dl,al
call display_
ror eax,cl
call zhuanhuan
mov dl,al
call display_
ror eax,cl
call zhuanhuan
mov dl,al
call display_
exit:
mov ah,4ch
int 21h
display_ proc near ;显示函数
push ax
mov ah,2
int 21h
pop ax
ret
display_ endp
zhuanhuan proc near ;转换函数
cmp al,10
jb lab
add al,07h
lab:add al,30h
ret
zhuanhuan endp
end start
code ends
结果应该显示RSD PTR :000f8970纠结几天了,拜托大神出现?
作者: zhuyi108 发布时间: 2010-12-23
作者: zara 发布时间: 2010-12-23
作者: masmaster 发布时间: 2010-12-23
没碰过这方面的内容。不过,FS 没设置过?loop 指令也没有设置 cx?运行环境是不是有要求,比如纯 dos 还是特定的什么模式?我在 xp 的命令行窗口下,无任何显示;在 vpc 虚拟机的纯 dos 下,显示 RSD PTR :0E06 ?
这个程序肯定只能在纯dos下,这个loop 循环是不定次数的,因为不知道要循环多少次就找到了,你后面显示那个就是我显示出来的结果,但是我要的是RSD PTR :000f8970这个结果,就是不知道错在哪了?
作者: zhuyi108 发布时间: 2010-12-23
作者: zara 发布时间: 2010-12-23
作者: zhuyi108 发布时间: 2010-12-23
为什么必是 000f8970,哪里有这方面的资料看看?在 vpc 的纯 dos 下,我这 cv 是可以运行的,但结果和直接运行它还不一样。纯 dos 下的,fs 应该是 0000 吧,这个是你所要的?
那是肯定的,我有人家做好的软件,现在就是模仿人家的软件来写这部分程序的,知道了原理就是基础知识不行,所以老是出错~
作者: zhuyi108 发布时间: 2010-12-23
麻烦举个例子,我比如运行了 debug32 111.exe然后 查看全部程序 用u 看到了全部程序或者一部分,然后单步执行用t 看到了第一条指令但是只有前16个bit ,下来怎么看32位的呢?
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
d:\MASM>debug32
Debug32 - Version 1.0 - Copyright (C) Larson Computing 1994
d:\MASM>debug32
Debug32 - Version 1.0 - Copyright (C) Larson Computing 1994
CPU = ?86, Virtual 8086 Mode, Id/Step = 0FF1, A20 enabled
-a
2B29:0100 66B878563412 mov eax,12345678
2B29:0106 BB1200 mov bx,12
2B29:0109 F7E3 mul bx
2B29:010B
-r32
EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000000 EBP=00000000
ESI=00000000 EDI=00000000 FS=2B29 GS=2B29 SS=2B29 ESP=00000000
DS=2B29 ES=2B29 CS=2B29 EIP=00000100 NV UP DI PL NZ NA PO NC
2B29:0100 66B878563412 MOV EAX,12345678h
-t
EAX=12345678 EBX=00000000 ECX=00000000 EDX=00000000 EBP=00000000
ESI=00000000 EDI=00000000 FS=2B29 GS=2B29 SS=2B29 ESP=00010000
DS=2B29 ES=2B29 CS=2B29 EIP=00000106 NV UP DI PL NZ NA PO NC
2B29:0106 BB1200 MOV BX,0012h
Trace Interrupt
-t
EAX=12345678 EBX=00000012 ECX=00000000 EDX=00000000 EBP=00000000
ESI=00000000 EDI=00000000 FS=2B29 GS=2B29 SS=2B29 ESP=00010000
DS=2B29 ES=2B29 CS=2B29 EIP=00000109 NV UP DI PL NZ NA PO NC
2B29:0109 F7E3 MUL BX
Trace Interrupt
-t
EAX=12341470 EBX=00000012 ECX=00000000 EDX=00000006 EBP=00000000
ESI=00000000 EDI=00000000 FS=2B29 GS=2B29 SS=2B29 ESP=00010000
DS=2B29 ES=2B29 CS=2B29 EIP=0000010B OV UP DI PL NZ NA PO CY
2B29:010B E000 LOOPNE 010D ;yes
Trace Interrupt
-
作者: masmaster 发布时间: 2010-12-23
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28