Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ErielSinh

#1
Hacking / Re: ¿Sirven los CTFs para el Hacking?
Abril 16, 2022, 11:16:48 PM
gracias por compartir tu experiencia
#2
Citar
Me cito a mi yo del pasado (perdon por el reflote)

Increible como cambian las cosas con el tiempo.  Casi cinco años y me han pasado muchas cosas desde que escribí esto. Recuerdo el día, dónde estaba y las sensaciones que tenía.  Se podría decir que en ese momento estaba tocando fondo y no lo sabia, pensaba que quedaba mas caída pero ahora repaso todo lo acontecido desde entonces y veo que he ido cumpliendo sueño tras sueño. Objetivo tras objetivo y todo fue paso a paso, de forma sutil, sin darme cuenta de que llegaba a las metas.

"Si tienes un ojo puesto en la meta solo te quedará uno para el camino".

En resumen, 

Al tiempo de escribir eso deje ese trabajo y encontre otro que me motivaba mas pero los jefes eran unos incompetentes. En 2019 me fui de mochilero por el mundo durante 13 meses y regrese por la pandemia. Encontre un trabajo de SysAdmin y hago teletrabajo. En breves seré Tecnico de Ciberseguridad en esa misma empresa. Todavía no me lo creo.  LO CONSEGUÍ. Lo hice joder !!! jajajaja. Increible. 

Es por esto que reaparezco por aqui  y he visto los ultimos hilos que escribí.

Estaré ratoneando por la zona de reversing y analisis de malware.  Toca desenpolvar los miticos manuales de ANTRAX.

Sin comunidades como esta no hubiese sido posible. Un saludo Underc0ders.
eres un crack felicidades y mis respetos
#3
Buenas underc0ders, les queria pedir una ayuda hace tiempo lei un libro de hacking del tipo "aprende desde cero" en la primera parte creo que tenia el famoso manifiesto, en los capitulos se podia aprender sobre fundamentos de informatica tipo redes (paquetes, tcp ip, etc) como funcionan las webs(algo de html), los sistemas operativos, despues hablaba de los tipos de malware y como funcionaban, acudi a ustedes porque quizas alguien lo haya leido, era comun en los "packs de libros de hacking" agradeceria su ayuda
#4
ASM / Instrucciones basicas en ensamblador [facil]
Diciembre 17, 2020, 07:32:15 PM
Al instalar emu8086 tenemos una guia a la que podemos acceder que nos brinda toda la informacion necesaria para empezar a programar en ensamblador, la guia esta en ingles y explica bien de forma resumida para que sirven las instrucciones
Esta corta guia es mi manera de haber entendido esas instrucciones con ejemplos faciles, espero les sirva
esta vez veremos algunas de las instrucciones basicas de ensamblador para el procesador 8086

Instruccion MOV:  copia el operando 2 al operando 1

Ejemplo:
MOV OPERANDO1, OPERANDO2 
Es como si hicieramos
OPERANDO1=OPERANDO2


podemos usar esta instruccion con [registro,memoria],[memoria,registro],[registro,registro],[memoria,valor_inmediato],[registro,valor_inmediato] como operando1 y operando2

Instruccion ADD permite añadir el valor de OPERANDO2 a OPERANDO1 como una suma

Ejemplo:
ADD OPERANDO1,OPERANDO2
es como si hicieramos un
OPERANDO1=OPERANDO1+OPERANDO2


Instruccion SUB esta instruccion permite restar, es similar a ADD

Ejemplo
SUB OPERANDO1, OPERANDO2
Es como si hicieramos
OPERANDO1=OPERANDO1-OPERANDO2

Se puede utilizar con [registro, memoria], [memoria,registro], [registro,registro], [memoria,valor_inmediato], [registro,valor_inmediato]  como operando1 y operando2


Instruccion MUL y DIV: Esta instruccion nos permite multiplicar o dividir un registro, pero solo contamos con un OPERANDO, debemos almacenar en AL el valor a multiplicar (En caso de que querramos multiplicar un BYTE) o en AX( En caso de que querramos multiplicar un WORD)

