能力值:
( LV12,RANK:650 )
|
-
-
2 楼
偶84RoBa
但是汇编学了很久了……
lea edi,dword ptr ds:[esi+410]
dword ptr ds:[esi+410]是指存放在地址为esi+410处的一个32位的数。这句的作用是将ds:[esi+410]处的一个32位数的地址放到EDI里。EDI里面装的是地址,EDI=esi+410
SEH指的是Structured Exception Handling,即“结构化异常处理”
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
thank you !Structured Exception Handling具体有什么作用?
还有就是
**************************
d dd ?
这三个到底有什么区别?
***************************
***************************
是不是在trw2000里面看到的全部都是十六进制的?
如果不是,那什么时候看到的是十进制?
***************************
|
能力值:
( LV12,RANK:650 )
|
-
-
4 楼
关于seh,请你搜索一下如何?其他的,等roba吧。
怀疑你第一个问题有问题。
d是13
dd是define double word,就是双字
?一般是未指定初始值的变量
|
能力值:
( LV13,RANK:970 )
|
-
-
5 楼
现在,类似于lea edi,dword ptr ds:[esi+410]
指令几乎失去了地址指向的意义,很多书中都说lea可以作为简单4则运算指令,你这句话,就是 edi = esi + 0x410
至于你说的什么时候是地址,什么时候是数据,单存拿出来一段数据,谁都不知道。其实内存中,没有地址,没有结构,没有类,有的只是数据。所谓的哪段数据是地址,哪段数据是结构等等,都是抽象的,只有在具体的环境才有他的意义。
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
谢谢两位教导!
**************************
d dd ?
我说的是这三个命令在trw2000里面,有时候用他们来观察寄存器的内容,到底有什么区别?
***************************
Nbw大哥,我糊涂了,你说内存里面没有地址,没有结构,没有类,有的只是数据。那么没有地址怎么样寻找地址?那不是乱套了?
在trw2000里面,有时候在数据区里面显示的是注册号(我们可以看懂的),有时候显示的我们都是乱码,或者问号,在vb中显示:1.2.3.4.5.6.7.8.9.0,而在别的里面是连续的:1234567890,这是怎么回事?在看教材的时候,有些时候说寄存器里面可以装地址,也可以装数据比如:01234567890要是太长,会不会装不下?
|
能力值:
( LV13,RANK:970 )
|
-
-
7 楼
我搞了将近1年才理解“没有地址,没有结构,没有类,有的只是数据”,你要是让我说为什么这样,我的确表达不出来。
但是你说的vb里面的那个数据格式,那是因为vb用的是unicode编码,不是ascII编码,你说的寄存器太长的问题是存在的,比如说目前,寄存器最长可以放32位。如果数据太长,就会发生溢出。
|
能力值:
( LV12,RANK:650 )
|
-
-
8 楼
最初由 nbw 发布 我搞了将近1年才理解“没有地址,没有结构,没有类,有的只是数据”,你要是让我说为什么这样,我的确表达不出来。
一年是长了点,还是祝贺你!
Everything is RAW!
这么说吧。什么结构,什么类只是说如何去理解RAW Data包含的信息。其实数据本身没有任何意义,关键是如何去理解它!就是拿你的理解往上面套!
|
能力值:
( LV9,RANK:330 )
|
-
-
9 楼
**************************
? 表达式 [计算一个表达式的值]
比如:mov eax,[999*ESI+465]
? 999*ESI+465,你就会知道是什么地址或数据
**************************
命令: D
作用: 显示某内存区域的内容
语法: D[size] [address [l length]]
用法:
size: B 字节; W 字; D 双字D ...
DD 就是双字显示!!!
而D 就是默认缺省DB,字节显示!!!
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
论坛里面好人真不少,向上面几位道谢了,我会记住你上面几位好心人的,说实话在看雪论坛上面真的可以学到不少东西。
|
能力值:
( LV4,RANK:50 )
|
-
-
11 楼
? 表达式 [计算一个表达式的值]
比如:mov eax,[999*ESI+465]
那么“? 999*ESI+465“看到的应该是一个地址还是数据?
|
能力值:
( LV9,RANK:330 )
|
-
-
12 楼
自己试验,这个根据实际情况不同,nbw说过了。
|
能力值:
( LV9,RANK:250 )
|
-
-
13 楼
lea edi,dword ptr ds:[esi+410]
这句执行完后 edi 的内容是esi的值加上410
所谓数据和地址是相对而言的。你可以把这个值理解成地址,
也可以把这个值理解成数据。
听起来有点费解是不是:D ,自己试验一下就知道了。
例如 lea eax,[ebx+ecx]
|
能力值:
( LV4,RANK:50 )
|
-
-
14 楼
好的知道了,但是有时候看到的是乱码,这是怎么回事?
|
能力值:
( LV12,RANK:650 )
|
-
-
15 楼
这种LEA只是编译器自动生成的形式,要是人自己写汇编还是用MOV吧
啥乱码?你是说用?出来的吗,那是它把不可显示字符非得显示出来,所以就成乱码了:D
|
能力值:
( LV4,RANK:50 )
|
-
-
16 楼
哦,是这样,谢谢。
|
|
|