ucinany adres liniowy w nasm

ucinany adres liniowy w nasm
CorruptedByCPU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 211
0

nasm nie kompiluje prawidłowo prostego kodu źródłowego :(

Kopiuj
[BITS 64]	; 64 bitowy kod
[ORG 0x0000000100000000]	; adres logiczny kodu programu

start:
	mov	ax,	ss
	mov	ds,	ax
	mov	es,	ax

	mov	rsi,	text_start_from_new_line



adres 0x100000378 - etykieta text_start_from_new_line



[akasei@localhost wataha]$ nasm -f bin shell.asm -o shell.bin
[akasei@localhost wataha]$ ndisasm shell.bin 
00000000  668CD0            mov eax,ss		<- ?!?!?!
00000003  8ED8              mov ds,ax
00000005  8EC0              mov es,ax
00000007  48                dec ax		<- ?!?!?!
00000008  BE7803            mov si,0x378	<- ?!?!?!
Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

kompilujesz na 64 bity a dezasemblujesz jakby to było 32 16

CorruptedByCPU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 211
0

problem już rozwiązałem dyrektywą[DEFAULT REL]
dzięki temu wszystkie adresy są relatywne, a nie absolutne - co nie działa w trybie 64 bitowym
działo się tak, że mając polecenie:

Kopiuj
mov rcx, etykieta

nasm przerabiał to na

Kopiuj
mov ecx, dword etykieta

obcinał starszą część rejestru rcx gdzie były cenne informacje
po przełączeniu na obliczanie adresów relatywnie wszystko działa poprawnie i nasm już przerabia na

Kopiuj
mov rcx, qword rip+374 ; etykieta

lub

mov rcx, qword rip-126 ; etykieta_2
Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

problem nie istniał; problem stworzyłeś asemblując kod jako 64-bitowy a dezasemblując tak jakby to był 16-bitowy.
zdecyduj się po prostu, jaki ma być.

CorruptedByCPU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 211
0
Azarien napisał(a):

problem nie istniał; problem stworzyłeś asemblując kod jako 64-bitowy a dezasemblując tak jakby to był 16-bitowy.
zdecyduj się po prostu, jaki ma być.

problem istniał :D mogę pokazać raz jeszcze, po prostu zły dałem przykład (moja nieuwaga)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.