primero  almacenaremos el valor que queremos multiplicar en AL
MOV AL,3   o  AX MOV AX,20
MOV BL,10 o MOV BX,1225
Ejemplo:
MUL BL o MUL BX
Es como si estuvieramos haciendo esta operacion
AX=AL*OPERANDO o  DX AX=AX*OPERANDO

del mismo modo si trabajamos con div
movemos a AL[byte] o AX [word] el valor que deseamos dividir
Ejemplo:
MOV AL,30  o MOV AX,5010
              MOV BL,5    O MOV BX,5
              DIV BL o DIV BX

Es como si hicieramos
AL=BL/OPERANDO   o AX= BX/OPERANDO
                                el modulo se guarda en AH  o en DX
DIV y MUL funcionan unicamente con [registros] o [memoria]

Instruccion JMP esta instruccion realiza un salto no condicional, es decir ocurre si  o si
Código: php

include 'emu8086.inc'
org 100h

mov AX,5
jmp etiqueta1
  printn 'nada de esto se va a imprimir'
  printn 'porque el jmp hace que el programa salta'
  printn 'a lo que esta despues te etiqueta1'
  mov ax,10
etiqueta1:
  printn 'AX sigue valiendo 5 porque nunca se cumplio el segundo mov'
ret


aqui un ejemplo:


Instruccion CMP: realiza una comparacion entre OPERANDO1 y OPERANDO2 si ambos operandos son iguales entonces se enciende un FLAG    ZF=1  si no son iguales ZF=0 tambien se encienden otros flags dependiendo del caso

EJEMPLO:
CMP OPERANDO1,OPERANDO2
es como si hicieramos OPERANDO1-OPERANDO2

Instruccion JE JG JL Estas instrucciones aprovechan la instruccion CMP, despues de la comparacion utilizamos
JE Si ambos son iguales  OPERANDO1-OPERANDO2==0
JG Si Operando1 es mayor a Operando2 OPERANDO1-OPERANDO2>0
JL Si Operando1 es menor que Operando2 OPERANDO1-OPERANDO2<0

los utilizamos cuando queremos realizar comparaciones En el ejemplo compararemos la nota de fulanito con la nota necesaria de aprobacion e imprimiremos un mensaje de aprobacion o reprobacion


Instruccion LOOP: este es un ciclo repetitivo que ya explique en listas, pero la volveremos a ver, para indicar que numero de veces queremos que se repita una accion almacenamos un valor en CX, todo lo que este dentro de la etiqueta loop se repetira
por ejemplo si hacemos un MOV cx,5 las acciones se repetiran con cx=5, CX=4, CX=3, CX=2, CX=1

Ejemplo: imprimir 5 veces "debo hacer la tarea"
Código: php

include 'emu8086.inc'
org 100h

mov cx,5

repetir:   
printn 'debo hacer la tarea' 
loop repetir   

ret



y bien estas son las instrucciones basicas que se encontraran en todo el codigo assembler que vean
empece a estudiar assembler con el objetivo de introducirme al cracking y tambien para modear malware pero no tengo la idea si lo que he posteado hasta ahora es suficiente o se necesita mas conocimiento en assembler, en fin espero que aprovechen el contenido trate de hacerlo muy facil de entender 
#5
En este tema veremos algunos modos de direccionamiento en la memoria, cuando hablamos de esto nos referimos a como podemos identificar una localizacion de memoria, en la memoria de la computadora tenemos mucha informacion almacenada, cuando un programa Software necesita recuperar esta informacion necesita localizar su ubicacion tambien cuando necesita almacenar informacion debe almacenarla en una direccion de memoria, asi mismo, cuando un dispositivo fisico Hardware  necesita utilizar informacion o almacenarla necesita recuperar la direccion de memoria.
Cada celda de memoria esta identificada por un numero o direccion de memoria, estos espacios ocupan un byte = 1 conjunto de 8 bits, este es el tamaño minimo que se utiliza para almacenar datos o instrucciones
En este tema aprenderemos a:

  • Como trabaja cada modo de direccionamiento de datos en la memoria,
  • Aprenderemos a formar instrucciones en lenguaje de ensamblador para utilizar los modos de direccionamiento,
  • Utilizar el direccionamiento que sea mas apropiado para cada caso que necesitemos
