访问电脑版页面

导航:老古开发网手机版其他

程序中关于变量的引用,和函数的调用

导读:
关键字:

程序中关于变量的引用,和函数的调用

cseg segment
 assume cs:cseg,ds:cseg
 org 100
start:
 mov bx,word ptr aaa
virus_start:
 call get_start
 mov ah,4ch
 int 21h
get_start:
 mov ax,offset virus_start
 ret

aaa db ''abcd'',0
cseg ends
end start

上面的程序进行反汇编之后。
-u
13E7:0064 8B1E7300      MOV     BX,[0073]
13E7:0068 E80400        CALL    006F
13E7:006B B44C          MOV     AH,4C
13E7:006D CD21          INT     21
13E7:006F B86800        MOV     AX,0068
13E7:0072 C3            RET
13E7:0073 61            DB      61
13E7:0074 62            DB      62
13E7:0075 63            DB      63
13E7:0076 64            DB      64

可以看到程序引用变量aaa的时候,是通过绝对地址进行引用的。
13E7:0064 8B1E7300      MOV     BX,[0073]
8b1e 是操作码,7300是操作数。可以知道操作数是一个绝对地址。

在进行函数调用的时候
13E7:0068 E80400        CALL    006F
你可能会以为call 006f是通过绝对地址来进行函数的调用的。
可是这是反汇编之后的,是经过加工了的。
我们要看的是操作码和操作数,在该指令中
操作码是e8,操作数是0400(也就是4),可见是相对于
13E7:006B B44C          MOV     AH,4C(call 006f的下一条语句)的指令偏移。


这些知识都是写COM之类病毒的最基本的知识

 

附:函数的调用分为near,short,far.

short最惨,被调用的函数和调用点只能有128字节的偏移量。

near可以达到64k(可以调用本段的函数),随意对于COM足够用了。

far则可以调用任意段的函数。

来源:   作者:  2006/9/25 16:50:53
栏目: [ ]

相关阅读

安森美推出新的高功率图腾柱PFC控制器,满足具挑战的能效标准

动态功耗低至60μA/MHz!助力设备超长续航,首选国民技术低功耗MCU!