Python mezclado con ASM

Iniciado por ViejoMajara, 5 Abril 2015, 21:09 PM

0 Miembros y 1 Visitante están viendo este tema.

ViejoMajara

¡Hola!

Vaya por delante que soy nuevo en Python, que de ASM sé lo que haya podido aprender en las lecciones sobre OLLY de R.Narvaja y que también tengo que pensar bastante para saber en qué sección del Foro debo colocar las preguntas que se me ocurren.

Hace unos días en el Foro de Ingeniería inversa, en el titulado "[KeygenMe] Matrix <<1,2,3>> por mr.blood", presenté un keygen en Python. Funciona pero es muy lento porque tiene que hacer la comparación entre una ingente combinación de letras. En mi PC, si el nombre que introduzco no tiene clave posible, tarda casi 40 segundos. Pensé, si las comparaciones las pudiese hacer en ASM tardaría mucho menos.

Buscando por la red encontré un módulo pyasm.py en la página de un tal pyalot-pyasm que parece ser que permite injertar código ASM en Phyton. He tratado de hacer correr el "HOLA MUNDO" de ejemplo que hay en la página citada y me da un montón de errores.

Preguntas ¿Se puede injertar ASM en Python? ¿Acelera los módulos?¿Hay alguien que haya usado el pyasm y tenga algún ejemplo de uso?

Saludos.




ivancea96

¿Algo como esto no te funciona? http://codeflow.org/entries/2009/jul/31/pyasm-python-x86-assembler/

An vez de mezclar ASM con Python, también puedes plantearte usar un lenguaje como C, de más bajo nivel.

tincopasan

me parece que al pasar siempre por el interprete asm perderá velocidad, ¿por qué no programar en asm directamente?

ivancea96

Cita de: tincopasan en  6 Abril 2015, 00:33 AM
me parece que al pasar siempre por el interprete asm perderá velocidad, ¿por qué no programar en asm directamente?

Supongo que lo que hace en Python es compilar el ASM y guardarlo como una función, que luego ejecuta directamente. Por tanto, sería eficiente. El problema de ASM directamente es que es más complejo.

engel lex

Cita de: ivancea96 en  6 Abril 2015, 01:32 AM
Supongo que lo que hace en Python es compilar el ASM y guardarlo como una función, que luego ejecuta directamente. Por tanto, sería eficiente. El problema de ASM directamente es que es más complejo.

eso hay que revisarlo porque puede ser un simple interprete de asm

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.

ivancea96

Cita de: engel lex en  6 Abril 2015, 02:08 AM
eso hay que revisarlo porque puede ser un simple interprete de asm

Puede, pero sería una librería bastante inútil :/

engel lex

no sería inútil... sería practico para webs que quieren hacer asm de practica (al warzone de este foro) serviría para hacer debug, etc...

pero revisando el github de pyasm, creo qeu queda claro de que va
https://github.com/AmihaiN/pyAsm/blob/master/pyAsm.py
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.

ViejoMajara

¡Hola!

Ivancea96, efectivamente es ese 'Hello World' el que no consigo correrlo en Python. Tengo el python.exe de python y el setup.py del pyasm en dos carpetas separadas en el mismo directorio, y para correr y modificar los .py utilizo WING IDE. Pues con estas herramientas no he sabido dónde colocar ni cómo usar los comandos de instalación de pyasm que indican en la página que citas.

Me da la impresión de que he hecho unas preguntas de master cuando estoy en primaria, así que voy a seguir profundizando en ASM y Python por separado y me voy a dejar de fantasías que no entiendo por el momento.

De todas formas me gusta mucho leer vuestros comentarios magistrales, tanto de este como de otros asuntos, aunque no me entere de la misa la media.

Saludos

MCKSys Argentina

@ViejoMajara: PyAsm está usando nasm para compilar el codigo asm. Necesitas el nasm.exe para que el pyasm pueda compilar el codigo.

Lo tienes al ejecutable?

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


ViejoMajara

¡Hola!

Sí que tengo el nasm.exe pero no sé cómo hacer para que todo se ligue.

Explico lo que he hecho:

He guardado el Example(Hello World) como pythonASM_1.py y lo he abierto en Wing IDE. Observo que aquí hay un fun() que debe ser prog compilado.

Como veo que importa cosas de pyasm, pues he abierto también el pyasm.py.

He tratado de correr el  pythonASM_1.py y me da una serie de errores.

Si ejecuto el nasm.exe, aparece fugazmente y desaparece.

Con esto que recomienda el autor de pyasm para instalarlo:
Citarcd pyasm; python setup.py install
easy_install pyasm
no sé ni dónde ni cómo ni qué hacer.

En resumidas cuentas, no tengo ni pajolera idea. >:D

Saludos.