Formato de una instrucción: existe una sintaxis general para una instrucción

INSTRUCCION DESTINO,ORIGEN

El Destino es donde se deja el resultado de la operacion, en este caso se deja lo que esta almacenado en ORIGEN o su dirección
Existen algunas pocas instrucciones que solo funcionan con un operador y otros con ningun operador

INSTRUCCION DESTINO
INSTRUCCION

Clases de Instrucciones: las instrucciones por su comportamiento se clasifican en:

  • Instrucciones de Procesamiento: se realiza un proceso aritmetico o logico
  • Instrucciones de Acceso a Memoria: se encargan de trasnferir informacion a la memoria o desde la memoria
  • Instrucciones de Transferencia de Datos: nos ayuda a enviar y recibir informacion utilizando los dispositivos de entrada y salida
  • Instrucciones de Control: alteran el flujo de control cuando un programa esta en ejecucion

Para el mejor entendimiento del tema se necesita que tengan conocimiento de la arquitectura del microprocesador 8086 u 8088 aunque en general utilizaremos toda la programacion orientada al 8086, en el siguiente link encontraran toda la informacion necesaria  No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Modos De Direccionamiento de Memoria: existen varios modos de direccionamiento, nosotros veremos los 7 mas importantes, para los ejemplos de cada modo de direccionamiento utilizaremos un ejemplo en emu8086

Direccionamiento Inmediato: En la instruccion esta incluida directamente el operando, es muy util cuando queremos inicializar los registros con un valor constante

Ejemplo:
MOV BX,15
; movemos el valor 15 y lo almacenamos en el registro BX


ahi podemos ver un ejemplo del direccionamiento inmediato; movemos 105hexadecimal al registro AX, 10octal al registro BL y un numero binario equivalente a 132hexadecimal en binario
Ejemplo 2:


En este ejemplo almacenamos b800h en AX y luego almacenamos lo contenido en AX en ES
En el ultimo ejemplo inicializamos una variable y luego la almacenamos en un registro



Direccionamiento de Registros: Para mover el contenido de un registro AMBOS deben ser del mismo tamaño

MOV BX,AX
MOV AL,BL

Ejemplo: movemos 1133h a AX, el valor contenido en AX en BX 1133h, la parte de AH = 33 a DH y la parte AL=11 a DL


Direccionamiento Directo:  para explicar esto utilizamos algo como MOV OPERANDO1, [direccion_de_memoria]   almacenamos en OPERANDO1 lo que este contenido en la direccion de memoria, tambien funciona con MOV [direccion_de_memoria],OPERANDO2 movemos lo que esta contenido en OPERANDO2 y lo almacenamos en la direccion de memoria especificada


Direccionamiento Indirecto de Registro: utilizamos los registros de segmento mas un registro base  bx/bp  o indice SI/DI para apuntar a una direccion de memoria, ampliamos nuestro rango de direccionamiento de memoria apuntada normalmente se usa para algunas funciones especiales en assembler


Direccionamiento Relativo de Base: la direccion del operando se obtiene de la suma del numero y el contenido de un registro base BX/BP, este direccionamiento es el mas usado para acceder a estructuras de datos complejas


Direccionamiento Indexado Directo: El operando se encuentra en una direccion dada por la suma de un registro de segemento*16, un registro indice SI o DI y un desplazamiento de 8 o 16 bits


Direccionamiento Indexado a Base: el operando se encuentra en una direccion especificada por la suma de un registro de segmento*16, uno Base, uno de indice y opcionalmente un desplazamiento de 8 a 16 bits


   MOV   AX,ES:[BX+DI+DESP]      ó      MOV   AX,ES:desp[BX][DI]
    MOV   CS:[BX+SI+DESP],CX      ó      MOV   CS:desp[BX][SI],CX

