elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Reemplazar caracter
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Reemplazar caracter  (Leído 3,971 veces)
SheKeL_C$


Desconectado Desconectado

Mensajes: 549


_-=[Sh3K3L_C$]=-_


Ver Perfil
Reemplazar caracter
« en: 5 Abril 2015, 22:43 pm »

Estoy empezando con ensamblador y haciendo pequeños projectos...

Lo que quiero es recibir el path del propio ejecutable:

Supongo que habra otras formas de hacerlo, mas rapidas o quizas mas eficaces, pero quiero ir teniendo soltura con asm

Código
  1. invoke GetModuleFileName, 0, addr temp, 256
  2. mov esi, esp
  3. push esi
  4.  
  5. ;Solo el path
  6. .if i == 1
  7.  
  8. xor eax,eax  
  9. loop_len:
  10. mov dl,[esi]
  11.   .if dl == 5Ch; \
  12.   mov eax, esi
  13.   .elseif dl == 0
  14.   jmp done
  15.   .endif
  16.  
  17. inc esi
  18. jmp loop_len
  19.  
  20. done:
  21. ; Aqui teniendo la posicion del ultimo \ quiero sobreescribirla con un caracter nulo para cuando coja "esi" solo me devuelva el path
  22. mov eax, 0
  23. .endif

EDIT:

He logrado hacerlo poniendo esto

mov ebx, 0
mov [eax], ebx 



No abro otro hilo ya que esta duda esta relacionada con lo anterior...

Esto es lo que tengo:
ESI: apunta a toda la cadena
EAX: Apunta a una posicion dentro de esa cadena

Como hago para que esi "apunte" a la direccion que esta en EAX

Ejemplo:

String original: "Mi casa tiene dos ventanas"
ESI apunta a "M" y sigue hasta encontrar un caracter nulo, por lo tanto obtendria la string original
Si reemplzazo el caracter "d" de la palabra "dos", obtendre a partir de ESI => "Mi casa tiene ", ahora lo que quiero obtener es "os ventanas"


« Última modificación: 6 Abril 2015, 01:49 am por SheKeL_C$ » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Reemplazar caracter
« Respuesta #1 en: 6 Abril 2015, 15:26 pm »

mov esi,eax no funcionaría?


En línea

xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: Reemplazar caracter
« Respuesta #2 en: 6 Abril 2015, 21:25 pm »

Porque no explicas mejor el problema, es dificil ayudarte de esta forma.

Citar
Esto es lo que tengo:
ESI: apunta a toda la cadena
EAX: Apunta a una posicion dentro de esa cadena

Como hago para que esi "apunte" a la direccion que esta en EAX

Si es esa la duda, @ivancea96 ya te dio la respuesta, simplemente haz un push a ESI por si luego quieres recuperar la anterior direccion.

Citar
Ejemplo:

String original: "Mi casa tiene dos ventanas"
ESI apunta a "M" y sigue hasta encontrar un caracter nulo, por lo tanto obtendria la string original
Si reemplzazo el caracter "d" de la palabra "dos", obtendre a partir de ESI => "Mi casa tiene ", ahora lo que quiero obtener es "os ventanas"

Que se supone que EAX esta apuntando a la "d"?

Bueno como no entiendo mucho como lo tienes organizado, te digo una forma de hacer eso, recorre la cadena hasta enontrar la "d", eliminala si quieres o si no a partir de localizar la "d" copia el offset, pero sumando desde ese caracter logico.

Un saludo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines