Autor
|
Tema: Traducir de ensamblador a C (Leído 10,079 veces)
|
adelaperez
Desconectado
Mensajes: 2
|
Hola a todos. Necesitaría ayuda para poder traducir una función de ensamblador (no hay binarios) a C. La verdad es que estoy un poco perdida y no se como empezar. Así que necesitaria ayuda. Este es el codigo
Disculpad, lo borro poque esta incompleto. Cuando lo localice completo lo vuelvo a publicar
Gracias a todos Adela
|
|
« Última modificación: 18 Febrero 2018, 18:13 pm por adelaperez »
|
En línea
|
|
|
|
Geovane
Desconectado
Mensajes: 207
|
|
|
« Última modificación: 14 Febrero 2018, 19:07 pm por Geovane »
|
En línea
|
|
|
|
engel lex
|
Geovane lo contrario, ella quiere ASM -> C
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
.:UND3R:.
|
Hola a todos. Necesitaría ayuda para poder traducir una función de ensamblador (no hay binarios) a C. La verdad es que estoy un poco perdida y no se como empezar. Así que necesitaria ayuda. Este es el codigo
0x0000054d <+0>: lea ecx,[esp+0x4] 0x00000551 <+4>: and esp,0xfffffff0 0x00000554 <+7>: push DWORD PTR [ecx-0x4] 0x00000557 <+10>: push ebp 0x00000558 <+11>: mov ebp,esp 0x0000055a <+13>: push ebx 0x0000055b <+14>: push ecx 0x0000055c <+15>: sub esp,0x10 0x0000055f <+18>: call 0x450 <__x86.get_pc_thunk.bx> 0x00000564 <+23>: add ebx,0x1a9c 0x0000056a <+29>: mov DWORD PTR [ebp-0x10],0x0 0x00000571 <+36>: lea eax,[ebx-0x19a0] 0x00000577 <+42>: mov DWORD PTR [ebp-0x14],eax 0x0000057a <+45>: sub esp,0xc 0x0000057d <+48>: push DWORD PTR [ebp-0x14] 0x00000580 <+51>: call 0x3e0 <strlen@plt> 0x00000585 <+56>: add esp,0x10 0x00000588 <+59>: mov DWORD PTR [ebp-0x18],eax 0x0000058b <+62>: mov DWORD PTR [ebp-0xc],0x0 0x00000592 <+69>: jmp 0x5ad <main+96> 0x00000594 <+71>: mov edx,DWORD PTR [ebp-0xc] 0x00000597 <+74>: mov eax,DWORD PTR [ebp-0x14] 0x0000059a <+77>: add eax,edx 0x0000059c <+79>: movzx eax,BYTE PTR [eax] 0x0000059f <+82>: movsx eax,al 0x000005a2 <+85>: imul eax,DWORD PTR [ebp-0x18] 0x000005a6 <+89>: add DWORD PTR [ebp-0x10],eax 0x000005a9 <+92>: add DWORD PTR [ebp-0xc],0x1 0x000005ad <+96>: mov eax,DWORD PTR [ebp-0xc] 0x000005b0 <+99>: cmp eax,DWORD PTR [ebp-0x18] 0x000005b3 <+102>: jl 0x594 <main+71> 0x000005b5 <+104>: sub esp,0x8 0x000005b8 <+107>: push DWORD PTR [ebp-0x10] 0x000005bb <+110>: lea eax,[ebx-0x1992] 0x000005c1 <+116>: push eax 0x000005c2 <+117>: call 0x3d0 <printf@plt> 0x000005c7 <+122>: add esp,0x10 0x000005ca <+125>: mov eax,0x0 0x000005cf <+130>: lea esp,[ebp-0x8] 0x000005d2 <+133>: pop ecx 0x000005d3 <+134>: pop ebx 0x000005d4 <+135>: pop ebp 0x000005d5 <+136>: lea esp,[ecx-0x4] 0x000005d8 <+139>: ret
Gracias a todos Adela
Así como está es un trabajo de herrero, se ve que es una función pero hay referencias que no están incluidas en lo que compartes pues apuntan a otras direcciones de memoria del ejecutable, lo que se ve a simple vista es que se calcula un tamaño, ha de ser la string de entrada del usuario (carece referencias de scanf o gets) y luego tras una operación las imprime
|
|
|
En línea
|
Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
|
|
|
Geovane
Desconectado
Mensajes: 207
|
Ola
tens o ASM, mas não tens o binário ? como isso, qual origem ?
|
|
|
En línea
|
|
|
|
adelaperez
Desconectado
Mensajes: 2
|
No, lo siento, sólo el ASM Adela
|
|
|
En línea
|
|
|
|
trucador
Desconectado
Mensajes: 1
|
Deberías ponernos un poco en situaccion de donde sale ese código? Cambien como dice .:UND3R:. este codigo esta incompleto
|
|
|
En línea
|
|
|
|
djkamal
Desconectado
Mensajes: 64
Todo un mundo por descubrir
|
Hola aparentemente el codigo esta completo porque el desensamblado corresponde al MAIN de un programa en C y acaba en un retorno de control. Parece ser que el código no pertenece a un ejecutable pero probablemente corresponda a una librería que carga otro programa.
El mayor problema que veo no radica en el código ASM el cual si que tienes y no hay problema. El problema viene respecto al valor de los punteros y los registros ya que sin ellos no puedes saber que hace el programa en este bucle 0x00000594 <+71>: mov edx,DWORD PTR [ebp-0xc] 0x00000597 <+74>: mov eax,DWORD PTR [ebp-0x14] 0x0000059a <+77>: add eax,edx 0x0000059c <+79>: movzx eax,BYTE PTR [eax] 0x0000059f <+82>: movsx eax,al 0x000005a2 <+85>: imul eax,DWORD PTR [ebp-0x18] 0x000005a6 <+89>: add DWORD PTR [ebp-0x10],eax 0x000005a9 <+92>: add DWORD PTR [ebp-0xc],0x1 0x000005ad <+96>: mov eax,DWORD PTR [ebp-0xc] 0x000005b0 <+99>: cmp eax,DWORD PTR [ebp-0x18] 0x000005b3 <+102>: jl 0x594 <main+71>
No sabemos que condiciones tiene
|
|
|
En línea
|
Somos los artistas de la tecnologia de la informacion y no somos unos frikis solo unos Expertos en informatica
|
|
|
apuromafo CLS
|
eso parece un main donde existe un string cualquiera (hola)
el programa reserva espacio para llamar a la api strlenght, luego compara si es igual (mueve el valor 1),se ve algo mal porque lo normal es ver alguna variable declarada (debe estar en esas rutinas de dword
si no es igual osea es mayor o menor entonces va a otro lado
y en todos los casos debería imprimir el valor por pantalla (printf@plt)
saludos Apuromafo
|
|
|
En línea
|
Apuromafo
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Traducir video
Multimedia
|
P@cm@n
|
3
|
2,684
|
15 Octubre 2004, 03:35 am
por Songoku
|
|
|
¿Como traducir una intrucción ensamblador a codigo maquina?
Ingeniería Inversa
|
Thor
|
0
|
2,745
|
22 Abril 2005, 15:19 pm
por Thor
|
|
|
Traducir de C a ASM
Programación General
|
Søra
|
3
|
9,009
|
6 Junio 2010, 05:10 am
por Og.
|
|
|
Traducir de C++ a VB6
Programación Visual Basic
|
Rigoberta II
|
4
|
3,712
|
13 Mayo 2012, 04:57 am
por Rigoberta II
|
|
|
traducir ensamblador a codigo maquina
ASM
|
m@o_614
|
2
|
4,976
|
27 Septiembre 2013, 21:32 pm
por xv0
|
|