No todos los registros pueden combinarse entre si
Combinaciones de registros de segmento y desplazamiento En la siguiente tabla podemos ver todas las posibles combinaciones de registros de segmento y registros de desplazamiento


Con esto ya podremos utilizar los modos de direccionamiento de memoria en ensamblador, existen ciertas direcciones de memorias que no podemos utilizar ya que estan asignadas a funciones especiales

Mapa de Memoria de un 8086/8088

#6
ASM / Macros en Assembler emu 8086 [Facil]
Diciembre 16, 2020, 09:43:45 PM
en assembler para usar una funcion utilizamos los procedimientos, pero los procedimientos no nos permiten usar parametros, para utilizarlos debemos hacer el uso de macros
definimos el macro de esta forma
nombre_macro macro [atributo21,atributo2,.....,atributon]
[aqui ponemos todas las operaciones]
endm
ahora veremos un ejemplo
Imprimir la bandera de Bolivia mediante macros en assembler
Código: php

include 'emu8086.inc'
ejercicio5 macro esqsup,esqinf, col
    mov ax,0600h
    mov cx, esqsup
    mov dx, esqinf
    mov bh, col
    int 10h   
    endm                                                       

org 100h

ejercicio5 1100h, 184fh, 020h
ejercicio5 0000h, 074fh, 040h
ejercicio5 0800h, 104fh, 0e0h

ret







#7
ASM / Re:listas en assembler ciclo loop emu8086 [facil]
Diciembre 10, 2020, 01:52:29 AM
gracias por las recomendaciones, estoy haciendo un curso de assembler para luego empezar con cracking quise compartir algunos ejercicios que habia resuelto para practicar algunos ejercicios
#8
ASM / Procedimientos en assembler emu8086 [facil]
Diciembre 10, 2020, 01:27:50 AM
En muchos lenguajes de programacion utilizamos las funciones, despues de declarar una funcion la invocacion n veces en la funcion principal, en assembler el equivalente a esto son los procedimientos, empezamos con un ejemplo facil
Programa para imprimir n veces una cadena en assembler utilizando un procedimiento
Código: php

include 'emu8086.inc'
org 100h     
; utilizaremos un loop para imprimir 5 veces nuestro procedimiento
mov cx,5  ;movemos el valor 5 a cx para que el loop se repita 5 veces
repetir:
call programita ; llamamos a nuestro procedimiento
  loop repetir         
ret             
programita proc; creamos un procedimiento llamado programita
    mov ax,2 ; movemos a ax el valor de 2
    call pthis ; 
    db 13,10,'mensaje',0 ; imprimimos la cadena 'mensaje'
    ret
    programita endp ; terminamos el procedimiento con endp

DEFINE_PTHIS
DEFINE_PRINT_STRING
DEFINE_SCAN_NUM
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS   
END

podemos repetir n veces nuestro procedimiento cuando lo necesitemos lo que nos permite ahorrar mucho codigo en programas grandes
ejecutamos en emu8086
seguimos con otro ejemplo, la practica hace al maestro
Programa para imprimir una lista de n valores mediante procedimientos
Código: php

;imprimir una lista de n valores mediante procedimientos
include 'emu8086.inc'
org 100h 
; DEFINIMOS VARIABLES
mov bx,0
print 'ejercicio 2'
printn ''
print 'ingrese el tamaño de la lista: '
call scan_num ;el se guarda en cx
printn ''       

suma: 
call ejercicio2
printn ''
loop suma       
ret

ejercicio2 proc
    mov ax,lista[bx]
print '['
    call print_num
    print ']'
    add bx,2     
    ret 
    ejercicio2 endp 

DEFINE_PTHIS
DEFINE_PRINT_STRING
DEFINE_SCAN_NUM
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
lista dw 8,1,2,5,4
END

ejecutamos en emu8086
Otro ejercicio
Imprimir el mayor de una lista mediante procedimientos en assembler
Código: php

