能力值:
( LV2,RANK:10 )
|
-
-
2 楼
第一个问题,你说的没错,但是仅仅这样啥都看不出来。可以考虑过去找一找函数名。
第二个问题,上面的eax返回的应该是一个结构指针,这里就是取该结构第六个dword值。
第三个问题,记得是有符号数乘法,格式忘了,去查intel手册或者等别人来答吧。
第四个问题,这指令是ecx加上立即数269EC3。
初学反汇编,如果连指令都弄不清楚就该准备一本工具书什么的……
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
弱弱的问一句....
什么叫立即数
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
立即数,我的理解就是相当于C语言的常量。
呵呵。不知道对不对!
还有,看了楼主上面的,也有一个问题:
不知道楼主看的是那本汇编的书,怎么我看了王爽老师的书。没有涉及到EAC,ESP这些寄存器的?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
回楼上的.不是王爽的那本书.是我自己用OD反汇编的一个小软件截取的代码
|
能力值:
(RANK:350 )
|
-
-
6 楼
1.是的
2.应该是的
3.请查阅指令手册
4.ADD ECX,269EC3=(ECX = ECX+269EC3)
正因为如此,Windows操作系统干脆为用户程序“安排好了一切”。具体表现在为用户程序的代码段、数据段和堆栈段全部预定义好了段描述符。这些段的起始地址为0,限长为ffffffff,所以用它们可以直接寻址全部的4 GB地址空间。程序开始执行的时候,CS,DS,ES和SS都已经指向了正确的描述符,在整个程序的生命周期内,程序员不必改动这些段寄存器,也不必关心它们的值究竟是多少(实际上,想改也改不了)。
所以对Win32汇编程序来说,整个源程序中竟然可以不用出现段寄存器的身影。这在DOS汇编编程中是不可想像的。回顾本节开头提出的问题,答案是:并不是Win32汇编源代码用不到段寄存器,而是用户在使用中不必去关心段寄存器!
---------《Windows环境下32位汇编语言程序设计》
PS.你给出的这段代码应该属于某个系统dll而不是你说的那个小软件
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
这样的话。那本书有介绍到这些存储器的呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
我想这应该是那个软件调用了一个DLL里的函数.....
我想问一下...那如果有DS:.....那DS是指向的哪里呢
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
ADD ECX,DS:[269EC3]
意思就是:ECX=ECX+((DS)*16+(269EC3))
这里的269EC3应该是偏移地址。
ADD ECX,269EC3
意思是:ECX=ECX+269EC3
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
那DS里到底是什么东西呢
|
能力值:
(RANK:680 )
|
-
-
11 楼
建议LZ还是先找本x86汇编的书好好的看看.
基础知识不容忽视.
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
问一下....X86的书和8086的书有什么区别????
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
电脑升级了,CPU总线从8位->16位->32位(寄存器位数相应增加)。
所以虽然理论基础是一样的,但是最好楼上提到的32位下的书来看看。
不然就会出现下面这个问题。
因为王爽老师的书是针对16位的,去掉那个E就比较眼熟了吧。
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
也是哦。不过哪个EAC是怎么来的?
还是说这些寄存器是32位的?
win32是不是有这方面的介绍?
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
DS里面的内容,是程序加载进去后指向数据段的段地址,是由程序控制的。
你可以看下机器码那块有没有?
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
带E的都是32位下的。《Windows环境下32位汇编语言程序设计》是本很好的书。
EAC? 你是说EAX么?
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
od里可以看到ds的值
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
86汇编都快忘完了~~~
|
|
|