69 lines
1.0 KiB
NASM
69 lines
1.0 KiB
NASM
; strlen
|
|
bits 64
|
|
|
|
; program being used for Pin exercise
|
|
|
|
SECTION .data
|
|
mystr1: db 'string1',0
|
|
mystr2: db 'string2',0
|
|
mystr3: db 'string3',0
|
|
|
|
SECTION .text
|
|
|
|
myfun1:
|
|
push rbp
|
|
mov rbp, rsp
|
|
xor rax, rax
|
|
lea rax, [rax]
|
|
leave
|
|
ret
|
|
|
|
myfun2:
|
|
push rbp
|
|
mov rbp, rsp
|
|
mov rcx, rsi ; second param, len in bytes
|
|
test rcx, rcx
|
|
jz .done
|
|
.encrypt:
|
|
xor byte [rdi], 0x42 ; first param, pointer to byte array that needs en- or decryption
|
|
inc rdi
|
|
loop .encrypt
|
|
.done:
|
|
leave
|
|
ret
|
|
|
|
myfun3:
|
|
push rbp
|
|
mov rbp, rsp
|
|
xor rax, rax
|
|
add rax, rdi ; first param
|
|
add rax, rsi ; second param
|
|
leave
|
|
ret
|
|
|
|
global _start
|
|
_start:
|
|
%include "macros.asm.inc"
|
|
;%include "header.asm.inc"
|
|
|
|
mov rdi, 5
|
|
mov rsi, 10
|
|
call myfun3
|
|
|
|
call myfun1
|
|
call myfun1
|
|
call myfun1
|
|
call myfun1
|
|
call myfun1
|
|
|
|
; encrypt
|
|
mov rdi, mystr1
|
|
mov rsi, 7
|
|
call myfun2
|
|
|
|
; write mystr1 to stdout
|
|
sys_write 1, mystr1, 7
|
|
|
|
%include "sysexit.asm.inc"
|
|
|