include 'emu8086.inc'
org 100h 
mov bx,0
print 'ejercicio 3'
printn ''
call ejercicio3
ret
ejercicio3 proc
mov cx,5;definir tamaño de la lista
   
    recorrer:
        mov ax,lista[bx]
        ;call print_num
        ;printn ''
        cmp ax,mayor
        jg cambiar
        jmp continuar
            cambiar:
               mov mayor,ax
            continuar:
           
            add bx,2
    loop recorrer

    mov ax,mayor
    print 'el numero mayor de la lista es: '
    call print_num

    ret 
    ejercicio3 endp 
lista dw 3,1,2,5,4
mayor dw 0
DEFINE_PTHIS
DEFINE_PRINT_STRING
DEFINE_SCAN_NUM
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS

END


otro ejemplo
Buscar un numero en un vector con procedimientos en assembler
Código: php

include 'emu8086.inc'
org 100h 
mov bx,0 

print 'ejercicio 4'
printn ''
print 'ingrese un numero a buscar en el vector '
call scan_num
printn ''
call ejercicio4
fin:
 
ret 
ejercicio4 proc 
  mov acomparar,cx
  mov cx,5
  recorrer:   
  mov ax,lista[bx]
  call print_num
  print ' '
  add bx,2
  cmp ax,acomparar
  je esIgual
 
loop recorrer
  printn ''
  printn ' el numero no esta en la lista'
  jmp fin
    ejercicio4 endp   
   
  esIgual proc
    lea si,mensaje1
    printn ''
    call print_string
    ret   
    jmp fin
    esIgual endp

   
lista dw 3,1,2,5,4
acomparar dw 0
DEFINE_PTHIS
DEFINE_PRINT_STRING
DEFINE_SCAN_NUM
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
mensaje1 db 13,10,' el valor buscado esta en el vector '

END

haciendo la prueba en emu8086
#9
siguiendo con los ejercicios para familiarizarnos con assembler en el procesador 8086 mediante emu8086 haremos el uso de las librerias para capturar datos por teclado o imprimirlos por pantalla de forma sencilla
Código: php

include emu8086.inc  ; declaramos la libreria
org 100h           

PRINT 'oh mae ya mo shindeiru'; podemos utilizar print para imprimir una cadena
gotoxy 10,5 ; nos vamos a la direccion 10 en x, 5 en y
putc 65 ; imprimimos el caracter 65 en ascii que es el caracter A
gotoxy 10,6
putc 'B' ; imprimimos B

utilizamos putc y print desde la libreria
ejecutamos
ahora que entendimos el funcionamiento con algo basico subamos de nivel
Programa que recoge un numero por teclado y lo imprime por pantalla
Programa que imprime una cadena por pantalla
Programa que recoge 2 numeros por teclado e imprime la suma de ambos por pantalla

Código: php

include 'emu8086.inc'
org 100h   
  print 'ejercicio 1'
  ;recoger primer numero
  printn ''
  lea si, msg1
  call print_string
  call scan_num
  mov ax,cx
  ; imprime las siguientes palabras
  ;call pthis
  ;db 13,10,'el numero que ingresaste es: ',0
  ;call print_num
  mov bx,ax
 
  ;recoger el segundo numero
  lea si,msg2
  printn ''
  call print_string
   
  push ax
  lea si, msg1
  call scan_num
  mov ax,cx
 
  ;call pthis
  ;db 13,10,'el numero que ingresaste es: ',0
  ;call print_num
  mov bx,ax
  pop ax
  add ax,bx
  ; imprime la suma de los dos numeros guardada en ax 
  call pthis
  db 13,10,'la suma total es : ',0
  call print_num
         
ret             
msg1 db 'ingresa el primer numero: ',0
msg2 db 'ingresa el segundo numero: ',0
DEFINE_SCAN_NUM
DEFINE_PRINT_STRING
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
DEFINE_PTHIS
 
END

utilizamos definiciones, estas se declaran despues del RET










#10
ASM / modo grafico caracteres emu8086 [facil]
Diciembre 09, 2020, 11:47:37 PM
hoy experimentaremos a imprimir en el modo grafico en assembler en emu8086
un ejemplo basico para entender como funciona
Programa para imprimir la letra a en el modo grafico emu8086
Código: php

