能力值:
(RANK:410 )
|
-
-
2 楼
对16位的汇编不太懂,不过win32的指针已经可以指向4G的大小,只要有权限,可以指向任何地址。所以16位可以寻址的地方在32位上应该都可以做到。
API函数中有一个lstrcmp函数。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
好像还有个lstrcmpi,大小写不敏感的。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
太感谢了,验正程序我在用指令来写,但是碰到不少的问题,到现在都还没有解决。你说的这个API我回去好好试试。
还有如果不须要段超越了,那一些用到段超越的寻址如何理解,比如:
1、 mov EBX,[1000h] 不须要段超越的话,那是不是就是直接把地址1000H内的内容送入EBX中?
2、mov EBX,[EAX+12h] 这些寻指又怎么理解呢。是不是在32位汇编中就不可以使用了。
请给予解答,感谢!
|
能力值:
(RANK:410 )
|
-
-
5 楼
1、 mov EBX,[1000h] 不须要段超越的话,那是不是就是直接把地址1000H内的内容送入EBX中?
可以这么说,不过在Win32中,除了你的程序是运行在Ring0层的才能访问这个地址。Ring3的程序访问这个地址会另程序崩毁。
2、mov EBX,[EAX+12h] 这些寻指又怎么理解呢。是不是在32位汇编中就不可以使用了。
可以使用,这条指令即以eax的保存着的地址值再+12个字节的偏移量里的地址里的内容传给ebx。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
太感谢版主了,本人初接触32位汇编有些概念性东西不太懂,在网上又搜索不到,只好到这里来请教了,见笑了。
从你刚才说的那个理解
mov EBX,[EAX+12h] 是不是也要在Ring0 层中使用。
如何是的话,那意思就是除了立即数寻址和寄存器寻址在32位汇编中可以直接使用外,别的全都是要在Ring0层中使用。
|
能力值:
(RANK:410 )
|
-
-
7 楼
最初由 放纵 发布 mov EBX,[EAX+12h] 是不是也要在Ring0 层中使用。 ........
这个指令可以在Ring3层中使用。
指令使用是不区别Ring0还是Ring3层的,只要是CPU合法的指令,在Win32里都可以使用的。有区别的只是Windows对一些地方的读写设置了读写权限,相同的指令,由于读写权限的不同,低权限的程序读写了高权限的地方,就会出现错误。只有拥有一定权限的程序才能对那些地方进行读写访问。但这些和指令的使用没什么关系。
例子:
mov eax,0
mov ebx,[eax+12h] ; 如果是Ring3层的程序这里会出错,因为0+12的地址是属于系统才能访问的地址,Ring3层是没有这个权限的。
mov eax,00402000
mov ebx,[eax+12h] ; 这个指令和上面的指令相同,但这里Ring3层的程序不会出错,因为400402000+12的地址是属于程序自己的。
如上面两个例子,他们使用一样的寻址指令,为什么一个可以在Ring3层可以使用,一个不可以在Ring3层使用。就是因为他们访问的是不同的地址。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
太谢谢版主了.
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
win32学习中,顺便学习一下。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
版主真不错啊,讲的好详细。
|
能力值:
( LV9,RANK:380 )
|
-
-
11 楼
invoke CompareString,LOCALE_USER_DEFAULT,NORM_IGNORECASE,addr szExplorer,-1,addr stProcess.szExeFile,-1
.if eax==2
忽略大小写
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
正在学习中!
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
版主好像就是罗云彬!!!!!
|
能力值:
(RANK:410 )
|
-
-
14 楼
不是。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
虾虾真是好心,耐心,细心,有心,专心,
哈哈五心全有了
五心朝上了,可以练全真教的内功心法了
|
|
|