; si queremos modificar la direccion de pantalla es B800 contiene 2 bytes
; B800; 2 bytes (Caracter,Color)
org 100h
mov ax,0b800h; direccionando a memoria de pantalla 0b800h
mov es,ax; ponemos al segmento extra para poder acceder
mov es:[0],65; imprimimos el caracter A su valor en codigo ascii es 65 en la memoria de pantalla
ret

ejecutamos en emu

Ahora practiquemos un poco mas
nuestra zona de memoria de la pantalla es lineal, va desde el 1 hasta el 2000 linealmente, cada direccion de memoria se expresa en hexadecimal
tendriamos algo parecido a esto
;   zona de memoria es una especie de matriz o vector linea   0 ---------- 80
                                                                                         81--------- 160
                                  161-------- 240
                                  241-------- 320 (2000 caracteres en total)
ahora para practicar imprimiremos una cadena de caracteres A
Imprimir  caracteres A --------------------->
                               <---------------------A
Código: php


org 100h     
mov bx,0
mov cx,3 ; repetiremos 3 veces a->
                              ; <-a
                             
mov ax,0b800h; memoria de pantalla 

   
   ciclo:  ; este es el ciclo global que imprimira ambas lineas
   
   push cx   
   mov bx,contadord
   mov cx,80; son 80 caracteres por linea que debemos imprimir lo guardamos en cx para repetir 80 veces
   imprimirder:  ; ciclo que imprime a la derecha 
   mov es,ax; movemos al segmento extra
   mov es:[bx],65; imprimimos a en el indice 0
   ;mov es:[bx+320],65   
   ;mov es:[bx+640],65
   add bx,2         
   loop imprimirder
   
   add contadord,320
   pop cx
   push bx
   push cx 
   mov bx,contadori
   mov cx,80   
   
   imprimirizq: ; ciclo que imprime a la izquiera
   mov es:[bx],65
   sub bx,2   
   loop imprimirizq
   
   add contadori,320   
   pop cx
   pop bx
   loop ciclo     
     
ret     
contadord dw 0h ;iniciamos la primera linea en la direccion 0h para que empiece a imprimir desde ahi
contadori dw 318 ;iniciamos en la segunda fila 320-2 si tomamos en cuenta que es una direccion lineal
resta dw 2h ; utilizaremos la variable para el decremento         

viendo su ejecucion en emu8086
el modo de pantalla es de 80*25
entendiendo el funcionamiento cada posicion seria

Para practicar un poco mas, haremos una impresion de caracteres primero hacia abajo y luego hacia arriba
Código: php

org 100h     
mov ax,0b800h
mov es,ax
;mov bx,0
mov cx,3

inccolumna: 
push cx
push bx   
mov bx,posicionx
mov cx,25; repetir 2 veces columna
 
     abajo: 
      mov es:[bx],65
      ;mov es:[bx+1],24h
      add bx,160   
       loop abajo     
pop bx
pop cx
  push cx
  push bx
  mov cx, 25
  mov bx,posiciony
   arriba:
    mov es:[bx+2],65
    sub bx,160     
    loop arriba 
  pop bx
  pop cx
   
add posicionx,4
add posiciony,4
loop inccolumna     
ret           
x dw 0       
posicionx dw 0h
posiciony dw 3840



como ven lo unico que cambia es el incremento, antes incrementabamos en 1 espacio, ahora añadimos +160 caracteres para imprimir en la siguiente linea, o decrementamos -160 para subir por la memoria de pantalla
movemos en CX el valor de 25 porque solo hay 25 lineas hacia abajo
ejecutemos en emu

ejecutemos

por ultimo les dejo un codigo que imprime las dos filas en direcciones contrarias al mismo tiempo
Código: php

org 100h     
mov ax,0b800h
mov es,ax
;mov bx,0
mov cx,3   
push ax
mov ax, posiciony  ;inicializar resto
mov resto,ax
pop ax
inccolumnadoble: 
push cx       
mov bx,posicionx
mov cx,25; repetir 2 veces columna
   
     abajo:
      ;mov ax,posiciony
      ; imprimir caracter hacia abajo
      mov es:[bx],65
      ;mov es:[bx+1],24h
      add bx,160
       ; imprimir caracter hacia arriba
       push bx 
       mov bx,resto
       mov es:[bx+2],65
       
       sub resto,160 
       pop bx
       loop abajo       
pop cx           
add posicionx,4 ; incrementar posicionx en 4 para siguiente columna
push ax            ; copiar la direcion de posicionx y aumentar 3840 + 4
mov ax,posicionx
mov resto,ax
pop ax 
add resto,3840 
loop inccolumnadoble     
ret           
x dw 0       
posicionx dw 0h
posiciony dw 3840
resto dw 0


a modo de curiosidad mario bros fue escrito en assembler


                                              


#11
ASM / listas en assembler ciclo loop emu8086 [facil]
Diciembre 09, 2020, 09:44:47 PM
El siguiente programa es un ejemplo sencillo de como funciona el ciclo de repeticion equivalente al for
Programa que imprime una lista y suma todos sus componentes
Código: php

org 100h;iniciamos en la direccion 100h de la memoria
mov bx,0 ; utilizaremos un contador en bx para movernos dentro de la lista, este inicia en cero
mov cx,5; en cx se declara el numero de repeticiones del loop nuestra lista tendra un tamaño de 5 asi que con 5 repeticiones  basta
repetir:  ;   aqui empezara el loop, tenemos nuestro loop con la etiqueta repetir:
; aqui debemos poner todas las acciones que queremos que se repitan
  mov al,lista[bx];  copiamos el contenido almacenado en lista[posicion] en al
  add suma, al ; sumamos a la variable suma el valor contenido en al, es como suma=suma+al
  add bx,1;  movemos nuestra posicion de la lista para la siguiente repeticion
loop repetir ; al llegar aqui saltara a la etiqueta repetir:
ret ; abajo de ret declararemos todos nuestras variables

lista db 4,3,5,78,1   ; declaramos nuestra lista en data byte con los valores 4,3,5,78,1
suma db 0; inicializamos una variable suma para almacenar el total de la suma de la lista

Ejecutamos nuestro codigo en emu8086, viendo las variables


Ahora veremos otro ejemplo con listas
Programa para determinar el mayor de una lista
Código: php

org 100h
mov bx,0
mov cx,n

repeticion:
   mov ax,lista[bx]
   cmp ax,mayor
   jg cambiar
   jmp continuar
   cambiar:
     mov mayor,ax   
   
   continuar:
   add suma,ax
   add bx,2     
   
loop repeticion
ret
n dw 5 
lista dw 4,3,5,7,1
suma dw 0   
mayor dw 0

Ejecutamos el codigo en emu8086


a modo de ejercicio intenten sacar el menor de la lista


#12
gracias voy a revizarlos ahora mismo
#13
verifica que el repositorio que agregaste sea el correcto, el update y upgrade sirven para actualizar  la lista de actualizaciones y aplicarla
primero configuraste virtual box para que reconozca tu tarjeta de red? esta en sus configuraciones la opcion del tipo de red que vas a usar
segundo  verifica si la tarjeta de red es compatible con kali, abre una terminal y escribe
Código: php
iwconfig

tendria que salir un mensaje con el nombre del dispositivo wifi
hay tarjetas inalambricas que no son compatibles con la auditoria inalambrica, con el nombre de tu chipset busca si es o no compatible con el modo monitor e inyeccion de paquetes
si has seguido el video creo que lo que hiciste mal es algo al añadir el repositorio, podrias eliminarlo y intentar hacer un update para ver si te sale algun error
#14
Hola, estoy tratando de conformar un grupo para competir en los Capture The Flag que se realizan en algunas conferencias de seguridad en mi pais, en una gestion anterior les enseñe a resolver dos retos el fg0s y otro simple que realice, abarcando retos simples y didacticos relacionados a la tematica de los CTF, he estado buscando retos activos y sencillos pero la verdad es que no los logro encontrar, me gustaria pedirles ayuda para ver si me pueden orientar cuales serian recomendados para principiantes que sean didacticos y faciles